MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / Render

Method Render

Source/Engine/Renderer/Renderer.cpp:222–293  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

220}
221
222void Renderer::Render(SceneRenderTask* task)
223{
224 PROFILE_GPU_CPU_NAMED("Render Frame");
225
226 // Prepare GPU context
227 auto context = GPUDevice::Instance->GetMainContext();
228 context->ResetState();
229 context->FlushState();
230 const Viewport viewport = task->GetViewport();
231 context->SetViewportAndScissors(viewport);
232
233 // Prepare render context
234 RenderContext renderContext(task);
235 renderContext.List = RenderList::GetFromPool();
236 RenderContextBatch renderContextBatch(task);
237 renderContextBatch.Contexts.Add(renderContext);
238
239 // Pre-init render view cache early in case it's used in PreRender drawing
240 Float4 jitter = renderContext.View.TemporalAAJitter; // Preserve temporal jitter value (PrepareCache modifies it)
241 renderContext.View.PrepareCache(renderContext, viewport.Width, viewport.Height, Float2::Zero);
242 renderContext.View.TemporalAAJitter = jitter;
243
244#if USE_EDITOR
245 // Turn on low quality rendering during baking lightmaps (leave more GPU power for baking)
246 const auto flags = renderContext.View.Flags;
247 if (!renderContext.View.IsOfflinePass && IsBakingLightmaps)
248 {
249 renderContext.View.Flags &= ~(ViewFlags::AO
250 | ViewFlags::Shadows
251 | ViewFlags::AntiAliasing
252 | ViewFlags::CustomPostProcess
253 | ViewFlags::Bloom
254 | ViewFlags::ToneMapping
255 | ViewFlags::EyeAdaptation
256 | ViewFlags::CameraArtifacts
257 | ViewFlags::Reflections
258 | ViewFlags::SSR
259 | ViewFlags::LensFlares
260 | ViewFlags::MotionBlur
261 | ViewFlags::Fog
262 | ViewFlags::PhysicsDebug
263 | ViewFlags::Decals
264 | ViewFlags::GI
265 | ViewFlags::DebugDraw
266 | ViewFlags::ContactShadows
267 | ViewFlags::DepthOfField);
268 }
269
270 // Force Debug Draw usage in some specific views that depend on it
271 if (renderContext.View.Mode == ViewMode::PhysicsColliders)
272 {
273 renderContext.View.Flags |= ViewFlags::DebugDraw;
274 }
275#endif
276
277 // Perform the actual rendering
278 task->OnPreRender(context, renderContext);
279 RenderInner(task, renderContext, renderContextBatch);

Callers 12

RunPostFxPassMethod · 0.45
RunCustomPostFxPassMethod · 0.45
RenderLightsMethod · 0.45
RenderAntiAliasingPassFunction · 0.45
RenderLightBufferFunction · 0.45
RenderInnerFunction · 0.45
DrawSkyMethod · 0.45
RenderShadowMaskMethod · 0.45
onJobRenderMethod · 0.45
RenderFunction · 0.45
Model.hFile · 0.45
RenderFunction · 0.45

Calls 9

RenderInnerFunction · 0.85
PrepareCacheMethod · 0.80
OnPreRenderMethod · 0.80
GetMainContextMethod · 0.45
ResetStateMethod · 0.45
FlushStateMethod · 0.45
GetViewportMethod · 0.45
AddMethod · 0.45
OnPostRenderMethod · 0.45

Tested by

no test coverage detected