虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析
在我们把模型拖入虚幻4的视口后
场景编辑器会调用RendererScene的AddPrimitive函数
然后在这个函数种会调用Scene->AddPrimitiveSceneInfo_RenderThread(RHICmdList, PrimitiveSceneInfo);
然后会调用FPrimitiveSceneInfo的AddToScene
然后会调用PrimitiveSceneInfo的AddStaticMeshes
然后会调用FStaticMesh的AddToDrawLists
然后这里会根据情况把FStaticMesh加入到各个DrawingPolicyFactory里面
各个Drawing PolicyFactory又会调用AddStaticMesh函数,这里以FDepthDrawingPolicyFactory的AddStaticMesh为例
这里就会完成把我们的模型数据加入到FScene的各种DrawList里面
来看看FScene里面到底存了些啥
一切就十分清晰了
最后在StaticMeshDrawList中完成添加和link
然后我们的FScene就完成了绘制列表的构建。
然后事情还没有完,我们的模型是怎么被渲染出来的呢。
找到void FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate& RHICmdList)
函数,我以RenderPrePass为例
调用drawlist的draw方法,我们就会完成相应pass需要绘制的东西了。
Enjoy it !!