我是靠谱客的博主 仁爱招牌,最近开发中收集的这篇文章主要介绍Unity笔记--渲染顺序1. 相机(depth)2. RendererQueue 0~2500(不关深度写入就是按z值显示)3. SortLayer4. SortOrder(z轴?)5. RendererQueue 2501~50006. Hierarchy顺序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 相机(depth)

  相机的排序一定是最高级,按照相机depth升序渲染,depth 越小越先渲染,即depth 越大的相机渲染的画面越在前;

2. RendererQueue 0~2500(不关深度写入就是按z值显示)

shader往往开启深度写入,所以sortlayer、sort order及render queue造成的渲染顺序改变对于显示顺序并无影响;

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

  在同一个相机之下,优先渲染不透明物体,并按照RendererQueue升序排序,RendererQueue越小越先渲染,越大越在前。(需在SubShader中显示声明ZWrite Off,通知Unity我们会重写物体的渲染深度排序。)

  注意: 因为有深度缓冲(ZBuffer)和深度写入/深度检测存在,所以即便是后渲染的物体,如果Z值在先渲染的物体之后,图元依然会被舍弃。因此不透明物体的渲染顺序并不影响其显示顺序, Unity会自行调整其调用DrawCall的顺序。

3. SortLayer

  在同一个相机之下,当渲染透明物体时,优先按照SortLayer进行排序,SortLayer靠前的会被优先渲染。

4. SortOrder(z轴?)

  当相机、SortLayer都相同时,按照SortOrder进行排序,SortOrder低的优先被渲染。

5. RendererQueue 2501~5000

  当相机、SortLayer、SortOrder都相同时, 按照RendererQueue进行排序, RendererQueue较低的优先渲染。

  注意: 由于透明物体往往关闭了深度写入, 因此此时渲染顺序将严格按照RendererQueue进行排序。Unity在渲染透明物体时,如果RendererQueue相同,则会严格按照由远及近的顺序调用DrawCall。

6. Hierarchy顺序

  在UI中,以上条件皆相同的情况下,会按照UI在Hierarchy面板中的顺序进行排序。

  SortLayer、SortOrder这些属性都是canvas的,那么同一canvas下的控件如何不通过Hierarchy面板中的顺序进行渲染呢:

  改变控件之间的层级关系

原文链接:https://blog.csdn.net/kingsea168/article/details/50252733

同一canvas下:
  改变控件transform的SiblingIndex,
  transform.GetSiblingIndex();
  transform.SetSiblingIndex(int index); //index值越大,越后渲染,层级越大,越显示在前面

最后

以上就是仁爱招牌为你收集整理的Unity笔记--渲染顺序1. 相机(depth)2. RendererQueue 0~2500(不关深度写入就是按z值显示)3. SortLayer4. SortOrder(z轴?)5. RendererQueue 2501~50006. Hierarchy顺序的全部内容,希望文章能够帮你解决Unity笔记--渲染顺序1. 相机(depth)2. RendererQueue 0~2500(不关深度写入就是按z值显示)3. SortLayer4. SortOrder(z轴?)5. RendererQueue 2501~50006. Hierarchy顺序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部