当前位置: 首页 > news >正文

Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)

目录

相机深度(Camera Depth)

Clear Flags

多相机渲染不同部分

SortingLayer

先后顺序

Render Queue

Render Queue的作用

Render Queue的分类

GeometryLast(值为2500)

渲染顺序总结


相机深度(Camera Depth)

  • 作用:相机的深度值用来确定多个相机之间的渲染顺序。深度值较低的相机先渲染,深度值较高的相机后渲染。
  • 应用场景:在使用多个相机的场景中,比如一个相机渲染3D场景,另一个相机专门渲染UI层。

在讲解这个上面应用之前需要先了解Clear Flag:

Clear Flags

"Clear Flags"是相机组件的一个设置,它决定了每次渲染之前相机如何清除其视口。这个设置主要用于确定在开始渲染当前相机的视图之前,应如何处理之前渲染的内容。这对于渲染的正确性和视觉效果都非常重要。

Unity提供了几种不同的Clear Flags选项,每种都有不同的用途:

  1. Skybox

    • 使用这个选项时,相机会在每一帧渲染之前使用当前的Skybox来清除视图。如果场景中没有Skybox,将使用默认的背景颜色。
    • 这是3D游戏中最常用的选项,特别是当场景有天空盒时。
  2. Solid Color

    • 这个选项会让相机用指定的单一颜色来清除其整个视图。
    • 它常用于需要单色背景的场景,或者在不使用天空盒的情况下。
  3. Depth only

    • 当选择这个选项时,相机只会清除深度缓冲区(Z-buffer),而不会清除颜色缓冲区。这意味着先前渲染的图像将保留在屏幕上,而新的渲染将在其上进行。
    • 这个选项通常用于多相机设置中,例如,一个相机渲染3D场景,另一个相机渲染UI层。
  4. Don't Clear

    • 选择这个选项时,相机不会清除颜色或深度缓冲区。这就意味着新的渲染将直接覆盖在先前渲染的内容之上。
    • 这个选项在特殊情况下使用,例如需要在多次渲染之间保留图像的后处理效果。

多相机渲染不同部分

在UI复杂的应用中,可能需要一个相机来渲染3D世界,另一个相机来渲染UI。通过设置不同的深度值,可以确保UI始终渲染在3D世界之上。

1. 创建并设置3D世界相机

首先,你需要一个相机来渲染3D世界:

  1. 在场景中创建一个新的相机(如果已经有一个默认相机,可以使用它)。
  2. 将这个相机的Clear Flags设置为Skybox(如果有天空盒)或Solid Color(如果没有天空盒)。
  3. 设置相机的Depth值为较低的值,例如0。这将是用来渲染3D场景的主相机。

2. 创建并设置UI相机

接下来,创建一个专门用于渲染UI的相机:

  1. 在场景中再创建一个新的相机。
  2. 将这个相机的Clear Flags设置为Depth only。这样,它就不会清除主相机的渲染结果,而只负责渲染UI元素。
  3. 设置UI相机的Depth值为比3D世界相机更高的值,例如1。这确保UI相机在3D世界相机之后渲染,从而UI元素会显示在3D场景之上。
  4. 设置UI相机的Culling Mask以仅渲染UI层(或者你放置UI元素的特定层)。这样,UI相机不会渲染3D世界中的对象。

3. 配置UI元素

确保你的UI元素(如Canvas)配置为使用UI相机:

  1. 选择或创建一个Canvas对象。
  2. 在Canvas的Render Mode属性中选择Screen Space - Camera
  3. 将UI相机分配给Canvas的Camera属性。

SortingLayer

它允许开发者控制2D对象(如Sprite和UI元素)的渲染顺序。Sorting Layer主要用于确定哪些对象应该先绘制,哪些对象后绘制,从而实现不同2D元素之间的正确层叠和遮挡关系。

(SortingLayer只针对于2D的物体)

同一SortingLayer下的还可以通过order In Layer来设置先后的顺序。

先后顺序

在不同Sorting Layer之间,渲染顺序是根据Sorting Layer在项目设置中的排列顺序决定的,列表中越上面的Sorting Layer越先渲染。

Order in Layer值较小的对象会先于值较大的对象渲染,从而在视觉上出现在后者的后面。

如果Sorting LayerOrder in Layer相同,在Hierarchy窗口中更靠下的对象会被渲染在更靠前的对象之上。

Render Queue

