I put a breakpoint at the beginning of the function
void FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate& RHICmdList)
and went through it step by step. I’m starting to feel a bit more comfortable than before with unreal deferred rendering.
If I want to create my custom renderer, do I create my own FSceneRenderer ?
The renderer is created in SceneRendering.cpp line 1660
FSceneRenderer* SceneRenderer = FSceneRenderer::CreateSceneRenderer(ViewFamily, Canvas->GetHitProxyConsumer());
Then I guess I would have to modify this function so that it creates and returns my custom renderer. (SceneRendering.cpp line 1383 to 1394)
FSceneRenderer* FSceneRenderer::CreateSceneRenderer(const FSceneViewFamily* InViewFamily, FHitProxyConsumer* HitProxyConsumer)
{
bool bUseDeferred = InViewFamily->Scene->ShouldUseDeferredRenderer();
if (bUseDeferred)
{
return new FDeferredShadingSceneRenderer(InViewFamily, HitProxyConsumer);
}
else
{
return new FForwardShadingSceneRenderer(InViewFamily, HitProxyConsumer);
}
}
I’m wondering if that is the way to modify the renderer or if there is a cleaner way of doing it?