wip*_*wip 8 opengl shader glsl relation
如果我错了,请纠正我.使用顶点和像素着色器时,我们通常会提供代码来计算顶点着色器的输出gl_position.然后,我们在像素着色器中找到带有输入gl_FragCoord的ouselves.OpenGL从gl_position计算gl_FragCoord的操作名称是什么?那些是"投影"和"剪辑坐标转换"是否正确?那么,在这些操作期间,转换究竟发生了什么?换句话说,gl_FragCoord和gl_position之间的数学关系是什么,我可以用来替换openGL函数?
非常感谢您的任何贡献.
Bah*_*bar 10
gl_Position位于投影后的齐次坐标中.
值得注意的是gl_Position是顶点的(4d)位置,而gl_FragCoord是片段的(2d)位置.
两者之间发生的操作是
因此,虽然您可以找到公式来转换从作为视口的2d空间中的顶点位置表示的任意点,但它本身并不是有用的,因为生成的片段不直接与顶点位置对齐.获取顶点的2d坐标的公式是
2d_coord_vertex = viewport.xy + viewport.wh * (1 + gl_Position.xy / gl_Position.w)/2
Run Code Online (Sandbox Code Playgroud)
同样,这不是gl_FragCoord.如果您想要更深入的知识,请查看GL规范中有关光栅化的详细信息.
我不确定"替换openGL函数"究竟是什么意思,但栅格化并非易事,超出了SO答案的范围.
| 归档时间: |
|
| 查看次数: |
4544 次 |
| 最近记录: |