为什么?z坐标是相机空间的深度值吗?如果是这样,我们应该正确地使用透视重心坐标来插值它们,不是吗? 不,它们不是。它们在窗口空间中,这意味着它们已经被w除过了。如果你想对camarea空间z进行插值,你必须应用透视校正,这是正确的。但是对于NDC和窗口空间Z,这将是错误的--毕竟,透视变换(如通过透视投影矩阵和透视划分所实现的)仍然将直线Map到直线,和平面三角形到平面三角形。这就是为什么我们首先使用双曲扭曲的Z值作为深度。这也是一个用于层次深度测试优化的属性。请查看at my answer here以了解更多详细信息,包括一些图表。
1条答案
按热度按时间noj0wjuj1#
为什么?z坐标是相机空间的深度值吗?如果是这样,我们应该正确地使用透视重心坐标来插值它们,不是吗?
不,它们不是。它们在窗口空间中,这意味着它们已经被
w
除过了。如果你想对camarea空间z进行插值,你必须应用透视校正,这是正确的。但是对于NDC和窗口空间Z,这将是错误的--毕竟,透视变换(如通过透视投影矩阵和透视划分所实现的)仍然将直线Map到直线,和平面三角形到平面三角形。这就是为什么我们首先使用双曲扭曲的Z值作为深度。这也是一个用于层次深度测试优化的属性。请查看at my answer here以了解更多详细信息,包括一些图表。