GLSL

A GLSL (GL Shading Language) é uma linguagem de programação usada para o desenvolvimento de shaders dentro do pipeline do OpenGL. A GLSL é padronizada pela Khronos juntamente com a API OpenGL, fazendo parte de qualquer implementação OpenGL que seja compatível com a versão 2.0 ou posterior da API.
A versão mais nova da linguagem é a GLSL 4.4 que faz parte do OpenGL 4.4.

Exemplo Simples em GLSL

// pixel shader para transformar a posição de um vértice
void main(){
    // realiza as tranformações do pipeline fixo
    gl_position = ftransform();
}
 
// shader fragmento para tonalizar (shading) um fragmento
void main(){
    // diz que todo fragmento deve ser amarelo
    gl_color = vec3(1.0, 1.0, 0.0);
}

ponto inicial

shaders em GLSL iniciam sua execução na função main.

tipos de dados em GLSL

Refletindo a natureza de se lidar com componentes vetoriais a linguagem GLSL além de valores primitivos escalares tem vários tipos de dados que extendem os tipos primitivos e permitem manipulá-los vetorialmente. Tais tipos de dados são:

reais escalares e vetoriais: float, vec2, vec3, vec4
inteiros escalares e vetoriais: int, ivec2, ivec3, ivec4
matrizes quadradas: mat2, mat3, mat4
matrizes não quadradas: mat3x2, mat 2x4, etc…
booleano escalar ou vetorial: bool, bvec2, bvec3, bvec4
sampler para acessos às texturas

(Colocar shader que mexe com textura também)

qualificadores

uniform: a variável uniforme armazena algum valor "por primitivo"
attribute: variável attribute armazena algum valor por vértice.
varying: variável que é passada de um estágio do shader para o outro.

funções

dot(x,y): produto escalar (produto ponto) entre os vetores x e y de mesmo tamanho
reflect: ver descrição
refract: ver descrição

Links

Especificação

** colocar link da especificação GLSL mais atual **

Tutoriais

Tutoriais Glsl da Ozone 3D

Exemplos onlines interativos de GLSL (WebGL)

https://docs.google.com/document/d/1NI-8VT584bR56cX7x93XwoADEw4pDRZ6EpytzFyJvIA/edit?pli=1

utilitários

http://www.opengl.org/sdk/tools/glslang/ Parser de referência de GLSL
http://synthclipse.sourceforge.net/index.html Ambiente de desenvolvimento de shader GLSL (em eclipse, requer JDK 8+ e uma placa de video compativel com OpenGL 3.3+)
https://sourceforge.net/projects/glshaders/?source=recommended - Eclipse shaders - Plugin para eclipse que te ajuda a criar, editar e verificar seus shader vertice e fragmento GLSL e NVidia CG diretamente dentro do IDE Eclipse. Cada shader pode ser editado em um editor que colore a sintaxe com marcadores de erro/aviso.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.