Aller au menu - Aller au contenu

Icône Les shaders en GLSL

Par Avatar Yno
Mise à jour : 08/11/2008
1 757 visites depuis 7 jours , classé 73/777
Bonjour à tous ! :)

Vous êtes-vous jamais demandé comment étaient faits les superbes effets 3D à la mode comme on en voit dans les jeux vidéos récents, comme par exemple l'eau, l'HDR ou l'effet de flou de vitesse dans les jeux de voiture ?
Une bonne partie de la réponse se trouve dans l'utilisation de shaders au sein d'un rendu 3D.

Vous en avez sans doute déjà entendu parler (Shader Model 2.0, Shader Model 3.0, ...), mais savez-vous vraiment ce qu'est un shader ? Savez-vous ce que permet de faire un shader ? Non ? Et bien c'est justement ce que je vais essayer de vous apprendre à travers ce tutoriel.

Ici, je vous apprendrai à programmer dans un langage de programmation de shaders appelé le GLSL.
Nous allons tout d'abord voir en quoi cela consiste, comment on s'y prend, et enfin je vous apprendrai à créer quelques effets graphiques sympathiques :)
Allons-y !

Ce tutoriel nécessite la lecture du tutoriel sur OpenGL de Kayl, annexe sur la trigonométrie comprise.
Les exemples de code seront écrits en langage C, et la connaissance de ce langage en général (ou d'un langage qui lui ressemble syntaxiquement comme le C++ ou le Java) est conseillée car le GLSL est basé dessus. Je ne vous détaillerai donc aucune base de la programmation avec GLSL puisqu'elles sont quasiment identiques à celles du C (if, else, for, etc...).
Ce cours est composé des parties suivantes :
Merci au site www.developpez.com et aux membres de sa section programmation 3D, grâce auxquels j'ai acquis la plupart des mes connaissances actuelles en terme de programmation 3D.

Les commentaires, critiques ou corrections sont les bienvenus. Si vous pensez avoir trouvé une incohérence ou si vous avez mal compris quelque chose, n'hésitez pas à m'en faire part, je serai heureux de pouvoir améliorer le tutoriel pour vous ;)

Image utilisateur
Cette création est mise à disposition sous un contrat Creative Commons.

Partager

17 commentaires pour "Les shaders en GLSL"
Note moyenne : 3.93 / 4 (15 votes)
Pseudo Commentaire
Hors ligne Yno # Posté le 27/04/2010 à 18:31:15
Avatar
Flux RSS

Je ne le connaissais pas mais il semble structuré pour répondre au nouvel ordre chronologique d'apprentissage de l'API, forcé par ses récents changements. Il ne traite cependant pas de la tessellation, m'enfin on va pas le lui reprocher dans la mesure où elle est toute récente dans les spécifications (un mois).

Je suis en train de rédiger quelques articles pour les versions modernes d'OpenGL, leur structuration est comparable aux articles que tu cites, ce qui solidifie l'idée de penser que c'est l'API qui veut cela. Ils sont en cours de rédaction et de nombreux ajouts seront faits.. un jour. Mais si tu veux du WIP, en voici en voilà :

http://downloads.goldzoneweb.info/scengine/articles/gl3/

Il y a de quoi lire mais rien de très nouveau pour quelqu'un qui connaît déjà un minimum OpenGL.
 
Hors ligne schmiley397 # Posté le 07/08/2010 à 02:31:27

super tutoriel, très détaillé, bravo!
J'ai longtemps hésité à me mettre aux shaders parce que j'avais la flemme d'apprendre. Ce tuto c'est exactement ce qu'il me fallait : pas à pas, ne demandant pas trop d'effort au lecteur.

Question : les derniers commentaires suggèrent qu'il n'est plus d'actualité... Pourquoi? Quelque chose remplace les shaders?

une petite remarque pour faire l'emmerdeur :)
Ce que tu appelles surcharge d'opérateur n'en est pas. La surcharge d'opérateur est une fonctionnalité d'un langage qui permet de remplacer le comportement d'un opérateur. Bien que les opérateurs GLSL ont parfois un comportement différent en fontion du type des opérandes, le langage ne permet pas de changer ce comportement, c'est à dire de spécifier une fonction qui remplace le comportement normal. Je pense que tu voulais dire qu'on peut voir GLSL comme du C++ avec des opérateurs surchargés.
Hors ligne Yno # Posté le 07/08/2010 à 07:11:06
Avatar
Flux RSS

Rien ne remplace les shaders mais le langage GLSL a évolué, l'API propose de nouvelles fonctionnalités, etc. Les bases restent cependant toujours vraies.

Et pour la surcharge d'opérateur euh oui OK peut-être, m'enfin je ne pense pas changer cela maintenant :-p
 
Hors ligne Kkronos # Posté le 06/10/2010 à 13:37:50
Avatar

Sur ce site, il y un exemple d'utilisation des shaders: http://3dworks.over-blog.com/article-genese-58282838.html
Hors ligne omidvar.mahmoud # Posté le 09/12/2010 à 11:16:06

Merci pour ce tuto, dommage que tu rentre pas assez dans détaille pour le fragment shader (et geometri shader) et manipulation de texture dans fragment shader.

Voir tous les commentaires