在Unity中,Render Queue(渲染队列)是一个用于决定材质和着色器在渲染过程中的顺序的属性。每个材质都有一个与之关联的Render Queue值,这个值决定了材质在渲染管线中的位置,从而影响渲染的顺序。

Render Queue的作用

  1. 决定渲染顺序

    • Render Queue值用于决定一个对象(及其材质)相对于其他对象被渲染的先后顺序。这对于透明度、遮挡和深度测试等渲染效果至关重要。
  2. 处理透明度

    • 对于透明物体,正确的渲染顺序尤其重要。透明物体需要在不透明物体之后渲染,以确保透明度和混合效果正确实现。

Render Queue的分类

Unity中的Render Queue被分为几个预设范围:

  • Background:这个范围用于背景元素,如天空盒。Render Queue值通常在1000以下。
  • Geometry:这是大多数不透明物体的默认队列。Render Queue值在2000左右。
  • AlphaTest:用于需要alpha测试的透明物体。Render Queue值在2450左右。
  • Transparent:透明物体的队列。这些对象需要在不透明对象之后渲染。Render Queue值通常在3000以上。
  • Overlay:用于在所有其他内容之上渲染的元素,如UI元素。Render Queue值在4000以上。

GeometryLast(值为2500)

  • 含义

    • “GeometryLast”是指Render Queue值为2500的分类,它标志着被视为“不透明”(opaque)的渲染队列的末尾。

透明物体的渲染

  • 当所有Render Queue值为2500或以下的物体渲染完成后,随后才开始渲染Render Queue值大于2500的透明物体。透明物体通常需要在不透明物体渲染完成后渲染,以确保正确的混合和遮挡效果。

渲染顺序总结

1.Camera Depth: 越小越优先
2.RenderQueue 2500以下
1. Sorting Layer/Order in Layer
1. 按照Sorting Layer/Order in Layer 设置的值,越小越优先
2. 无此属性,等同于 Sorting Layer=default ,Order in Layer=0 参与排序
2.RenderQueue 越小越优先
3.RenderQueue 相等,由近到远排序优先
3.RenderQueue 2500以上

相关文章:

Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)

