Qu'est-ce qu'une ombre OpenGL®?

Une ombre de bibliothèque graphique ouverte (OpenGL®) est une approximation visuelle dans une scène OpenGL® en trois dimensions (3D) de la façon dont une ombre serait jetée dans la vie réelle dans des conditions d'éclairage similaires. Les ombres sont une caractéristique visuelle complexe à mettre en œuvre dans OpenGL®, en grande partie parce qu'il n'y a pas de support inné pour le casting des ombres dans une scène. Il existe plutôt une variété de techniques qui peuvent être utilisées pour créer des ombres à partir des objets et de la géométrie dans une scène en utilisant divers outils, tels que les différents tampons, shaders disponibles et, dans certains cas, des extensions qui donnent accès à des fonctionnalités spéciales sur certaines cartes graphiques. Dans la plupart des cas, la qualité, la précision et la vitesse du rendu de l'ombre OpenGL® sont directement liées à la puissance de traitement et à la mémoire du matériel graphique présent dans un ordinateur ou un appareil. Certaines des méthodes les plus populaires de mise en œuvre d'une ombre OpenGL® comprennent les volumes d'ombre, la cartographie des ombres et le traçage des rayons.

La création d'une application qui a un support ombre OpenGL® nécessite des connaissances mathématiques et une compréhension approfondie du fonctionnement d'OpenGL®. OpenGL® est largement utilisé pour créer des scènes 3D dynamiques et rendues en temps réel, de sorte que les algorithmes utilisés pour créer des ombres doivent non seulement être optimisés pour la vitesse, mais doivent également être soigneusement mesurés pour leur consommation de ressources et toutes les perturbations qui pourraient être causées dans la pipeline graphique utilisée pour le rendu. Pour ces raisons, la méthode la plus élémentaire de création d'une ombre, appelée traçage des rayons, n'est souvent pas pratique pour les scènes 3D complètes, car cela peut prendre très longtemps.

Le traçage des rayons suit essentiellement une ligne ou un rayon imaginaire du plan de visualisation ou de la position de la caméra à travers une scène à la surface d'un objet, puis calcule la couleur de la surface en fonction de la position d'une ou plusieurs sources lumineuses et autres facteurs. Pendant le processus de rastérisation, où leLa scène 3D est attirée par une surface bidimensionnelle (2D) afin qu'elle puisse être affichée, le processus de traçage des rayons doit être effectué sur chaque pixel qui est dessiné et, en particulier avec des textures ou d'autres propriétés de surface, pourrait avoir besoin d'évaluer les mêmes pixels plusieurs fois. Cela signifie que le traçage des rayons en temps réel, bien qu'il rendrait avec précision les ombres, n'est généralement pas pratique.

Une autre méthode qui peut être utilisée pour créer une ombre OpenGL® est connue sous le nom de mappage de l'ombre. Cette méthode utilise la profondeur ou le tampon de pochoir pour rendre une scène de l'angle de la source lumineuse comme une série de distances de la source lumineuse aux surfaces de différents objets dans la scène. La scène est ensuite rendue une deuxième fois à partir de l'angle de vision correct, en vérifiant si chaque pixel se situe dans une certaine plage de distance dans le tampon, indiquant si le pixel est allumé ou ombré. L'utilisation du mappage de l'ombre peut être à forte intensité de mémoire et, avec des scènes qui ont plus d'une source lumineuse, peuvent impliquer MAking plusieurs cartes sous plusieurs angles.

Les volumes d'ombre sont un moyen de créer une ombre OpenGL® plus précise que certaines autres méthodes, mais il présente ses propres problèmes. Un volume d'ombre est essentiellement un morceau de géométrie invisible dans une scène qui s'étend de la surface éclairée d'un objet loin de la source lumineuse. Ce volume peut être vérifié par rapport à d'autres objets pour voir s'ils tombent dans l'ombre de la surface à partir de laquelle le volume est originaire. Cette procédure peut être très complexe et finalement créer des artefacts visuels lorsqu'il est optimisé pour la vitesse.

DANS D'AUTRES LANGUES