Unity渲染顺序解析

Unity引擎中影响渲染顺序的因素有:

Camera Depth

多相机控制,相机组件上设置的相机深度,深度越大越靠后渲染。

透明、不透明物体分隔

RenderQueue 2500是透明与不透明的分水岭。

同一个相机下

Renderqueue小于2500的物体 始终在 Renderqueue大于2500之前绘制。

Sorting Layer

Tags & Layers设置中可见。如果Camera相同,那接下来就看Sorting Layers,越低越早绘制。
Sorting Layers是通过RenderersortingLayerName属性设置的。
全局Soring LayersEdit->ProjectSettings->Tags&Layers中设置
可以通过代码设置 render.sortingLayerName=”Effect” 运行时设置物体的sortinglayer,如果在粒子系统中看,可以看到Render项的Sorting Layers下拉表单中会列出所有的Sorting Layers的名字

Order In Layer

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

RenderQueue

Shader中对Tags设置的“Queue”。如果上述几项都相同,那就要看renderQueue了,renderQueureMaterial的一个属性,其实就是Shader中的renderQueue,这个也是一个int属性,数值越小,越靠前渲染。
Unity5以后,每个材质中都可以设置renderq参数。

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

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

深度补间

SortBias,当两个包围盒中心点深度值相同或者很近的物体在一起时,排序有可能出错(不一定哪个在前)所以对于z值/强制顺序(修改引擎代码)可以进行微调。

总结:

其他排序手段

Unity2018后:

可编程渲染管线——LWRP轻量级渲染管线。可以自定义管线控制排序。。。
材质排序
unity中可能没有,以前做自研引擎时会在上述顺序的基础上增加相同材质或shader的排序,降低切换drawcall引发的上下文切换。

三角形面的顺序
qq飞车在引擎中加入了基于三角形距离排序,动态控制IndexBuffer,可以控制同一个Drawcall中三角形的渲染顺序。UE4中也增加了类似的控制手段。

在这里插入图片描述
/

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值