1、gl_Position 坐标
gl_Position 坐标为 裁剪空间坐标
vec3 ndc = gl_Position.xyz / gl_Position.w; (OpenGL 内部执行)
2、gl_FragCoord 坐标
gl_FragCoord的x和y分量代表了片段的屏幕空间坐标(其中(0, 0)位于左下角,第一个像素中心点为 (0.5, 0.5))。
gl_FragCoord中也包含了一个z分量,它包含了片段真正的深度值。z值就是需要与深度缓冲内容所对比的那个值。
gl_FragCoord 由顶点着色器插值而来。
gl_FragCoord 坐标值为屏幕分辨率,例如 vec4(1920.0, 1080.0, 1.0, 1.0);
3、顶点运算过程
① 相机观察矩阵 * 世界坐标 = 观察空间坐标
② 相机投影矩阵 * 观察空间坐标 = 裁剪空间坐标 (裁剪空间.z 取值为 camera.near ~ camera.fat)
③ 裁剪空间坐标.xyz / 裁剪空间坐标.w = 标准化设备坐标.xyz (由WebGL 内部自动执行)
④ 标准化设备坐标 * (视口变换 & 深度映射) = 屏幕空间坐标 & 深度(0~1) (由WebGL内部自动执行)
3、textureFetch
第一个纹素传入坐标为(0,0),最后一个纹素传入坐标为(宽-1, 高-1)
4、眼空间坐标
X轴:屏幕中心向右
Y轴:屏幕中心向上
Z轴:屏幕向里