CG / GLSL如何计算每个像素的相机距离?

时间:2012-12-28 13:44:56

标签: glsl shader distance hlsl cg

我想在pixel像素中输出每像素的实际相机距离。这意味着,结果应该(除了精度和钳位的一些微小变化)不依赖于近/远剪切平面。

此外,准确地位于近平面(并与其平行)的平面因此不应输出均匀的结果,因为近平面中间的像素比边界上的像素更靠近相机。

如何计算像素着色器中每个像素的实际相机距离? (实际着色器语言无关紧要)

2 个答案:

答案 0 :(得分:-3)

你发送的相机位置是统一的。 您将位置发送到片段着色器中。 您可以使用带有这些向量的内置距离函数。

It looks like this,但如果你不需要,请不要用.w过分复杂。

或者,将顶点位置乘以ModelView矩阵,并在其上使用length()。

答案 1 :(得分:-4)

以下是Cg http://developer.download.nvidia.com/shaderlibrary/packages/DepthColor.cgfx.zip

中的示例

这是FX Composer的设置,对于任何其他格式都应该是微不足道的。