目录 相机深度(Camera Depth) Clear Flags 多相机渲染不同部分 SortingLayer 先后顺序 Render Queue Render Queue的作用 Render Queue的分类 GeometryLast(值为2500) 渲染顺序总结 相机深度(Camera Depth&am…...

【论文笔记】Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

论文地址:Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Networks 代码地址:https://github.com/jierunchen/fasternet 该论文主要提出了PConv,通过优化FLOPS提出了快速推理模型FasterNet。 在设计神经网络结构的时候&#xff…...

python常用函数汇总

python常用函数汇总 对准蓝字按下左键可以跳转哦 类型函数数值相关函数abs() divmod() max() min() pow() round() sum()类型转换函数ascii() bin() hex() oct() bool() bytearray() bytes() chr() complex() float() int() 迭代和循环函数iter() next() e…...

阶段十-物业项目

可能遇到的错误&#xff1a; 解决jdk17javax.xml.bind.DatatypeConverter错误 <!--解决jdk17javax.xml.bind.DatatypeConverter错误--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>…...

使用 Jekyll 构建你的网站 - 初入门

文章目录 一、Jekyll介绍二、Jekyll安装和启动2.1 配置Ruby环境1&#xff09;Windows2&#xff09;macOS 2.2 安装 Jekyll2.3 构建Jekyll项目2.4 启动 Jekyll 服务 三、Jekyll常用命令四、目录结构4.1 主要目录4.2 其他的约定目录 五、使用GitLink构建Jekyll博客5.1 生成Jekyll…...

【数据库】postgressql设置数据库执行超时时间

在这篇文章中&#xff0c;我们将深入探讨PostgreSQL数据库中的一个关键设置&#xff1a;SET statement_timeout。这个设置对于管理数据库性能和优化查询执行时间非常重要。让我们一起来了解它的工作原理以及如何有效地使用它。 什么是statement_timeout&#xff1f; statemen…...

SQL语言之DDL

目录结构 SQL语言之DDLDDL操作数据库查询数据库创建数据库删除数据库使用某个数据库案例 DDL操作表创建表查看表结构查询表修改表添加字段删除字段修改字段的类型修改字段名和字段类型 修改表名删除表案例 SQL语言之DDL ​ DDL&#xff1a;数据定义语言&#xff0c;用来定义数…...

hive高级查询(2)

-- 分组查询 SELECT sex,SUM(mark) sum_mark FROM score GROUP BY sex HAVING sum_mark > 555; SELECT sex,sum_mark FROM( SELECT sex,SUM(mark) sum_mark FROM score GROUP BY sex ) t WHERE sum_mark > 555; SELECT AVG(gid),SUM(gid)/COUNT(gid) FROM …...

golang的jwt学习笔记

文章目录 初始化项目加密一步一步编写程序另一个参数--加密方式关于StandardClaims 解密解析出来的怎么用关于`MapClaims`上面使用结构体的全代码实战项目关于验证这个项目的前端初始化项目 自然第一步是暗转jwt-go的依赖啦 #go get github.com/golang-jwt/jwt/v5 go get githu…...

第十五节TypeScript 接口

1、简介 接口是一系列抽象方法的声明&#xff0c;是一些方法特征的集合&#xff0c;这些方法都应该是抽象的&#xff0c;需要有由具体的类去实现&#xff0c;然后第三方就可以通过这组抽象方法调用&#xff0c;让具体的类执行具体的方法。 2、接口的定义 interface interface_…...

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口&#xff1f;&#xff01;&#x1f60e; 前言&#x1f64c;【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口&#xff1f;&#xff01;查看自己的配置文件&#xff1a;最终成功访问如图所示&#xff1a; 总结撒花…...

14.bash shell中的for/while/until循环

文章目录 shell循环语句for命令**读取列表中的值****读取列表中的复杂值****从变量读取列表**迭代数组**从命令读取值****用通配符读取目录**C语言风格的shell for循环 shell循环while命令shell 循环的until命令shell循环跳出的break/continue命令break命令continue命令trick 欢…...

RPC(6):RMI实现RPC

1RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能&#xff0c;它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用&#xff08;JVM&#xff09;中的内容。 RMI 是Java语言的远程调用&#xff0c;无法实现跨语言。…...

strlen和sizeof的初步理解

大家好我是Beilef&#xff0c;一个美好的下我接触到编程并且逐渐喜欢。我虽然不是科班出身但是我会更加努力地去学&#xff0c;有啥不对的地方请斧正 文章目录 目录 文章目录 前言 想必大家对sizeof肯定很了解&#xff0c;那对strlen又了解多少。其实这个问题应该让不少人困扰。…...

纯CSS的华为充电动画,它来了

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; Krpano专栏&#xff1a;想学Krpano的&#xff0c;冲 &#x1f514…...

在架构设计中,前后端分离有什么好处?

前后端分离是一种架构设计模式&#xff0c;将前端和后端的开发分别独立进行&#xff0c;它带来了多方面的好处&#xff1a; 1、独立开发和维护&#xff1a; 前后端分离允许前端和后端开发团队独立进行工作。这意味着两个团队可以并行开发&#xff0c;提高了整体的开发效率。前…...

C语言中的结构体和联合体:异同及应用

文章目录 C语言中的结构体和联合体&#xff1a;异同及应用1. 结构体&#xff08;Struct&#xff09;的概述代码示例&#xff1a; 2. 联合体&#xff08;Union&#xff09;的概述代码示例&#xff1a; 3. 结构体与联合体的异同点相同点&#xff1a;不同点&#xff1a;代码说明 结…...

文件夹共享(普通共享和高级共享的区别)防火墙设置(包括了jdk安装和Tomcat)

文章目录 一、共享文件1.1为什么需要配置文件夹共享功能&#xff1f;1.2配置文件共享功能1.3高级共享和普通共享的区别&#xff1a; 二、防火墙设置2.1先要在虚拟机上安装JDK和Tomcat供外部访问。2.2设置防火墙&#xff1a; 一、共享文件 1.1为什么需要配置文件夹共享功能&…...

❀My排序算法学习之冒泡排序❀

目录 冒泡排序(Bubble Sort):) 一、定义 二、算法原理 三、算法分析 时间复杂度 算法稳定性 算法描述 C语言 C++ 算法比较 插入排序 选择排序 快速排序 归并排序 冒泡排序(Bubble Sort):) 一、定义 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单…...

服务器数据恢复-raid6离线磁盘强制上线后分区打不开的数据恢复案例

服务器数据恢复环境&#xff1a; 服务器上有一组由12块硬盘组建的raid6磁盘阵列&#xff0c;raid6阵列上层有一个lun&#xff0c;映射到WINDOWS系统上使用&#xff0c;WINDOWS系统划分了一个GPT分区。 服务器故障&分析&#xff1a; 服务器在运行过程中突然无法访问。对服务…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...