在Unity中,当我们编写一个包含多个传递的自定义着色器时,它们是否已执行:
For each triangle do:
For each pass do:
Draw the pass
或者:
For each Pass do:
For each triangle do:
Draw the pass
如果我在网格中有多个材质,那么面部是按材质分组的吗?
答案 0 :(得分:0)
第二种变体: 在Unity中,当我们编写具有多个传递的自定义着色器时,它们是否已执行:
For each Pass do:
For each triangle do:
Draw the pass
如果我在网格中有多个材质,那么面部是按材质分组的吗?
是
基本上,所有渲染(在OpenGL和Direct3D中)都是按照以下方式完成的:
以下启发式规则适用:在场景中调用的绘制调用越少(性能)。因此,为了满足此规则(不减少您绘制的图元数量),您希望每个图形中具有较大数量的图元的绘图调用数较少。这反过来说明Unity为什么选择第一个问题的第二个变体。并且还解释了为什么Unity组面对材料(因为它最小化了绘制调用次数)。