ainatipen 发表于 2022-11-3 17:42

Unity中影响渲染顺序的因素总结

Unity中影响渲染顺序的因素有:应该全乎了吧。。。
一、Camera Depth

相机组件上设置的相机深度,深度越大越靠后渲染。
二、透明、不透明物体分隔

RenderQueue 2500是透明与不透明的分水岭。
同一个相机下
        Renderqueue小于2500的物体 始终在 Renderqueue大于2500之前绘制。
三、Sorting Layer

在Tags & Layers设置中可见
如果Camera相同,那接下来就看Sorting Layers,越低越早绘制。
Sorting Layers是通过Renderer的sortingLayerName属性设置的。
全局Soring Layers在Edit->ProjectSettings->Tags&Layers中设置



可以通过代码设置render.sortingLayerName=”Effect”运行时设置物体的sortinglayer,如果在粒子系统中看,可以看到Render项的Sorting Layers下拉表单中会列出所有的Sorting Layers的名字
        补个图TODO
四、Order In Layer

相对于Sorting Layer的子排序,用这个值做比较时只有都在同一层时才有效。
soringOrder也是Render的一个属性,这个order是设置一个数字,数字越大,越在上面显示。



五、RenderQueue

Shader中对Tags设置的“Queue”。
如果上述几项都相同,那就要看renderQueue了,renderQueure是Material的一个属性,其实就是Shader中的renderQueue,这个也是一个int属性,数值越小,越靠前渲染。


Unity5以后,每个材质中都可以设置renderq参数。



六、深度排序。按照包围盒的深度进行排序

不透明物体由近到远排序优先
透明物体由远到近排序优先
        按照包围盒的中心点的深度进行排序。


深度补间

        ZBias,当两个包围盒中心点深度值相同或者很近的物体在一起时,排序有可能出错(不一定哪个在前)所以对于这个点的z值可以进行微调。(修改物体的轮廓或移动位置。。。)

一图总结:



常规方案

明确分层:

例如UI上的半透明(特效、面片)始终在3D场景之上,则一般分多个相机来绘制。
大多适用于有明确分层的游戏。例如横版游戏,明确近景远景
大片填充率的物件,例如地形,天空等,一般为提高深度命中,都会选择在延后批次绘制。
Draw character before the terrain.
UGUI方案


[*]同一个canvas,使用Hierarchy的顺序
[*]不同的canvas之间使用sort order来排序

NGUI

        不同的pannel按照depth数值排序,同一个pannel中的结点按照深度排序。

其他排序手段

OIT
也没有太适合的移动解决方案。。。
Unity2018后:
    可编程渲染管线——LWRP轻量级渲染管线。可以自定义管线控制排序。。。
三角形排序:
    主流引擎都不支持,可使用的场景较少,限制较多。曾在Unity引擎中增加了三角形重心快速排序,效率也不高。。。
问题

那么问题来了,能控制渲染顺序的手段还真多,一般移动游戏比较正统的或者好用的控制渲染顺序的规范是什么样的?

闲鱼技术01 发表于 2022-11-3 17:42

点序也影响渲染顺序[捂脸]

RhinoFreak 发表于 2022-11-3 17:50

建模点序全靠美术,也只能保证一个方向。。。动画的网格使用实时三角形快排那效率低的。。。

c0d3n4m 发表于 2022-11-3 17:55

我个人觉得Unity的排序策略很不错,不清楚自己自定义排序还能玩出什么更好的效果吗?可以举例提示一下有哪些情况需要自定义排序?

JoshWindsor 发表于 2022-11-3 17:57

总结的很好, 图也画的到位, 赞!

stonstad 发表于 2022-11-3 18:02

给图点赞

xiangtingsl 发表于 2022-11-3 18:11

最后的远近是否有误,近的物体最后被渲染才对吧。

LiteralliJeff 发表于 2022-11-3 18:12

好像为了减少重绘,不透明是从近到远。要不然从天空盒一层层画,浪费带宽。

Doris232 发表于 2022-11-3 18:12

那overdraw得炸

mypro334 发表于 2022-11-3 18:19

图中透明物体”深度低(近)-》深度高(远)“,和深度排序里面”透明物体由远到近排序优先“,看着有冲突吧
页: [1] 2
查看完整版本: Unity中影响渲染顺序的因素总结