Je commence avec GLSL et j'ai implémenté un ombrage différé simple qui génère un tampon G avec des positions, des normales et de l'albédo.
J'ai également écrit un simple shader de lumière ponctuelle.
Maintenant, je dessine une sphère pour la lumière ponctuelle et la sortie va dans un tampon d'éclairage.
Le problème est, comment puis-je combiner les résultats du tampon d'éclairage lors du dessin de plusieurs lumières?
Par exemple, lorsque je dessine la deuxième lumière sur le tampon de lumière à l'aide du nuanceur de lumière ponctuelle, comment puis-je ajouter la première lumière à la deuxième lumière dans le tampon d'éclairage. Je veux dire, vous ne pouvez pas lire et écrire dans le même tampon de sortie?
la source
Pour mon rendu différé, j'agrège toutes les lumières en une seule cible de rendu lumineux en utilisant les informations du g-buffer, puis échantillonne cette cible pour l'intensité lumineuse tout en créant mon image finale de backbuffer.
Donc, fondamentalement, je passe toute ma géométrie de jeu à travers ma passe de géométrie pour construire les g-buffers. De là, j'alimente les g-buffers dans mon shader passe-lumière. Chaque lumière traverse la passe à l'aide d'un quadruple plein écran. De cette façon, mon pixel shader peut calculer l'intensité lumineuse de toutes les surfaces visibles à partir du g-buffer, puis les ajouter à la cible de rendu lumineux. Vous ajoutez simplement l'intensité lumineuse de chaque lumière au tampon de lumière, mais assurez-vous de fixer l'intensité de 0 à 1.
Tout ce que vous auriez besoin de faire pour gérer différents types de lumières (point, spot, parallèle) est de rendre la lumière plus robuste en utilisant éventuellement un tampon constant pour désigner les procédures d'éclairage à exécuter.
la source
Il y a probablement une meilleure réponse que cela, mais je sais que si dans votre shader vous répétez le code nécessaire pour faire une deuxième lumière, vous pouvez alors traiter deux lumières sur un seul objet au lieu d'une. Cela nécessite beaucoup de code pour la deuxième lumière et des coutures un peu redondantes, mais je sais que cela fonctionne. Cependant, je crois que, comme quelqu'un vous le signalera, espérons-le, il pourrait y avoir une solution plus élégante.
la source