Ricerca…


Sintassi

  • #version version_number // Quale versione GLSL stiamo usando
  • void main () {/ * Code * /} // La funzione principale di Shader
  • nel nome del tipo; // Specifica un parametro di input - GLSL 1.30
  • fuori il nome del tipo; // Specifica un parametro di output - GLSL 1.30
  • nome del tipo inout; // Parametro per input e output - GLSL 1.30

Parametri

Parametro Dettagli
genere Il tipo del parametro, deve essere un tipo built-in GLSL.

Osservazioni

Per specificare quale versione di GLSL dovrebbe essere usata per compilare uno shader, usa il preprocessore della versione, ad es. #version 330 . Ogni versione di OpenGL è necessaria per supportare versioni specifiche di GLSL . Se un preprocessore #version non è definito nella parte superiore di uno shader, viene utilizzata la versione 1.10 predefinita.

Shader per il rendering di un rettangolo colorato

Un programma shader, nel senso OpenGL , contiene un numero di shader diversi. Qualsiasi programma shader deve avere almeno un vertex shader, che calcoli la posizione dei punti sullo schermo e uno shader di frammenti , che calcoli il colore di ciascun pixel. (In realtà la storia è più lunga e complessa, ma comunque ...)

I seguenti shader sono per #version 110 , ma dovrebbero illustrare alcuni punti:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow