美文网首页
一、Unity中的物体渲染顺序

一、Unity中的物体渲染顺序

作者: GameObjectLgy | 来源:发表于2023-08-08 10:28 被阅读0次
一、渲染顺序决定因素
  • 1、摄像机渲染
    Unity中的渲染顺序首先是由摄像机(Camera)确定的,以摄像机为单元进行渲染,最后在根据设置将多个摄像机渲染的画面结合起来。不同物体首先按照摄像机深度进行渲染,深度高将会覆盖深度低的相机画面。
  • 2、渲染队列
    在同一个摄像机下,Unity以物体材质上的渲染队列(RenderQueue)数值进行了划分。
    • RenderQueue<2500,Opaque队列,通常是不透明物体
    • RenderQueue>2500,Transparent队列,通常是透明物体
      同一个摄像机下,Unity会先渲染Opaque队列中的不透明物体,然后渲染Transparent队列中的透明物体。其中的原理(https://zhuanlan.zhihu.com/p/416887453)如下:
      image.png
情况一:先渲染B再渲染A
1、渲染B时
2、深度测试和写入都开启 ,所以B的数据会写入颜色缓冲区和深度缓冲区
3、渲染A时
4、关闭深度写入,进行深度测试
深度测试的结果是A离相机的具体比B更近,所以我们会将A的透明度和颜色缓冲区中B的颜色值进行混合
得到的结果正确
情况二:先渲染A再渲染B
渲染A时
因为深度写入关闭,此时只将A写入了颜色缓冲区
渲染B时
因为深度缓冲区并没有数据,所以B就会直接覆盖颜色缓冲区中的A的颜色
很显然这个结果是错误的(结果的视觉上,B在A前边)

前提:通常情况,透明shader都是会关闭深度写入的。
结论:应该先渲染不透明物体再渲染半透明物体

  • 3、不透明物体的渲染
    Opaque队列中物体都是不透明物体,通常是开启了ZWrite的。
    由近到远渲染可以做遮挡剔除,减少了OverDraw,Opaque队列中的物体.只会由距离摄像机的深度决定,距离摄像机近的先进行渲染,开启深度写入后,相同位置深度靠后会被裁剪掉。
  • 4、透明物体的渲染
    透明物体的Shader通常关闭了ZWrite.
    • 1)SortingLayer的顺序
    • 2)SortingOrder的顺序
    • 3)RenderQueue的顺序
    • 4)都相同的情况下,根据包围盒中心距离摄像机的距离,由远到近进行渲染
  • 5、UGUI元素的渲染
    UGUI元素使用的UIDefault材质通常是RenderQueue为3000,走的是透明物体的渲染。
    • 1)SortingLayer的顺序
    • 2)SortingOrder的顺序
    • 3)RenderQueue的顺序
    • 4)都相同的情况下,根据元素在 Hierarchy 视图中的顺序

相关文章

  • Unity渲染顺序总结

    Unity渲染顺序一句话总结Unity物体渲染先后顺序【ShaderLab学习】RenderQueue理解论Ren...

  • Unity 中的渲染顺序

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

  • Single Depth peeling 顺序无关渲染(OIT)

    什么是顺序无关渲染 在3D渲染中,物体的渲染是按一定的顺序渲染的,这也就可能导致半透明的物体先于不透明的物体渲染,...

  • 论RenderQueue、SortingLayer、Sortin

    Unity自带了一套物体间的决定渲染顺序的参数,其中最重要的三个为:SortingOrder、SortingOrd...

  • Unity的Mesh合并(0)

    前言 unity引擎中渲染代价的指标是场景中网格(Mesh)的数量,对显卡来说渲染一个100面的物体和渲染一个15...

  • Unity渲染顺序

    Unity中的渲染顺序有三层: 第一层:Camera的depth,值越大渲染越在前面 第二层:Sorting La...

  • 为什么应该尽量减少draw call?

    游戏引擎遍历游戏场景中的所有的物体,然后得到一个物体的渲染顺序,然后按照顺序提交给GPU来绘制游戏画面出来。每次渲...

  • Three.js 透明物体不能正常显示/渲染顺序的控制问题

    本篇文章主要讨论Three.js中的渲染机制,以及在部分场景中透明的物体渲染不正确,渲染顺序错误等问题。国内好像很...

  • unity 脚本的执行顺序

    在unity中不管是单个物体上的多个脚本文件 还是多个物体上的同一个脚本文件都是根据你挂在物体上的顺序决定的 呈倒...

  • 关于unity ZWrite ZTest -透明(2)

    上一篇关于不透明物体,这一篇我们来探究半透明物体。 如果要想得到一个正常的渲染效果:先渲染不透明物体,顺序(相对于...

网友评论

      本文标题:一、Unity中的物体渲染顺序

      本文链接:https://www.haomeiwen.com/subject/ajynpdtx.html