Unity 渲染顺序

1.影响渲染顺序的因素

  • Camera Depth: 相机组件上设置的相机深度,深度越大越靠后渲染。
  • Sorting Layer: 在Edit-Projectsettings-Tags & Layer 设置中可见
  • Order In Layer: 相对于Sorting Layer的子排序,用这个值做比较时只有都在同一层时才有效。
  • RenderQueue: Shader中对Tags设置的“Queue”。
  • Z轴: 物体距离相机的距离

2.RenderQueue 介绍

Unity提供给我们一些默认的渲染队列,每一个对应一个唯一的值,来指导Unity绘制对象到屏幕上。这些内置的渲染队列被称为Background, Geometry, AlphaTest, Transparent, Overlay。这些队列不是随便创建的,它们是为了让我们更容易地编写Shader并处理实时渲染的。
示例:

Tags{ "RenderType" = "Geometry" }

在这里插入图片描述

PropertiesValue渲染队列描述备注
Background1000This render queue is rendered before any others.这个队列通常被最先渲染(比如 天空盒)。
Geometry2000Opaque geometry uses this queue.这是默认的渲染队列。它被用于绝大多数对象。不透明几何体使用该队列。
AlphaTest2450Alpha tested geometry uses this queue.需要开启透明度测试的物体。Unity5以后从Geometry队列中拆出来,因为在所有不透明物体渲染完之后再渲染会比较高效。
GeometryLast2500Last render queue that is considered “opaque”所有Geometry和AlphaTest队列的物体渲染完后
Transparent3000This render queue is rendered after Geometry and AlphaTest, in back-to-front order.所有Geometry和AlphaTest队列的物体渲染完后,再按照从后往前的顺序进行渲染,任何使用了透明度混合的物体都应该使用该队列(例如玻璃和粒子效果)
Overlay4000This render queue is meant for overlay effects.该队列用于实现一些叠加效果,适合最后渲染的物体(如镜头光晕)。

注意:
2500是关键值,它是透明跟不透明的分界点。
RenderQueue > 2500的物体绝对会在RenderQueue <= 2500的物体前面,即渲染时RenderQueue大的会挡住RenderQueue小的,不论它的Sorting Layer和Order in Layer怎么设置都是不起作用的。
当两个的RenderQueue都在同一侧时,在Sorting Layer高的绝对会在Sorting Layer前面,无视RenderQueue跟Order in Layer,只有在Sorting Layer相同的前提下,Order in Layer高的会在Order in Layer低的前面,无视RenderQueue。当Sorting Layer跟Order in Layer相同时,才看RenderQueue的高低,高的在前面。

3.渲染顺序总结

  1. 物体的RenderQueue在2500的同一侧:

Camera Depth > Sorting Layer > Order In Layer > RenderQueue > 距离相机的距离

  1. 物体的RenderQueue在2500的不同侧

Camera Depth > RenderQueue > Sorting Layer > Order In Layer > 距离相机的距离

图片总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值