4.3. Встроенные uniform-переменные 111

Язык тендеров OpenGL облегчает таким приложениям программирование графических операций. В нем есть множество встроенных uniform-переменных, из которых шейдер может получать текущее состояние OpenGL. Таким образом, приложение продолжает использовать OpenGL как управляющий конечный автомат и использует шейдерь! для чтения этого состояния, чтобы обрабатывать графическую информацию способами, отличающимися от стандартных операций. Так как переменные объявлены как uniform, тендеры могут считывать из них значения, но не могут их изменить.

Встроенные uniform-переменные (листинг 4.1) предоставляют шейдеру текущее состояние OpenGL. Их значения могут получать и вершинные, и фрагмент-ные шейдеры. Если приложение не меняет значение состояния OpenGL, эти переменные содержат значения по умолчанию, определенные OpenGL.

Листинг 4.1. Встроенные uniform-переменные

//

.// матрицы состояния //'

uniform mat4 gl ModelViewMatrix:
uniform mat4 gl_ProjectionMatrix:
uniform mat4 gljtodel ViewProjectionMatrix;

uniform mat3 gl_MormalMatrix: // вторичный параметр

uniform mat4 gl JextureMatrixEgl J4axTextureCoords] :
//

// масштабирование нормали //

uniform float gljtormal Scale:
//

// диапазон глубины в оконных координатах //

struct glJtepthRangeParameters
{
float near; // n float far: // f float diff; // f - n
uniform gl_DepthRangeParameters gl_DepthRange:
//

// Плоскости отсечения

//
uniform vec4 gl_Clip.Plarie[gl^MaxClipPlanes]: //

// Размер точки //

struct gl_PointPararaeters {
float size:
float sizeMin;
float sizeMax:
float fadeThresholdSize:
f1 oat di stanceConstantAttenuation:
f 1 oat di stanceLi nearAttenuation;

продолжение

Программируемая часть операций OpenGL

Листинг 4.1 {продолжение)

float distsnceQuadratlcAtteriuation:
}:
uniform gl_PointParameters glJWnt: //

// Параметры материала //

struct gl_MaterialParameters {
vec4 emission; IJ Eon vec4 ambient; // Acm vec4 diffuse; // Dcm vec4 specular: // Scm float shirriness; // Srm
}:
uniform gl_Mater1alParameters gl_FrontMaterial; uniform gl_Hateria1Parameters gl_BackMaterial;

⇐ Предыдущая| |Следующая ⇒