在我的GLSL片段着色器中,我想要能够计算碎片距离空间中特定直线的距离。
为此,我首先尝试使用在顶点着色器中设置的可变vec2来反映最终出现在gl_FragCoord
中的内容:
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
现在在片元着色器中,我期望:
gl_FragCoord.xy==fake_frag_coord
但是它不工作。管线对 gl_Position
执行了什么操作,将其转换为 gl_FragCoord
,我在处理 fake_frag_coord
时忽略了什么操作?
gl_FragCoord.xy==gl_Position.xy/gl_Position.w
这段代码是否会进行透视除法? - toolchainX