//
// Параметры освежения
II
struct gl J_ightSourceParameters {
vec4 ambient; // Acli
vec4 diffuse; // Deli
vec4 specular; // Scli
vec4 position: // Ppli
vec4 halfVector: // вторичный параметр: Hi
vec3 spotDirection; // Sdli
float spotExponent; // Srii
float spotCutoff: // Crli
// (диапазон: [O.G. 90.0]. 180.0)
float spotCosCutoff; /./ вторичный параметр: cos(Crli)
// (диапазон: [1.0. 0,0]. -1,0)
float constantAttenuation; // КО
float linearAttenuation; // Kl
float quadraticAttenuation: // K2
}:
uniform gl_LightSourceParameters gl J-ightSource[gl_Maxtights]:
struct gl_LightModelParameters {
vec4 ambient: // Acs
}:
uniform glJ-ightModelParameters gl J.ightMode.1: //
// Состояние, порожденное от освещения и материала. //
struct gltightModel Products {
vec4 sceneColor; // вторичный параметр. Ест + Acm * Acs
4.3. Вароенные Liniform-переменные
uniform gl_LightModelProducts gl_FrontLightModelProduct: uniform gl_LigtitModelProducts gf_BackLightModelProduct:
Struct gl_LightProdiicts {
vec4 ambient: // Acm * Acli
v.ec4 diffuse: // Dcm * Deli
vec4 specular: .// Scm * Sell
}:
uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights]:
uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];
I-1
It. Текстуры //
uniform vec4 gl_TextureEnvColor[gl_MaxTextureImageUnits]: uniform vec4 gl_EyePlaneS[gl_MsxTextureCoords]: uniform vec4 gl_EyePlaneT[gl_MaxTextureCoords]: uniform vec4 gl_EyePlaneR[g1_MaxTextureCoords]: i uniform vec4 gl_EyePlaneQ[gl_MaxTextureCoords]: uniform vec4 gl_ObjectPlaneS[gl_MaxTextureCoords]; uniform vec4 gl J}bjectPlaneT[gl_MaxTextu.reCoords.]; uniform vec4 gl_ObjectPlaneR[gl_MaxTextureCoords]; uniform vec4 gl_ObjectPlaneQ[gl_MaxTextureCoords]:
//
.// Дымка
//
struct gl^FogParameters {
vec4 Color;
float density: float start; float end;
float scale; // 1 / (gl_Fog.end - gl_Fog.start)
uniform gl_FogParameters gl Fog :
Приведенные здесь встроенные uniform-переменные определены таким образом, чтобы получить наибольшее преимущество от возможностей языка. Параметры сгруппированы в структуры, например: параметры диапазона глубины, параметры материала, параметры освещения и дымки. Для определения источников света и плоскостей отсечения используются массивы. Определение uniform-переменных в таком виде улучшает удобочитаемость кода и позволяет шейдерам, например, обрабатывать такие данные с помощью циклов.