理解GLSL内部变量gl_FragCoord

2019-12-20  本文已影响0人  大浪捉鱼

相对于vertex shader里的gl_Position和fragment shader里的gl_FragColor, 同样是glsl内部变量的gl_FragCoord就比较少见。

1、gl_FragCoord是fragment shader的输入变量,只读。
2、gl_FragCoord是个vec4,四个分量分别对应x, y, z和1/w。其中,x和y是当前片元的窗口相对坐标,不过它们不是整数,小数部分恒为0.5。x - 0.5和y - 0.5分别位于[0, windowWidth - 1]和[0, windowHeight - 1]内。windowWidth和windowHeight都以像素为单位,亦即用glViewPort指定的宽高。w即为乘过了投影矩阵之后点坐标的w,用于perspective divide的那个值。gl_FragCoord.z / gl_FragCoord.w可以得到当前片元和camera之间的距离。

上一篇 下一篇

猜你喜欢

热点阅读