Встроенные uniform-переменные (листинг 4.1) предоставляют шейдеру текущее состояние OpenGL, Их значения могут получать и вершинные, и фрагментные шейдеры. Если приложение не меняет значение состояния OpenGL, эти переменные содержат значения по умолчанию, определенные OpenGL.
Листинг 4.1. Встроенные uniform-переменные
//
Л матрицы состояния //'
uniform mat4 glModelViewMatrix:
uniform mat4 gl_ProjectionMatrix:
uniform mat4 gljtodelViewProjectionMatrix:
uniform mat3 gl_NormalMatrix: // вторичный параметр
uniform mat4 gl_TextureMatrix[gl J4axTextureCoords]:
//
// иасштабирование нормали И
uniform float gljtormal Scale;
//
//. диапазон глубины в оконных координатах //
struct gl_DepthRangeParameters
{
float near; // n
float far; // f
float diff; // f - n
}:
uniform gl__DepthRangeParameters gl_DepthRange;
//
// Плоскости отсечения П
uniform vec4 gl_Clip.Plane[gl MaxClipPlanes]: П
И Размер точки
//
struct gl_PointPararaeters {
float size:
float sizeMin;
float sizeMax:
float fadeThresholdSize:
float distanceConstantAttenuation;
float distanceLinearAttenuation; .. л
продолжение тУ
Листинг 4.1 (продолжение)
float distanceQuadrattcAttenuation:
}:
uniform gl_PoirtParameters gl_Po1nt:
//
П Параметры материала //
struct gl_Material Parameters {
vec4 emission; U Ecm
vec4 ambient; 11 Acm
vec4 diffuse; // Dcm
vec4 specular: // Scm
float shininess; // Srm
}:
uniform gl_Material Parameters gl ^FrontMaterial; uniform g1_MaterialParanieters gl_BackMateria1;
//
// Параметры освещения //
struct gl J-ightSourceParameters {
vec4 ambient; // Acli
vec4 diffuse; // Deli
vec4 specular: // Scli
vec4 position; // Ppli
vec4 halfVector: // вторичный параметр: Hi
vec3 spotDirection: // Sd1i
float spotExponent; // Srii
float spotCutoff: // Crli
// (диапазон: [0.0. 90.0], 180.0) float spotCosCutoff: 1/ вторичный параметр: eostCrli)
// (диапазон: [1.0, 0.0]. -1,0) float constantAttenuation; // КО
float linearAttenuation; // K1
float quadraticAttenuation: // K2
}:
uniform gl_LightSourceParameters gl J-ightSource[gl_MaxLights]: struct gl_LightModelParameters {
vec4 ambient: // Acs
}:
uniform gl_LightModelRarameters glJJghtModel: П
// Состояние, порожденное от освещения и материала.
//
struct glJJghtModel Products {
vec4 sceneColor; // вторичный параметр. Ecm + Acm * Acs