找回密码
 立即注册
查看: 481|回复: 0

Unity 中的渲染顺序

[复制链接]
发表于 2022-1-11 10:43 | 显示全部楼层 |阅读模式

王冰冰

本文总结 Unity 中物体的渲染顺序逻辑。
1. 以摄像机为第一维度


Unity 中的渲染顺序,第一维度是由摄像机确定的,换句话说 Unity 是以摄像机为单元进行渲染,最后再根据设置的规则将多个摄像机渲染的画面合起来。
2. 划分渲染队列


在同一个摄像机下,Unity 以物体材质上的 RenderQueue 数值进行了划分,将所有物体分为两个队列
    RenderQueue < 2500,Opaque 队列,通常是不透明物体
  • RenderQueue > 2500,Transparent 队列,通常是透明物体
    同一个摄像机下,Unity 会先渲染 Opaque 队列中的不透明物体,然后渲染 Transparent 队列中的透明物体。
3. 不透明物体的渲染


在 Opaque 队列中的物体,根据包围盒中心距离摄像机的距离,由近到远排序,进行渲染,Opaque 队列中物体都是不透明物体,通常开启了 ZWrite,由近到远渲染可以做遮挡剔除,减少 OverDraw,Opaque 队列中的物体,可以设置 SortingLayer, SortingOrder, Shader 的 RenderQueue 等值,但不会起作用
4. 透明物体的渲染


透明物体的 Shader 通常关闭了 ZWrite,SortingLayer, SortingOrder, RenderQueue 这些值的设置会影响显示的顺序,所以透明物体的渲染顺序遵循的规则是
    根据 SortingLayer 层的顺序进行渲染
SortingLayer 可以在 Edit->ProjectSettings->Tags&Layer 中进行设置,在代码中可以通过 render.sortingLayer = "Effect"; 这样的代码进行设置
    SortingLayer 相同的情况下根据 SortingOrder 的顺序进行渲染SortingLayerSortingOrder 都相同的情况下,根据 RenderQueue 的顺序进行渲染都相同的情况下,根据包围盒中心距离摄像机的距离,由远到近进行渲染
5. UGUI 元素的渲染


UGUI 元素使用的 UI Default 材质通常 RenderQueue 为 3000,走的是透明物体的渲染,所以根据 SortingLayer -> SortingOrder -> RenderQueue 的顺序进行排序,当以上值都相同时,根据元素在 Hierarchy 视图中的顺序进行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 13:22 , Processed in 0.091621 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表