Szukaj…
Składnia
- #version numer_wersji // Z jakiej wersji GLSL korzystamy
- void main () {/ * Code * /} // Główna funkcja Shadera
- w nazwie typu; // Określa parametr wejściowy - GLSL 1.30
- nasza nazwa typu; // Określa parametr wyjściowy - GLSL 1.30
- nazwa typu inout; // Parametr dla wejścia i wyjścia - GLSL 1.30
Parametry
Parametr | Detale |
---|---|
rodzaj | Typ parametru, musi to być wbudowany typ GLSL. |
Uwagi
Aby określić, której wersji GLSL należy użyć do skompilowania modułu cieniującego, użyj preprocesora wersji, np. #version 330
. Każda wersja OpenGL jest wymagana do obsługi określonych wersji GLSL . Jeśli preprocesor #version
nie jest zdefiniowany w górnej części modułu cieniującego, używana jest domyślna wersja 1.10.
Moduł cieniujący do renderowania kolorowego prostokąta
Program do cieniowania, w sensie OpenGL , zawiera wiele różnych programów do cieniowania. Każdy program cieniujący musi mieć co najmniej moduł cieniujący wierzchołek , który oblicza pozycję punktów na ekranie, oraz moduł cieniujący fragment , który oblicza kolor każdego piksela. (W rzeczywistości historia jest dłuższa i bardziej złożona, ale w każdym razie ...)
Następujące #version 110
cieniujące dotyczą wersji #version 110
, ale powinny ilustrować niektóre punkty:
Moduł cieniujący wierzchołek:
#version 110
// x and y coordinates of one of the corners
attribute vec2 input_Position;
// rgba colour of the corner. If all corners are blue,
// the rectangle is blue. If not, the colours are
// interpolated (combined) towards the center of the rectangle
attribute vec4 input_Colour;
// The vertex shader gets the colour, and passes it forward
// towards the fragment shader which is responsible with colours
// Must match corresponding declaration in the fragment shader.
varying vec4 Colour;
void main()
{
// Set the final position of the corner
gl_Position = vec4(input_Position, 0.0f, 1.0f);
// Pass the colour to the fragment shader
UV = input_UV;
}
Moduł cieniujący fragmenty:
#version 110
// Must match declaration in the vertex shader.
varying vec4 Colour;
void main()
{
// Set the fragment colour
gl_FragColor = vec4(Colour);
}