#include <brain.h>
Webdev Gamedev Webdesign Minecraft
Bonjour,
Hier j'ai joué un peu avec les fragment shaders en GLSL.
Tout d'abord, j'ai utilisé le module PostFX de la SFML. Mais ce module utilise une version simplifiée de GLSL et qui limite les possibilités des shaders. (Par exemple, impossible de définir des fonctions hors du bloc effect correspondant au main.)
Voilà l'exemple d'un shader qui ne fait rien d'intéressant en PostFX et en GLSL :
PostFX :
texture framebuffer
effect
{
_out = framebuffer(_in);
}
GLSL :
uniform sampler2D framebuffer;
void main(void)
{
gl_FragColor = texture2D(framebuffer, gl_TexCoord[0].xy);
}
Donc j'ai du recoder toute la classe PostFX de SFML pour fonctionner avec les shaders GLSL. En fait je me suis contenté d'adapter la classe existante, ce qui rend le code plutôt dégueulasse. Je ne le donne pas car c'est un simple chargement de shader/création d'un program. Le particularité est que le shader est appliqué à un grand rectangle qui prend tout l'écran. Une copie de l'écran est envoyée au shader via framebuffer.
J'ai codé 4 shaders : un effet vintage, un infrarouge, un bloom (qui reste à améliorer) et un effet de distortion pour simuler de l'eau par exemple.
Voici une vidéo de démonstration puis le code source des shaders :
-Steven
blog comments powered by Disqus