虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析

在我们把模型拖入虚幻4的视口后

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第1张图片

场景编辑器会调用RendererScene的AddPrimitive函数

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第2张图片

然后在这个函数种会调用Scene->AddPrimitiveSceneInfo_RenderThread(RHICmdList, PrimitiveSceneInfo);

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第3张图片

然后会调用FPrimitiveSceneInfo的AddToScene

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第4张图片

然后会调用PrimitiveSceneInfo的AddStaticMeshes

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第5张图片

然后会调用FStaticMesh的AddToDrawLists

然后这里会根据情况把FStaticMesh加入到各个DrawingPolicyFactory里面

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第6张图片

各个Drawing PolicyFactory又会调用AddStaticMesh函数,这里以FDepthDrawingPolicyFactory的AddStaticMesh为例

这里就会完成把我们的模型数据加入到FScene的各种DrawList里面

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第7张图片

来看看FScene里面到底存了些啥

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第8张图片

一切就十分清晰了
最后在StaticMeshDrawList中完成添加和link

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第9张图片

然后我们的FScene就完成了绘制列表的构建。

然后事情还没有完,我们的模型是怎么被渲染出来的呢。

找到void FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate& RHICmdList)

函数,我以RenderPrePass为例

虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析_第10张图片

调用drawlist的draw方法,我们就会完成相应pass需要绘制的东西了。

Enjoy it !!

你可能感兴趣的:(游戏开发;,虚幻4Shader,游戏开发;,虚幻4)