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