片段着色器变量 Fragment Shader Variables
在OpenGL着色语言(GLSL)中,片段着色器(Fragment Shader)具有以下功能和访问权限:
-
访问当前程序对象的 uniforms:片段着色器可以读取当前关联的程序对象中的uniform变量。这些全局变量用于传递不随顶点变化的数据,如光照参数、变换矩阵等,其存储限制及操作方法在第7.6节中有详细描述。
-
使用纹理采样器:片段着色器能够通过samplers执行纹理采样操作,以获取纹理图像的颜色或其它数据。这部分内容在第7.11节中阐述。
-
读取输入变量:片段着色器可以读取与光栅化生成片段属性相对应的输入变量。GLSL定义了一组内建输入(built-in inputs),包括片段的位置信息以及其他相关数据。
-
接收前一阶段输出:前一个活跃的着色器阶段(通常是顶点着色器)定义的输出变量,在进行插值后可供片段着色器使用。如果未采用平坦着色(flat shading),则这些变量会在渲染的图元内部进行线性插值。
-
插值控制:默认情况下,输入变量在屏幕空间内的采样位置由光栅化阶段确定,并可通过插值限定符(如centroid in 和 sample in)来覆盖默认行为。当声明为
centroid in
时,变量将在像素中心附近的位置采样;启用MU