在我的片段/像素着色器中,我试图在给定范围内以百分比 [0-1] 计算片段的深度位置。我所拥有的是一堆形状(它们没有给出相关数据),但所有形状都有一个共同点,那就是它们的深度总是 1000 像素。
从我从片段中获得的深度值,我希望能够计算出在这个形状的范围(1000.0 像素)中它在 [0-1] 之间的值中的位置。
这意味着我可以有一个当前片段的深度值,比如 2300,但我需要知道它在形状的 1000 像素深度中的位置。
因此,如果形状正好位于相机所在的位置,我可以通过执行以下操作来计算当前片段深度值的位置:
float depth = (gl_FragCoord.z / gl_FragCoord.w);
float perc = 1.0 - (depth / 1000.0);
这一切都很好,但问题是当形状离相机更远时。我如何从该深度位置计算它在 1000 像素范围内的位置。在某种程度上,必须处理范围,因为它也离相机更远,但问题是我只得到了片段深度值和可用范围。
一张图解释更多!从上面想象它,所以它沿着 Z 轴向下。
那么这甚至有可能解决吗?还是我应该尝试另一种方法?