[UnityShader基础]02.深度测试 & 深度写入
参考链接:
https://blog.csdn.net/v_xchen_v/article/details/79380222
前面说到了渲染队列,对于两个不透明的物体A和B,它们处于同一个渲染队列中。假如它们一前一后地摆放着,当先渲染A再渲染B,那么B显示在前面;当先渲染B再渲染A,那么A显示在前面。因此,单靠渲染队列还是无法很好解决物体间的遮挡关系,这时就需要利用深度这个东西了。
1.深度
指该像素距离摄像机的距离。离摄像机越远,深度越大。
2.深度缓冲 & 颜色缓冲
深度缓冲中存储着每个像素对应的深度值。
颜色缓冲中存储着每个像素对应的颜色值。
3.深度测试
将像素的深度与深度缓冲的深度进行比较。如果通过了深度测试,就有机会去改写深度缓冲的对应值;否则该像素会被舍弃。
语法如下:
ZTest Less | Greater | LEqual | GEqual | Equal | NotEqual | Always
默认值为LEqual,小于等于。即表示如果像素的深度小于等于深度缓冲的深度,则通过了深度测试。
4.深度写入
是否要将像素的深度写入到深度缓冲中。前提是通过了深度测试。
语法如下:
ZWrite On | Off
默认值为On,即写入深度缓冲。
5.总结
a.根据这两个默认值,可以知道,离摄像机近的会遮挡住离摄像机远的,因此也就解决了最开始说的两个物体的遮挡问题:假如A在前B在后,当先渲染A再渲染B,在渲染B时B不能通过深度测试从而被舍弃;当先渲染B再渲染A,在渲染A时A通过深度测试从而覆盖了B。因此对于不透明物体间的遮挡,通过这两个默认值就可以得到很好的处理。

b.当深度测试不通过时,该像素会被舍弃,深度缓冲和颜色缓冲无变化;否则,该像素的颜色值会覆盖掉颜色缓冲的颜色值,然后根据深度写入来决定是否覆盖掉深度缓冲中的深度值。

[UnityShader基础]02.深度测试 & 深度写入的更多相关文章
- Unity ZTest深度测试 & ZWrite深度写入
Shader深度渲染队列Queue预定义值:Background(1000).Geometry(2000).AlphaTest(2450).Transparent(3000).Overlay(4000 ...
- 【转】Unity ZTest 深度测试 & ZWrite 深度写入
原文连接:https://www.cnblogs.com/ljx12138/p/5341381.html 参考另一篇写的比较好的:Unity Shader中的 ZTest & ZWrite 初 ...
- Unity ZTest 深度测试 & ZWrite 深度写入
初学Shader,一开始对于渲染队列,ZTest 和 ZWrite一头雾水,经过多方查阅和实验,有了一些自己的理解.发此文与初学Shader的朋友分享,也算是为自己做个笔记.不对或不足之处欢迎指正. ...
- [UnityShader基础]03.透明度混合
如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "Ig ...
- [UnityShader基础]05.模板测试
参考链接: https://blog.csdn.net/u011047171/article/details/46928463 https://blog.csdn.net/JohnBlu/articl ...
- javascript基础02
javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
- javaSE基础02
javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...
- java基础学习05(面向对象基础02)
面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...
- [UnityShader基础]04.ColorMask
语法如下: ColorMask RGB | A | 0 | 其他R,G,B,A的组合 ColorMask R,意思是输出颜色中只有R通道会被写入 ColorMask 0,意思是不会输出任何颜色 默认值 ...
随机推荐
- openwrt lan/wan口自动翻转
参考: http://www.right.com.cn/forum/thread-75532-1-1.html 该实验基于ar9331 dragino2板子的,板子只引出一个LAN口. 1. 固件编译 ...
- console call的fallback console 兼容
(function() { var noop = function noop() {}; var methods = [ 'assert', 'clear', 'count', 'debug', 'd ...
- 将Word,PDF文档转化为图片
#region 将Word文档转化为图片 /// <summary> /// 将Word文档转化为图片 /// </summary> /// <param name=&q ...
- 测试教程网.unittest教程.8. 断言异常
From: http://www.testclass.net/pyunit/assert_raise/ 背景 我们有时候需要断言一些方法会抛出异常,这些异常需要符合我们的预期. 代码 新建test_e ...
- 【AMQ】之安装,启动,访问
1.访问官网下载AMQ 2.解压下载包 windows直接找到系统对应的win32|win64 双击activemq.bat 即可 linux执行 ./activemq start 访问: AMQ默认 ...
- 服务容错保护断路器Hystrix之六:缓存功能的使用
高并发环境下如果能处理好缓存就可以有效的减小服务器的压力,Java中有许多非常好用的缓存工具,比如Redis.EHCache等,当然在Spring Cloud的Hystrix中也提供了请求缓存的功能, ...
- AWS机器学习初探(1):Comprehend - 自然语言处理服务
AWS机器学习初探(1):Comprehend - 自然语言处理服务 1. Comprehend 服务简介 1.1 功能 Amazon Comprehend 服务利用自然语言处理(NLP)来分析文本. ...
- vm 虚拟机选择启动项
1. 每次狂按鼠标和ESC而且要试验N次,找了一下解决办法 在你的虚拟机里面找到一个 .vmx文件(虚拟机初始化文件) 加入 bios.bootDelay = "5000"(延迟 ...
- Java zxing生成二维码所需的jar包
免费的,不需要积分. 共有2个jar包, 链接: https://pan.baidu.com/s/1QJcEkRQOp1NdrNAgGC6LvQ 密码: 4524
- python中变量的缓存机制
同一文件中, 变量的缓存机制 (在此范围内的相同值内存地址一样) Number: int: -5 ~ 正无穷 float: 非负数 bool: ...