参考链接:

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.深度测试 & 深度写入的更多相关文章

  1. Unity ZTest深度测试 & ZWrite深度写入

    Shader深度渲染队列Queue预定义值:Background(1000).Geometry(2000).AlphaTest(2450).Transparent(3000).Overlay(4000 ...

  2. 【转】Unity ZTest 深度测试 & ZWrite 深度写入

    原文连接:https://www.cnblogs.com/ljx12138/p/5341381.html 参考另一篇写的比较好的:Unity Shader中的 ZTest & ZWrite 初 ...

  3. Unity ZTest 深度测试 & ZWrite 深度写入

    初学Shader,一开始对于渲染队列,ZTest 和 ZWrite一头雾水,经过多方查阅和实验,有了一些自己的理解.发此文与初学Shader的朋友分享,也算是为自己做个笔记.不对或不足之处欢迎指正. ...

  4. [UnityShader基础]03.透明度混合

    如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "Ig ...

  5. [UnityShader基础]05.模板测试

    参考链接: https://blog.csdn.net/u011047171/article/details/46928463 https://blog.csdn.net/JohnBlu/articl ...

  6. javascript基础02

    javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...

  7. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

  8. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  9. [UnityShader基础]04.ColorMask

    语法如下: ColorMask RGB | A | 0 | 其他R,G,B,A的组合 ColorMask R,意思是输出颜色中只有R通道会被写入 ColorMask 0,意思是不会输出任何颜色 默认值 ...

随机推荐

  1. ElasticSearch停止启动

    1.查找ES进程 ps -ef | grep elastic 2.杀掉ES进程 kill -9 2382(进程号) 3.重启ES sh elasticsearch -d 注意:elasticsearc ...

  2. 阅读<<HDMI 1.4/2.0 Transmitter Subsystem V2.0>>笔记

    阅读<<HDMI 1.4/2.0 Transmitter Subsystem V2.0>>笔记 1.Subsystem Block Diagram 2.HDMI TX Subs ...

  3. 关于bool 与boolean

    关于bool的介绍,整理如下: bool 关键字是 System.Boolean 的别名.它用于声明变量来存储布尔值 true 和 false. 如果需要一个也可以有 null 值的布尔型变量,请使用 ...

  4. sql server 清除数据库中所有表的数据

    CREATE PROCEDURE  sp_DeleteAllData AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'- ...

  5. js 处理Json 时间带T 时间格式

    对于后台传过来的json数据是带T时间格式的坑处理的一些做法总结 new Date(data[j].addtime).toISOString().replace(/T/g, ' ').replace( ...

  6. Selenium2+python自动化38-显式等待(WebDriverWait)

    From: https://www.cnblogs.com/yoyoketang/p/6517477.html 前言: 在脚本中加入太多的sleep后会影响脚本的执行速度,虽然implicitly_w ...

  7. [蓝桥杯]ALGO-51.算法训练_Torry的困惑(基本型)

    题目描述: 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2...……这样的数叫做质数.Torry突然想到一个问题,前10...……个质数的乘积是多少呢?他把这个问题告诉老师.老师愣住了,一时 ...

  8. MDIEMDIE双心封装版0.3.0.0RC6V2

    MDIEMDIE双心封装版0.3.0.0 RC6V2官方主页:http://cres.s28.xrea.com/MDIE(多文档界面资源管理器)是一个MDI类型的文件管理软件,是代替资源管理器的一个无 ...

  9. elasticsearch 口水篇(8)分词 中文分词 ik插件

    先来一个标准分词(standard),配置如下: curl -XPUT localhost:9200/local -d '{ "settings" : { "analys ...

  10. SSM的配置文件

    Mybatis: SqlMapConfig.xml,配置了数据源,连接池,事务,加载sql映射文件(pojo),sqlsessionFactory对象,配置到spring容器中,mapeer代理对象或 ...