有关GLSL中的gl_FragCoord

来源:互联网 发布:文本数据可视化方法 编辑:程序博客网 时间:2024/05/18 13:46

有关GLSL中的gl_FragCoord

         在研究阴影映射的时候,我发现了一个很有意思的变量,它可以代替我们自己使用的varying变量,给我们带来方便。但是我们也需要了解它是如何计算的。

蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/45062525。欢迎同行前来探讨。

         gl_FragCoord是在片断着色器中一个隐藏的输入变量。它代表着NDC坐标下的片元坐标。它已经经过了单位化,即w分量已为1。在可编程的流水线中,通常是这样的:


         下面可以通过下面的着色器代码来获得和gl_FragCoord相同的效果:

// MVP变换vec4 projectedPosition =projectionMatrix *viewMatrix *modelMatrix *vec4( finalPosition, 1.0 );// 透视除法(perspective division)vec4 normalizedPosition = projectedPosition / projectedPosition.w;// NDC坐标映射const mat4 ndcBiasMatrix = mat4( 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0 );vec4 ndcPosition = ndcBiasMatrix * normalizedPosition;

得出的ndcPosition其实和gl_FragCoord等价。

0 0
原创粉丝点击