URP 渲染顺序设置 RenderObjects
如下图,URP默认Shader的设置中,已经没有了以往的Render Queue的设置。
那么我们要如何来控制渲染顺序呢?
我们先简单的搭建一个测试场景,在场景中创建两个Cube,使其位置重叠,将其中一个命名为RedCube。然后新建一个默认的Material(即shader为URP/Lit),设置Base Map的颜色为红色,将该material挂到RedCube上即可。
如上图,按照默认的渲染顺序我们只能看见灰色的方块。
Priority属性
在Material中有一个名为Priority属性,修改其值可以来改变material的渲染顺序,值越小,渲染的越晚。
我们将RedCube的Priority值设置为-1,可以发现我们可以看见红色小块了,因为其渲染在灰色小块的后面。
这么简单?No!
当我们把红色小块往后移一点,发现摄像头变得依旧只能看见灰色小块了。因此Priority属性似乎只有在深度测试(Z Test)相同的情况下才能起到效果。
Render Objects
使用URP后,会在Project Settings的Graphics关联一个URP的asset文件,在其Renderer List中,会默认关联一个Forward Render的asset文件,其内容如下。
在Renderer Features中点击小加号,添加一个Render Objects,在这里我们就可以进行一些渲染上的处理了。
Event | 可以设置在Render的哪个阶段触发效果 |
Queue | 设置影响的是不透明物体还是透明物体 |
Layer Mask | 设置影响的Layer层 |
Depth | 开启后可以设置深度写入和深度测试 |
Camera | 重新设置camera效果 |
此时我们Layer Mask选择Default,勾选Depth,Depth Test选Disabled(关闭深度测试),如下左图
此时的效果图如上右图,摄像机可以看见红色方块,但是有莫名其妙的黑影,这其实是灰色小方块的阴影。将小方块的Case Shadows选为Off,此时显示就正常了,红色方块显示在了前面(注意红色方块的Priority依旧要低于灰色的)
拓展
我们此时再新建一个material,取名GreenAlphaPanel,将其Surface Type选为Transparent,Blending Mode为Alpha这样就可以通过调整Base Map颜色的透明度影响物体的透明度。然后我们在红色方块下面添加一个Panel,设置合适的大小,并使用我们前面的GreenAlphaPanel。同时适当的放大灰色小块,方便测试。由于我们期望的效果是红色方块现在在最前面,然后是绿色的面片,最后是灰色大块,因此它们三个的Priority值应该是红色<绿色<灰色。效果图如下
可以发现我们的绿色面片并没有和红色小块一样显示在前面,这是因为我们之前的设置只影响不透明物体,因此我们需要再新建一个RenderObjects来影响透明物体,效果如下
可以发现虽然绿色的透明面片显示出来了,但是却覆盖了红色方块,因此我们还需要调整一下设置。由于现在三个物体的Layer都一样,防止相互影响,我们新建一个Layer层名为Building,将红色方块和绿色面片设置为该Layer。由于默认情况下,透明物体会在不透明物体后面渲染,因此我们要让不透明的红色方块渲染在透明的绿色面片之后的话,需要修改其Event,使其在透明的设置之后,例如选择After Rendering Transparents。最终效果如下:
更多知识点还需后续研究补充。
URP 渲染顺序设置 RenderObjects相关推荐
- Unity半透明特效原理讲解(为什么半透明设置渲染顺序和深度写入这么重要)
Unity半透明特效原理讲解(为什么半透明设置渲染顺序和深度写入这么重要 写在前面 实验场景 实验1:红(不透明)+蓝(不透明)+默认渲染顺序(先渲染蓝Cube) 实验2:红(不透明+优先渲染)+蓝( ...
- U3D中物体的渲染顺序
U3D中物体的渲染顺序 1,由SHADER中渲染队列及队列中的值决定 2,在同一队列中,若材质相同 2.1 对于UI,按其在场景层级中的先后顺序绘制 2.2 对于3D不透明物体,按其离相机的距离,由近 ...
- Unity 中渲染顺序的理解以及一些坑点 以及2.5D游戏中的渲染排序解决方案
1.ZTest & ZWrite ZTest:深度测试,开启后测试结果决定片元是否被舍弃,可配置 ZWrite:深度写入,开启后决定片元的深度值是否写入深度缓冲,可配置 ZTest可设置的测 ...
- UnityShader RenderTypeQueue 渲染顺序
整理自这两篇博文 https://blog.csdn.net/u013477973/article/details/80607989?depth_1-utm_source=distribute.pc_ ...
- Unity中的物体渲染顺序
big seven 文章目录 前言 一.摄像机渲染 二.划分渲染队列 三.不透明物体的渲染 四.透明物体的渲染 五.UGUI元素的渲染 总结 前言 Unity中物体的渲染顺序 提示:以下是本篇文章正文 ...
- Unity 渲染顺序
Unity中的渲染顺序自上而下大致分为三层 渲染优先级 Camera depth > Sorting Layer > Order in Layer > RenderQueue Cam ...
- Unity UGUI NGUI 模型 粒子特效 三者之间 渲染层级设置
目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效 ...
- Three.js 透明物体不能正常显示(闪烁)/渲染顺序的控制问题
Three.js的渲染机制 three的渲染器是基于webGL的.它的渲染机制是根据物体离照相机的距离来控制和进行渲染的.对于透明的物体,则是按照从最远到最近的顺序进行渲染.也就是说,它根据物体的空间 ...
- Unity渲染顺序(1)
添加排序层级 在Unity编辑器的右上角选择Layers 按钮,在下拉菜单中点击Edit Layers-选项,将显示当前Unity的Tags, Sorting Layers,和Layers 编辑选项. ...
最新文章
- 定位插件_微创新 | 开发PL/SQL插件,快速定位所需字段
- linux中的shell脚本case,【shell】Linux shell 之 case 详解
- jQuery 常用的方法
- HRBP执行工具——PDCA
- 调用vba_VBA代码解决方案的第86讲内容:VBA代码的优化篇
- mac系统linux不能ping外网,Mac上配置Linux网络适配器(NAT模式),无法ping通
- Flash Cs4 安装之后打不开
- 微型计算机控制技术设计题库,微型计算机控制技术复习题答案
- 计算机技术专业求职简历,计算机技术专业求职简历模板
- 数值作业:改进欧拉法求常微分方程C语言代码
- Windows10系统如何开启和关闭隐藏的卓越性能模式
- html网页背景图片 菜鸟教程,CSS3 背景
- 2D激光雷达和视觉相结合的SLAM概述
- 求求你了,不要再浪费抗原了!!!
- 大一计算机专业考什么证书,计算机专业大一的学生能考什么证书?
- 数据探针 Mysql 数据库
- 学数学计算机课的心得,课程学习心得体会
- 生鲜配送系统有哪些功能?搭建生鲜配送系统有什么优势?
- cakephp视图用php文件,cakephp使用笔记
- 【持续学习】清华最新持续学习综述
热门文章
- 天地劫pc版不显示服务器,怎么pc版老是闪退-天地劫电脑版运行问题-66街机网
- 1-9.vue指令:v-slot指令与插槽
- Python字符串切片(s[::-1])巧解回文字符串判定
- 我用计算机最难忘的事,让我最难忘的一件事作文(通用10篇)
- 沙拉比巨无霸更容易让人发胖
- linux 内核编译_如何在21世纪编译Linux内核
- python给图片添加半透明背景文字
- 欢迎您到威斯康星大学的CSE人工智能网站
- 《Unity 游戏案例开发大全》一导读
- JAVA中的endorsed技术