Sök…


Syntax

  • #version version_number // Vilken GLSL-version vi använder
  • void main () {/ * Code * /} // Shaders huvudfunktion
  • i typnamn; // Anger en ingångsparameter - GLSL 1,30
  • ut typnamn; // Anger en utgångsparameter - GLSL 1.30
  • inout typnamn; // Parameter för både ingång och utgång - GLSL 1.30

parametrar

Parameter detaljer
typ Parameterns typ, den måste vara en inbyggd GLSL-typ.

Anmärkningar

För att specificera vilken version av GLSL som ska användas för att kompilera en skuggning, använd versionprocessorn t.ex. #version 330 . Varje version av OpenGL krävs för att stödja specifika versioner av GLSL . Om en #version förbehandlare inte definieras högst upp i en skuggare används standardversionen 1.10.

Shader för rendering av en färgad rektangel

Ett shader-program, i OpenGL- betydelsen, innehåller ett antal olika skuggare. Varje shader program måste ha åtminstone en vertex shader, som beräknar läget för punkter på skärmen, och ett fragment shader, som beräknar färgen för varje pixel. (Egentligen är historien längre och mer komplex, men ändå ...)

Följande skuggare är för #version 110 , men bör illustrera några punkter:

Vertex skuggare:

#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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow