Zoeken…


Syntaxis

  • #version version_number // Welke GLSL-versie we gebruiken
  • void main () {/ * Code * /} // Hoofdfunctie van Shader
  • in typenaam; // Specificeert een invoerparameter - GLSL 1.30
  • typ naam; // Specificeert een uitvoerparameter - GLSL 1.30
  • inout type naam; // Parameter voor zowel invoer als uitvoer - GLSL 1.30

parameters

Parameter Details
type Het type van de parameter, het moet een ingebouwd type GLSL zijn.

Opmerkingen

Om aan te geven welke versie van GLSL moet worden gebruikt om een ​​arcering te compileren, gebruikt u de versie preprocessor, bijvoorbeeld #version 330 . Elke versie van OpenGL is vereist om specifieke versies van GLSL te ondersteunen. Als een #version preprocessor niet boven aan een arcering is gedefinieerd, wordt de standaardversie 1.10 gebruikt.

Shader voor het renderen van een gekleurde rechthoek

Een shader-programma, in de OpenGL- zin, bevat een aantal verschillende shaders. Elk arceringprogramma moet ten minste een hoekpunt- arcering hebben, die de positie van de punten op het scherm berekent, en een fragment- arcering, die de kleur van elke pixel berekent. (Eigenlijk is het verhaal langer en complexer, maar hoe dan ook ...)

De volgende shaders zijn voor #version 110 , maar zouden enkele punten moeten illustreren:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow