Java教程

深度

本文主要是介绍深度,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

现在常用的算法是深度缓存Z-buffer
需要注意的是深度缓存存的是每个像素的深度,不是物体的深度
frame buffer 存储颜色值
depth buffer (z-buffer) 存储深度值
一般情况下,越近z越小,越远z越大

在这张图中,越远则z越趋近于+∞,越近z趋近于0.近的地方颜色深,远的地方颜色白
算法流程:

物体由很多三角形组成,每个三角形可能会覆盖若干个像素
这个算法的意思,先初始化深度缓存为0,遍历三角形中每个点,如果当前z<深度缓存中的z,则向z-buffer写入深度,向frame-buffer写入颜色
这个过程也被称作深度测试,通过深度测试的部分会被更新到深度缓存(也被称为深度写入),未通过的部分会被舍弃
在写透明类型的shader中经常要关闭深度写入,改变渲染队列,即用Zwrite Off和"Queue" = "Transparent",因为需要让unity知道我们想要先绘制不透明的,再绘制半透明的,如果不关闭深度写入,深度缓存中近处物体的信息会覆盖远处物体

这篇关于深度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!