🔥 Révélez les secrets de l'occlusion ambiante en espace écran avec OpenGL

Find AI Tools
No difficulty
No complicated process
Find ai tools

🔥 Révélez les secrets de l'occlusion ambiante en espace écran avec OpenGL

Table of Contents

  1. Introduction
  2. Le concept de l'occlusion de viande
  3. Principe de l'occlusion ambiante en temps réel
  4. Méthode de rendu en temps réel de l'occlusion ambiante
  5. Comment générer une texture SSAO
  6. La logique de l'occlusion dans le fragment shader
  7. Utilisation du bruit texturé pour générer des tangentes aléatoires
  8. Estimation de l'occlusion pour chaque échantillon
  9. Application de l'occlusion ambiante dans le pipeline de rendu
  10. Limitations et débats autour de l'occlusion ambiante

🥩 Le concept de l'occlusion de viande

L'idée derrière notre occlusion de viande est que, sur une surface avec une géométrie très proche, un point va recevoir moins de lumière car moins de lumière rebondissant dans la scène va atteindre ce point s'il est bloqué par une géométrie proche. Ainsi, les points situés dans les crevasses auront une occlusion de viande plus forte. En rendu non temps réel, nous pouvons utiliser une technique de qualité appelée occlusion ambiante basée sur les détails de toute la géométrie. Cependant, en temps réel, nous ne pouvons nous permettre qu'une technique grossière appelée occlusion ambiante en espace écran pour déterminer à quel point un point est occlus. Nous projetons un petit dôme à partir de ce point, dans la direction de la normale pour ce point, et dans ce dôme, nous considérons un certain nombre de points d'échantillonnage aléatoires. Nous voulons déterminer combien de ces points d'échantillonnage sont bloqués par d'autres géométries devant la caméra. Le facteur d'occlusion est le rapport du nombre d'échantillons bloqués sur le nombre total d'échantillons.

Principe de l'occlusion ambiante en temps réel

Dans cet exemple, nous utilisons l'occlusion ambiante en espace écran (SSAO) pour simuler l'occlusion. Pour chaque pixel, nous générons des points d'échantillonnage aléatoires et les projetons dans l'espace écran. En comparant la profondeur de ces points avec la profondeur du pixel, nous pouvons déterminer si le point est occlus ou non. Plus la valeur d'occlusion est élevée, moins de lumière atteindra ce point, créant ainsi des ombres dans les creux de la statue et les coins des murs de fond et du sol.

La méthode de rendu en temps réel de l'occlusion ambiante consiste à effectuer un rendu différé en utilisant un tampon G. Dans ce tampon, nous stockons la position et la normale de chaque pixel. Dans le shader, nous utilisons ces informations pour calculer l'occlusion ambiante en espace écran. Par la suite, nous floutons la texture d'occlusion ambiante pour réduire le bruit généré par le faible nombre d'échantillons aléatoires. Enfin, nous utilisons cette texture d'occlusion ambiante floutée pour moduler l'éclairage ambiant de notre scène en donnant plus d'ombre aux zones occluses.

🥩 Comment générer une texture SSAO

Pour générer la texture SSAO, nous avons besoin de points d'échantillonnage aléatoires. Ces points sont générés en utilisant une texture de bruit. Chaque point d'échantillonnage a une position X et Y aléatoire dans une plage de -1 à +1, et une position Z aléatoire dans une plage de 0 à 1. Ces vecteurs d'échantillonnage sont ensuite normalisés et leur longueur est aléatoirement ajustée dans une plage de 0 à 1. Cela nous donne des points d'échantillonnage aléatoires répartis dans une région de dôme avec un rayon de 1. Nous voulons que ces points d'échantillonnage soient regroupés près de l'origine. Dans le shader, nous effectuons également une rotation aléatoire de ces points d'échantillonnage afin de les utiliser de manière plus efficace pour chaque point de rendu.

🥩 La logique de l'occlusion dans le fragment shader

