本文主要是介绍UE4 mesh DrawCall计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DrawCall计算:
PrePass阶段(深度缓冲区计算阶段):
移动性为Static的 静态网格体 | 整个mesh执行一次drawcall,并尽可能将所有相同mesh整合在一个drawcall内(instance) |
移动性为stationary或 可移动的 静态网格体 | 每个非透明的材质插槽一次drawcall, 并尽可能将所有相同mesh整合在一个drawcall内(instance) |
skeletalmesh | 每个非透明材质插槽执行一次drawcall,且不会合并相同网格体的drawcall |
ShadowDepths阶段(产生阴影): 每个光源对影响的mesh
静态光源:
无drawcall。
固定光源:
移动性为Static的 静态网格体 | 无drawcall。如果是使用级联阴影,则整个mesh执行一次drawcall,并尽可能将所有相同mesh整合在一个drawcall内(instance) |
移动性为stationary或 可移动的静态网格体 | 整个mesh执行一次drawcall,且不会合并相同网格体的drawcall |
skeletalmesh | 每个非透明材质插槽执行一次drawcall,且不会合并相同网格体的drawcall |
移动光源:
静态网格体 | 整个mesh执行一次drawcall,并尽可能将所有相同mesh整合在一个drawcall内(instance) |
skeletalmesh | 每个非透明材质插槽执行一次drawcall,且不会合并相同网格体的drawcall |
BasePass阶段 (材质生成基础颜色阶段):
静态网格体 | 整个非透明材质插槽执行一次drawcall,并尽可能将所有相同mesh整合在一个drawcall内(instance) |
skeletalmesh | 每个非透明材质插槽执行一次drawcall,且不会合并相同网格体的drawcall |
RenderVelocities阶段
静态网格体 | 无drawcall |
skeletalmesh | 每个非透明材质插槽执行一次drawcall,且不会合并相同网格体的drawcall |
渲染透明阶段:
静态网格体 | 整个透明材质插槽执行一次drawcall,并尽可能将所有相同mesh整合在一个drawcall内(instance) |
skeletalmesh | 每个透明材质插槽执行一次drawcall,且不会合并相同网格体的drawcall |
静态网格体最少的Drawcall:
PrePass(有非透明材质 插槽 ?1:0)+ ShadowDepths阶段(0)+ BasePass阶段(非透明材质插槽数量)+ 渲染透明阶段( 透明材质插槽数量 )+ RenderVelocities阶段(0) = 材质插槽数量+ ( 有非透明材质 插槽 ?1:0)
骨架网格体的drawcall:
PrePass(非透明材质 插槽 数量)+ ShadowDepths阶段(非透明材质 插槽 数量*受影响阴影光源数量)+ BasePass阶段(非透明材质插槽数量)+ 渲染透明阶段( 透明材质插槽数量 )+ RenderVelocities阶段( 非透明材质插槽数量 )
= 非透明材质插槽数量*( 受影响阴影光源数量 + 3 )+ 透明材质插槽数量
这篇关于UE4 mesh DrawCall计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!