当前位置: 首页 > 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 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...