Dans le fragment shader, nous calculons le facteur d'occlusion en utilisant les points d'échantillonnage générés précédemment. Pour chaque point d'échantillonnage, nous vérifions s'il est occlus en comparant sa valeur de profondeur avec celle du pixel. Si le point d'échantillonnage est occlus, nous ajoutons 1 au facteur d'occlusion. Sinon, nous ajoutons 0. Une fois que nous avons déterminé le nombre d'échantillons occlus et le nombre total d'échantillons, nous divisons le nombre d'échantillons occlus par le nombre total d'échantillons et soustrayons ce résultat à 1. Cela nous donne notre facteur d'occlusion final, qui est ensuite utilisé dans le calcul de l'éclairage ambiant.

🥩 Utilisation du bruit texturé pour générer des tangentes aléatoires

Afin de générer des tangentes aléatoires pour chaque point, nous utilisons une texture de bruit. Cette texture est de petite taille (16 pixels) et contient des valeurs de flottants 32 bits. Nous utilisons ces valeurs de bruit pour obtenir une rotation aléatoire des tangentes par rapport à la normale du point. En utilisant une combinaison de produit croisé et de multiplication matricielle, nous pouvons obtenir les tangentes et bitangentes à partir de la normale et du bruit texturé. Ces tangentes aléatoires sont nécessaires pour calculer correctement l'occlusion ambiante en espace écran pour chaque point de rendu.

🥩 Estimation de l'occlusion pour chaque échantillon

Pour estimer l'occlusion ambiante pour chaque échantillon, nous comparons la valeur de profondeur de l'échantillon avec la valeur de profondeur du pixel correspondant. Si la valeur de profondeur de l'échantillon est inférieure ou égale à la valeur de profondeur du pixel, cela signifie que l'échantillon est occlus et nous ajoutons 1 à notre facteur d'occlusion. Sinon, nous ajoutons 0. Après avoir parcouru tous les échantillons, nous divisons le nombre d'échantillons occlus par le nombre total d'échantillons pour obtenir le facteur d'occlusion final pour le pixel.

🥩 Application de l'occlusion ambiante dans le pipeline de rendu

Dans le pipeline de rendu, l'occlusion ambiante est appliquée après le rendu de la géométrie et avant le rendu de l'éclairage. Une fois que nous avons généré la texture SSAO en utilisant les échantillons aléatoires et l'occlusion ambiante, nous la floutons pour réduire le bruit. Ensuite, nous utilisons cette texture floutée pour moduler l'éclairage ambiant de notre scène. Cela donne à notre rendu un aspect plus réaliste et ajoute de la profondeur et des détails aux zones occluses.

🥩 Limitations et débats autour de l'occlusion ambiante

Il est important de noter que l'occlusion ambiante en espace écran est une approximation grossière de l'occlusion réelle. Bien qu'elle puisse ajouter du réalisme à nos scènes, elle ne correspond pas toujours à la réalité. L'occlusion lumineuse est un phénomène complexe et notre technique ne capture pas tous les détails de cette occlusion dans le monde réel. Cependant, les gens apprécient généralement l'aspect de l'occlusion ambiante car elle donne à nos scènes une apparence de profondeur et de détails supplémentaires. Il est donc important de comprendre que cette technique peut ne pas être réaliste à 100% mais qu'elle peut être utilisée de manière artistique pour améliorer visuellement nos rendus.

FAQ

Q: L'occlusion ambiante en espace écran est-elle utilisée uniquement en rendu temps réel? R: Oui, l'occlusion ambiante en espace écran est une technique couramment utilisée en rendu temps réel pour simuler l'occlusion lumineuse dans les scènes 3D interactives.

Q: Quelle est la différence entre l'occlusion ambiante en espace écran et l'occlusion ambiante basée sur les détails de la géométrie? R: L'occlusion ambiante en espace écran est une approximation grossière qui est calculée en utilisant des échantillons aléatoires et en comparant les valeurs de profondeur dans l'espace écran. L'occlusion ambiante basée sur les détails de la géométrie, en revanche, prend en compte les détails de tous les objets de la scène pour calculer l'occlusion de manière plus précise.

Q: Existe-t-il d'autres techniques d'occlusion lumineuse en rendu temps réel? R: Oui, il existe d'autres techniques d'occlusion lumineuse en rendu temps réel, telles que l'occlusion de l'écran d'espace ponctuel (SSDO) et l'occlusion de parcours de rayons (RTAO). Chaque technique a ses propres avantages et limitations, et le choix dépend des besoins spécifiques de chaque application ou jeu.

Ressources

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.