Salutations à tous les lecteurs. J'ai décidé de résumer et de traduire une magnifique série d'articles "Ray-Casting Tutorial For Game Development And Other Purposes" de F. Permadi sur l'étude de la technologie de ray-casting.
Cette publication aborde et combine les articles originaux Qu'est-ce que Ray-Casting et Ray-Casting vs Ray-Tracing For Game Development .
Il est à noter que dans le but de créer un moteur pseudo-tridimensionnel (sur lequel vous pouvez également écrire un article), j'ai étudié en profondeur ce tutoriel.
Eh bien ... Commençons!
Qu'est-ce que la diffusion de rayons?
La projection de rayons (ci-après appelée casting) est une technologie qui convertit un ensemble limité de données (la carte la plus simplifiée ou le plan d'étage) en une projection 3D en «projetant des rayons» du point de vue sur tout le champ de vision. Par exemple, l'image ci-dessous montre comment lancer transforme quelque chose de 2D A en quelque chose de presque 3D B.
Lancer de rayons et lancer de rayons
Tout comme le lancer de rayons , le lancer de rayons «définit la partie visible d'une surface en projetant des rayons de lumière imaginaires du point de vue vers un objet de la scène».
Les deux définitions précédentes donnent l'impression que lancer et tracer sont la même chose. En fait, certains livres utilisent les deux termes de manière interchangeable. Mais néanmoins, du point de vue des programmeurs de gamedev, lancer des rayons doit être considéré comme un cas particulier de mise en œuvre du traçage.
Lancer plus vite que tracer. Ceci est possible car il utilise certaines contraintes géométriques pour accélérer le processus de rendu. Par exemple, les murs sont toujours perpendiculaires au sol (cela peut être vu dans des jeux comme Doom ou Wolfenstein 3D). S'il n'y avait pas de telles restrictions, la technologie du lancer ne serait pas possible.
Les paragraphes suivants fournissent une comparaison globale du lancer et du traçage. L'essentiel à retenir est que «le lancer utilise moins de rayons que le traçage, en raison de certaines contraintes géométriques». Ou bien que «le lancer est une implémentation spécialisée du traçage».
Principe
Lancer : Les rayons sont lancés et se déplacent en groupes en fonction de certaines contraintes géométriques. Par exemple, sur un écran avec une résolution de 320x200, le "générateur de rayons" n'en libérera que 320 morceaux (on obtient ce nombre de la conséquence qu'un écran d'une largeur de 320 pixels comporte 320 colonnes verticales).
Trace : chaque rayon est calculé séparément, c'est-à-dire que chaque point sur l'écran du moniteur (généralement un pixel) est tracé par l'un de ses rayons. Par exemple, sur un écran avec une résolution de 320x200, nous avons besoin de 64 mille (320 * 200 = 64000) rayons, ce qui est 200 fois plus lent que le lancer.
Formule
En règle générale, lors du lancer, des erreurs de calcul sont autorisées. Lors du routage, tout doit être aussi précis que possible.
La vitesse
Le lancement est plusieurs fois plus rapide que le traçage et convient aux processus en temps réel. Le traçage ne convient en aucun cas (sauf si nous avons un PC avec une fréquence de 500 GHz).
Qualité
En cas de chute, nous obtenons une image de qualité moyenne / mauvaise. Vous pouvez remarquer la division en éléments de bloc. Lors du traçage, l'image est aussi réaliste que possible - parfois même trop.
Une scène de Wolfenstein 3D. Notez que l'image est divisée en blocs rectangulaires. Les objets (armes) et ennemis (chien) sont simplement des bitmaps transparents qui sont mis à l'échelle et dessinés sur l'arrière-plan.
Une scène du jeu 7th Guest. Le résultat du rendu est incroyable. Cependant, les mouvements du joueur sont limités à des chemins préalablement définis (cela est dû au fait que le nombre d'images pré-rendues est limité).
Monde extérieur
Lors du lancer, nous sommes géométriquement limités et seules des formes simples sont disponibles. Lors du traçage, n'importe quelle forme peut être rendue.
Mémoire
Lancer : les images rendues ne sont pas enregistrées sur le disque. Habituellement, seule la carte de la scène elle-même est stockée sur le support et les images correspondantes sont générées à la volée.
Trace : Les images rendues sont enregistrées sur le disque et chargées à partir de là si nécessaire. Actuellement, il n'existe aucun composant matériel de ce type capable de rendre le résultat du lancer de rayons à la volée.
Exemples de
Lancement:
- Wolfenstein 3D (logiciel iD)
- Shadow Caster (Corbeau)
- Arène (Bethesda)
- Doom (logiciel iD)
- Forces obscures (LucasArts)
Trace:
- 7e invité (Trilobyte)
- Chemin critique (Mechadeus)
- 11e heure (trilobyte)
- Myst (cyan)
- Cyberia (Xatrix)