====== GLSL ======
===== Apuntes =====
* [[fw:ogl:ogl4creacion_de_un_programa_de_shaders|Cómo compilar un programa de shaders]]
Los vertex shader mapean los vértices en la pantalla. Fragment shaders, en cambio, se encargan de los colores y del //rasterizing// de los fragmentos (porciones) de los triangulos resultantes.
==== Tipos de variables ====
* **in**, enlazan datos de fases anteriores (en versiones antiguas también eran llamadas **attribute** para los vertex shaders).
* **out**, enlanzan datos para fases posteriores.
Las variables **varying**, en versiones anteriores, eran las out de los vertex shaders y las in de los fragment shaders.
===== Vertex Shaders =====
==== Conceptos ====
=== Coordenadas de pantalla ===
En la pantalla las coordenadas del framebuffer (-1,-1) y (1,1) corresponden a la parte baja-izquierda y alta-derecha respectivamente. Los VAO ya mapean los vértices en esas coordenadas.
==== Variables ====
=== gl_Position ===
==== Sintaxis entre versiones ====
=== 150 ===
=== 330 ===
===== Ejemplos de Vertex Shaders =====
==== Básicos ====
El más simple de todos, recibe la posición y el color y los reemplaza.
#version 150
in vec4 vPosition;
in vec4 vColor;
out vec4 color;
void main() {
gl_Position = vPosition;
color = vColor;
}
===== Fragment Shaders =====
==== Variables ====
Las variables de entrada h an de tener el mismo nombre que en el Vertex Shader.
=== gl_FragColor ===
Vector de cuatro elementos que asigna el color RGBA para cada fragmento.
==== Sintaxis entre versiones ====
=== 150 ===
=== 330 ===
===== Ejemplos de Fragment Shaders =====
==== Básicos ====
#version 150
in vec4 color;
out vec4 fColor;
void main() {
fColor = color;
}