当前位置: 首页 > 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; 服务器在运行过程中突然无法访问。对服务…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...