Recherche…


Syntaxe

  • #version version_number // Quelle version de GLSL nous utilisons
  • void main () {/ * Code * /} // Fonction principale du shader
  • dans le nom du type; // Spécifie un paramètre d'entrée - GLSL 1.30
  • nom du type de sortie; // Spécifie un paramètre de sortie - GLSL 1.30
  • nom de type inout; // Paramètre pour l'entrée et la sortie - GLSL 1.30

Paramètres

Paramètre Détails
type Le type du paramètre, il doit être un type intégré GLSL.

Remarques

Pour spécifier quelle version de GLSL doit être utilisée pour compiler un shader, utilisez le préprocesseur de version, par exemple #version 330 . Chaque version d'OpenGL est nécessaire pour prendre en charge des versions spécifiques de GLSL . Si un préprocesseur #version n'est pas défini en haut d'un shader, la version par défaut 1.10 est utilisée.

Shader pour le rendu d'un rectangle coloré

Un programme de shader, au sens OpenGL , contient un certain nombre de shaders différents. Tout programme de shader doit avoir au moins un vertex shader, qui calcule la position des points sur l'écran et un fragment shader, qui calcule la couleur de chaque pixel. (En fait, l'histoire est plus longue et plus complexe, mais de toute façon ...)

Les shaders suivants sont pour #version 110 , mais devraient illustrer quelques points:

Vertex Shader:

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

Fragment shader:

#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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow