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);
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow