【LearnOpenGL学习笔记】——14.深度测试

1.概念与作用

(1)深度:屏幕空间中,某个点位上具有的一个数据属性
(2)深度缓冲:存储一个参考值,用于与片段的深度值进行比较
(2)深度写入:在比较之后,对深度缓冲中的参考值进行写入
(3)深度测试:将一个片段的深度值与深度缓冲的内容进行对比

2.深度测试函数

(1)glEnable(GL_DEPTH_TEST):开启深度测试
(2)glDepthMask(GL_FALSE):关闭深度写入
(3)glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT):清除深度缓冲
(4)glDepthFunc(GL_LESS):深度测试比较运算符设置,只在深度测试开启时生效

函数描述
GL_ALWAYS永远通过深度测试
GL_NEVER永远不通过深度测试
GL_LESS在片段深度值小于缓冲的深度值时通过测试
GL_EQUAL在片段深度值等于缓冲区的深度值时通过测试
GL_LEQUAL在片段深度值小于等于缓冲区的深度值时通过测试
GL_GREATER在片段深度值大于缓冲区的深度值时通过测试
GL_NOTEQUAL在片段深度值不等于缓冲区的深度值时通过测试
GL_GEQUAL在片段深度值大于等于缓冲区的深度值时通过测试

3.深度值

(1)深度值范围:[0-1]
(2)OpenGL中的深度值:内建gl_FragCoord向量的z值包含了那个特定片段的深度值
(3)计算深度值:
①线性方程:
在这里插入图片描述
②非线性方程:
在这里插入图片描述

非线性方程作用:在z值很小的时候提供非常高的精度,而在z值很远的时候提供更少的精度。

(4)非线性深度值到线性深度值的变换:

①计算NDC(normalized device coordinates,标准化的设备坐标)
②通过投影变换的逆变换获取线性的深度值
在这里插入图片描述

4.深度冲突

(1)深度冲突:

一个很常见的视觉错误会在两个平面或者三角形非常紧密地平行排列在一起时会发生,深度缓冲没有足够的精度来决定两个形状哪个在前面。结果就是这两个形状不断地在切换前后顺序,这会导致很奇怪的花纹。这个现象叫做深度冲突(Z-fighting),因为它看起来像是这两个形状在争夺(Fight)谁该处于顶端。

(2)防止深度冲突

①永远不要把多个物体摆得太靠近,以至于它们的一些三角形会重叠。通过在两个物体之间设置一个用户无法注意到的偏移值,你可以完全避免这两个物体之间的深度冲突。在箱子和地板的例子中,我们可以将箱子沿着正y轴稍微移动一点。箱子位置的这点微小改变将不太可能被注意到,但它能够完全减少深度冲突的发生。然而,这需要对每个物体都手动调整,并且需要进行彻底的测试来保证场景中没有物体会产生深度冲突。
②尽可能将近平面设置远一些。在前面我们提到了精度在靠近近平面时是非常高的,所以如果我们将近平面远离观察者,我们将会对整个平截头体有着更大的精度。然而,将近平面设置太远将会导致近处的物体被裁剪掉,所以这通常需要实验和微调来决定最适合你的场景的近平面距离。
③牺牲一些性能,使用更高精度的深度缓冲。大部分深度缓冲的精度都是24位的,但现在大部分的显卡都支持32位的深度缓冲,这将会极大地提高精度。所以,牺牲掉一些性能,你就能获得更高精度的深度测试,减少深度冲突。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
deeplearning深度学习笔记v5.72.pdf是一份关于深度学习笔记文档,它可能是关于深度学习的教材、指南或者是研究论文的笔记总结。 深度学习是一种机器学习的分支,它利用神经网络模型来模拟人脑的工作原理。深度学习的关键是多层次的神经网络结构,通过一层层的神经元连接和权重调整,自动地从大量的数据中学习并提取有用的特征。深度学习的目标是通过训练,使得神经网络能够自动地完成从输入到输出的复杂映射,从而实现各种人工智能任务,如图像识别、语音识别和自然语言处理等。 在deeplearning深度学习笔记v5.72.pdf中,可能包含了深度学习的基本原理和算法、神经网络的结构和训练方法、常用的深度学习框架和工具等内容。此外,它可能还包含了一些深度学习的应用案例和实践经验,以及一些最新的研究进展和领域前沿。 通过阅读deeplearning深度学习笔记v5.72.pdf,读者可以了解深度学习的基本概念和原理,掌握深度学习的常用工具和技术,以及了解最新的研究动态。这对于想要学习深度学习的初学者来说,是一份很有价值的学习资料。对于已经有一定深度学习基础的读者来说,它可以作为参考和进一步学习的素材,帮助他们深入了解和运用深度学习在各种领域的应用。 总之,deeplearning深度学习笔记v5.72.pdf是一份关于深度学习笔记文档,对于想要学习深度学习或者已经从事深度学习研究的读者来说,具有很大的参考和学习价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值