Qu'est-ce qu'une ombre OpenGL®?
Une ombre Open Graphics Library® (OpenGL®) est une approximation visuelle dans une scène OpenGL® tridimensionnelle (3D) de la manière dont une ombre serait projetée dans la vie réelle dans des conditions d'éclairage similaires. Les ombres sont une fonctionnalité visuelle complexe à implémenter dans OpenGL®, en grande partie parce qu’il n’ya pas de prise en charge innée de la projection d’ombres dans une scène. Il existe à la place diverses techniques permettant de créer des ombres à partir d'objets et de la géométrie d'une scène à l'aide de divers outils, tels que les différents tampons disponibles, les shaders et, dans certains cas, les extensions donnant accès à des fonctionnalités spéciales sur certains graphiques. cartes. Dans la plupart des cas, la qualité, la précision et la rapidité du rendu des ombres OpenGL® sont directement liées à la puissance de traitement et à la mémoire du matériel graphique présent dans un ordinateur ou un périphérique. Parmi les méthodes les plus populaires d'implémentation d'une ombre OpenGL®, citons les volumes d'ombre, le mappage d'ombre et le lancer de rayons.
La création d'une application prenant en charge OpenGL® shadow nécessite des connaissances en mathématiques et une connaissance approfondie du fonctionnement d'OpenGL®. OpenGL® est largement utilisé pour créer des scènes 3D dynamiques et restituées en temps réel. Par conséquent, les algorithmes utilisés pour créer des ombres doivent non seulement être optimisés en termes de rapidité, mais doivent également être mesurés avec soin en fonction de leur consommation de ressources et de toute perturbation peut être provoqué dans le pipeline graphique utilisé pour le rendu. Pour ces raisons, la méthode la plus élémentaire de création d'une ombre, appelée lancer de rayons, est souvent peu pratique pour les scènes en 3D, car elle peut durer très longtemps.
Le lancer de rayons suit essentiellement une ligne imaginaire, ou rayon, du plan de vision ou de la position de la caméra à travers une scène jusqu'à la surface d'un objet, puis calcule la couleur de la surface en fonction de la position d'une ou plusieurs sources de lumière et d'autres facteurs. Lors du processus de pixellisation, lorsque la scène 3D est dessinée sur une surface bidimensionnelle (2D) afin de pouvoir être affichée, le processus de traçage de rayons doit être effectué sur chaque pixel dessiné et, en particulier avec les textures ou autres. propriétés de surface, il peut être nécessaire d’évaluer plusieurs fois les mêmes pixels. Cela signifie que le traçage des rayons en temps réel, bien qu'il permette de restituer les ombres avec précision, n'est généralement pas pratique.
Une autre méthode pouvant être utilisée pour créer une ombre OpenGL® est appelée mappage des ombres. Cette méthode utilise le tampon de profondeur ou de stencil pour rendre une scène à partir de l'angle de la source de lumière sous forme d'une série de distances de la source de lumière aux surfaces d'objets différents dans la scène. La scène est ensuite restituée une seconde fois sous l'angle de vue correct, en vérifiant si chaque pixel se situe dans une certaine plage de distance dans la mémoire tampon, indiquant si le pixel est allumé ou ombré. L'utilisation du mappage des ombres peut nécessiter beaucoup de mémoire et, dans le cas de scènes comportant plusieurs sources de lumière, il peut être nécessaire de créer plusieurs cartes sous plusieurs angles.
Les volumes d'ombres permettent de créer une ombre OpenGL® plus précise que d'autres méthodes, mais elle pose ses propres problèmes. Un volume d'ombre est essentiellement un élément invisible de la géométrie d'une scène qui se dilate à partir de la surface éclairée d'un objet loin de la source de lumière. Ce volume peut être comparé à d'autres objets pour voir s'ils tombent dans l'ombre de la surface d'origine du volume. Cette procédure peut être très complexe et finalement créer des artefacts visuels optimisée pour la vitesse.