Shaders 101 — Introduction à la programmation graphique
Les shaders sont de petits programmes exécutés sur la carte graphique (GPU) pour chaque pixel ou sommet d'un objet.
Vertex Shader vs Fragment Shader
- Vertex Shader : Exécuté pour chaque sommet (vertex). Il détermine la position finale du sommet dans l'espace.
- Fragment (ou Pixel) Shader : Exécuté pour chaque pixel. Il détermine la couleur finale du pixel.
Exemple en GLSL (OpenGL Shading Language)
Vertex Shader simple
#version 330 core
layout (location = 0) in vec3 aPos; // Position du sommet en entrée
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
void main()
{
// Calcule la position finale du sommet
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
Fragment Shader simple
#version 330 core
out vec4 FragColor; // Couleur du pixel en sortie
uniform vec4 ourColor;
void main()
{
FragColor = ourColor;
}
Effet de "glitch" en Fragment Shader
// Dans Godot (Shader Language)
shader_type canvas_item;
uniform float amount = 0.05;
uniform float speed = 5.0;
void fragment() {
float time_factor = TIME * speed;
float x_offset = (fract(sin(UV.y * 10.0 + time_factor) * 43758.5453) - 0.5) * amount;
vec2 uv_glitch = UV;
uv_glitch.x += x_offset;
COLOR = texture(TEXTURE, uv_glitch);
}
Ce shader déplace horizontalement les pixels de manière aléatoire pour créer un effet de glitch.
Aucun commentaire pour le moment.