【Unity Shaders】Transparency —— 使用渲染队列进行深度排序
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。
这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。
========================================== 分割线 ==========================================
写在前面
准备工作
- 创建一个新的场景,以及两个球体,并且让它们排在一条线上。我们的目标是(没有蛀牙!),无论它们在3D空间中的实际坐标是什么,我们可以随你所欲地安排它们的绘制顺序,即谁在谁的上面。
- 为了可以看出修改绘制顺序发生的变化,我们还需要至少两个Shaders。所以,我们创建两个新的Shaders,并可以分别分别命名为Depth001和Depth002。
- 你的场景应该看起来和下面图片类似。
实现
- 首先我们需要生命这个对象将会被绘制到那个渲染队列中。为了做到这一点,我们需要修改Tags{}块,也就是在SubShader{}的内部:
Tags { "Queue"="Geometry-20" }
- 然后,我们需要告诉Unity,我们想要自己控制这个对象的渲染顺序,而不想写到深度缓存中。在上一步代码的下面添加如下代码:
ZWrite Off
- 保存,返回Unity查看。你将会发现其中一个球体出现在所有对象的后面,甚至当它的3D空间中的实际坐标在所有对象前面时也是一样。如下图所示:
Shader "Custom/Depth001" {Properties {_MainTex ("Base (RGB)", 2D) = "white" {}}SubShader {Tags { "Queue"="Geometry-20" }ZWrite OffLOD 200CGPROGRAM#pragma surface surf Lambertsampler2D _MainTex;struct Input {float2 uv_MainTex;};void surf (Input IN, inout SurfaceOutput o) {half4 c = tex2D (_MainTex, IN.uv_MainTex);o.Albedo = c.rgb;o.Alpha = c.a;}ENDCG} FallBack "Diffuse"
}
解释
渲染队列 | 渲染队列描述 | 渲染队列值 |
Background | 这个队列通常被最先渲染。 | 1000 |
Geometry | 这是默认的渲染队列。它被用于绝大多数对象。不透明几何体使用该队列。 | 2000 |
AlphaTest | 通道检查的几何体使用该队列。它和Geometry队列不同,对于在所有立体物体绘制后渲染的通道检查的对象,它更有效。 | 2450 |
Transparent | 该渲染队列在Geometry和AlphaTest队列后被渲染。任何通道混合的(也就是说,那些不写入深度缓存的Shaders)对象使用该队列,例如玻璃和粒子效果。 | 3000 |
Overlay | 该渲染队列是为覆盖物效果服务的。任何最后被渲染的对象使用该队列,例如镜头光晕。 | 4000 |
【Unity Shaders】Transparency —— 使用渲染队列进行深度排序相关推荐
- Unity Shaders and Effects
https://www.baidu.com/link?url=o85V5QLsraCjMOmzJc6081Z3bsQRw4_hjoPki5igyrvrJExygnt2Ex-_oGmH60-wm2VU5 ...
- Unity中的几种渲染队列
在渲染阶段,引擎所做的工作是把所有场景中的对象按照一定的策略(顺序)进行渲染.最早的是画家算法,顾名思义,就是像画家画画一样,先画后面的物体,如果前面还有物体,那么就用前面的物体把物体覆盖掉,不过这种 ...
- Unity半透明特效原理讲解(为什么半透明设置渲染顺序和深度写入这么重要)
Unity半透明特效原理讲解(为什么半透明设置渲染顺序和深度写入这么重要 写在前面 实验场景 实验1:红(不透明)+蓝(不透明)+默认渲染顺序(先渲染蓝Cube) 实验2:红(不透明+优先渲染)+蓝( ...
- Unity中的物体渲染顺序
big seven 文章目录 前言 一.摄像机渲染 二.划分渲染队列 三.不透明物体的渲染 四.透明物体的渲染 五.UGUI元素的渲染 总结 前言 Unity中物体的渲染顺序 提示:以下是本篇文章正文 ...
- unity 可视化渲染管线_如何为高端可视化设置Unity的高清渲染管道
unity 可视化渲染管线 Prior to Unite Copenhagen in September 2019, Unity collaborated with Lexus and its age ...
- 【Unity Shaders】Lighting Models —— 灯型号Lit Sphere
考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图.这里是本书所需的代码和资源(当然你 ...
- 【Unity Shaders】Mobile Shader Adjustment —— 为手机定制Shader
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- unity urp 实现头发渲染
此篇文章参考 Hair Rendering and Shading 地址: https://web.engr.oregonstate.edu/~mjb/cs519/Projects/Papers/Ha ...
- 【Unity Shaders】法线纹理(Normal Mapping)的实现细节
写在前面 写这篇的目的是为了总结我长期以来的混乱.虽然题目是"法线纹理的实现细节",但其实我想讲的是如何在shader中编程正确使用法线进行光照计算.这里面最让人头大的就是各种矩阵 ...
最新文章
- python手写板_Python3使用PyQt5制作简单的画板/手写板实例
- Linux中常见shell命令总结
- 摘自ubantuer-Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- matlab腔内光子寿命,mcFORnp matlab环境下,利用蒙特卡洛模拟光子包在生物组织内的光路传输 271万源代码下载- www.pudn.com...
- hexo : 无法加载文件 C:\Users\mxz\AppData\Roaming\npm\hexo.ps1,因为在此系统上禁止运行脚本。
- Hulu CEO预计网站本年营收将达5亿美元
- java 北理工 教材_北理工《Java技术与应用》在线作业
- Linux_linux常用工具(git,vim ,gcc ,gdb,权限)超详解
- 《那些年啊,那些事——一个程序员的奋斗史》转载1到7
- Koa项目搭建过程详细记录
- RoboMaster 2017:机器人版的「王者农药」,工程师们的竞技时代
- Ubuntu 下 Apache2 与Tomcat5 的交配指南.(转自互联网)
- java将url页面生成pdf_如何将PDF页面从横向改成纵向?
- Flex3 DataGrid拖拽到ClumnChart动态显示图表
- Python 之 单例
- 灵活地横向扩展:从文件系统到分布式文件系统
- 学习笔记:自己编译安装OpenCV+测试opencv安装是否成功
- 解决:win10在空白处右键资源管理器重启的故障
- cp命令强制覆盖方式实现
- 深度学习在图像分类中的应用
热门文章
- IOS 项目问题总结
- 【研究型论文】Encrypted Malware Traffic Detection via Graph-based Network Analysis
- 如何使用远程计算机的话筒,如何将外部麦克风连接到您的GoPro | MOS86
- 温漂:元器件温度系数TCR
- 【标准规范免费下载】国家标准、行业标准、图集下载方式良心推荐
- IDEA运行项目提示找不到程序包
- hanoi塔 python
- 赛灵思发布 ACAP,向英特尔、英伟达开炮
- Mac OS X下删除或添加鼠标右键菜单项目及清除Mac OS右键菜单重复项
- opencv_contrib安装教程