首页 > 计算机图形学 > Shader > Unity渲染队列-ZTest ZWrite
2022
03-13

Unity渲染队列-ZTest ZWrite

深度

就是该像素点在3d世界中距离摄像机的距离。离摄像机越远,则深度值(Z值)越大。

深度缓存

深度缓存中存储着准备要绘制在屏幕上的像素点的深度值。如果启用了深度缓冲区,在绘制每个像素之前,OpenGL会把该像素的深度值和深度缓存的深度值进行比较。如果新像素深度值<深度缓存深度值,则新像素值会取代原先的;反之,新像素值被遮挡,其颜色值和深度将被丢弃。(深度主要起的是比较的作用)

ZTest(深度测试)

开启后,它会与深度缓存区的深度值进行比较。通过比较则写入到颜色缓存区(这里会经历颜色混合Blend),不通过则丢弃

  • ZTest Less:深度小于当前缓存则通过
  • ZTest Greater:深度大于当前缓存则通过
  • ZTest LEqual:深度小于等于当前缓存则通过
  • ZTest GEqual:深度大于等于当前缓存则通过
  • ZTest Equal:深度等于当前缓存则通过
  • ZTest NotEqual:深度不等于当前缓存则通过
  • ZTest Always:不论如何都通过

注:ZTest默认值是On(LEqual)

Blend

ZWrite(深度写入)

开启后,若通过ZTest,则会把自己的深度值写入到深度缓存区

  • ZWrite On:写入深度
  • ZWrite Off:不写入深度

注:ZWrite默认值是On

代码示例

效果图(与代码示例无关)

Unity渲染队列-ZTest ZWrite - 第1张  | u3d8技术分享
最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments