Title: Lancer de rayons interactif
1Lancer de rayons interactif
- Réunion équipe graphique 06/02/2003
2Plan
- Rappels sur le lancer de rayons
- vers un lancer de rayons interactif
3I Rappels sur le lancer de rayons
- Initialement
- algorithme d élimination des parties cachées
- Principe
- pour chaque pixel P
- lancer un rayon d origine O et de direction OP
dans la scène - calculer les intersections entre le rayon et les
objets - conserver l objet le plus proche
4Calcul de l éclairage
- Éclairage local/direct
- Prise en compte de la visibilité de chaque source
- lancer d un rayon d ombrage depuis le point
d intersection vers chaque source - si aucun obstacle
- la source est visible
- on ajoute sa contribution
- si il existe un obstacle (intersection avec un
objet de la scène) - aucune contribution de la source
- gt prise en compte des ombres ...
5Illustration
Source 1
Rayons d ombrage
Source 2
P
O
I(P) a . I(Source1) 0 . I(Source2)
6Prise en compte des reflets
Source 1
Réflexions spéculaires uniquement
Source 2
P
P
O
Rayon réfléchi
I(P) a . I(Source1) 0 . I(Source2) I(P)
7Arbre de rayons
Réflexions uniquement
Rayon primaire
Rayons réfléchis
8Arrêt du processus
- I(P(n)) lt seuil minimal
- l apport des rayons réfléchis/réfractés suivants
est considéré comme négligeable - n lt profondeur maximale
- évite les boucles infinies
- en général, combinaison des deux
9Coût de calcul
- Algorithme basé sur le calcul des intersections
entre les rayons et les objets composant la scène - Approche naïve
- calcul de toutes les intersections entre chaque
rayon et tous les objets de la scène - coût (N2 x No) x ((Ns2) x No)P
- N2 nombre de pixels de l image ( nombre de
rayons primaires) - No nombre d objets dans la scène
- Ns nombre de source dans la scène
- P profondeur maximale de l arbre
10Réduction du coût
- Simplifier le calcul de chaque intersection
- gain limités
- Réduire le nombre dintersections à calculer
- gain importants si Ni ltlt No
- utilisation de structures de données spécialisées
- Distribuer les calculs
- efficace sur de petites scènes (duplication de la
scène) - plus complexe sur des scènes de grande taille
11Structures accélératrices
- Nombreuses et basées sur le regroupement des
primitives géométriques partageant un espace
commun - volumes englobants
- subdivisions spatiales
- régulières
- irrégulières
12Les volumes englobants
- Principe
- entourer un objet complexe par un objet plus
simple appelé englobant
- 2 étapes pour le calcul d intersection
- intersection avec l englobant
- si intersection, calcul de l intersection avec
l objet interne - si pas d intersection, aucune intersection
possible avec l objet interne
13Hiérarchie de volumes englobants
- Généralisation du principe des englobants à
plusieurs niveaux - arborescence de volumes englobants
14Subdivision régulière
- Tout le volume englobant la scène est découpé en
N x N x N voxels (volume elements) - Chaque voxel contient la liste des objets qui se
trouvent dans l espace qu il représente - Il faut calculer le trajet du rayon dans le
volume de voxels - Utilisation d un algorithme de tracé de droite
3D de type bresenham
15Illustration
16Avantages / Inconvénients
- Avantages
- découpage fin
- réduction importante du nombre d objets à
traiter - suivi incrémental de la trajectoire du rayon
- simplicité
- rapidité
- Inconvénients
- espace mémoire supplémentaire important
- N3 voxels au moins un pointeur par voxel gt
de 4N3 octets - en général beaucoup de voxels sont vides
17Subdivisions irrégulières
- Objectif
- Réduire le trop grand nombre de voxels vides
- Moyen
- Ne pas découper lespace de manière régulière
- Utiliser des voxels de taille différente
- Différentes approches
- Arbres Octrees
- Arbres BSP
18Les octrees
- Définition
- Octree arbre possédant 8 fils
- Principe
- Chaque fils représente un volume
parallélépipédique de lespace - Ce volume contient
- Soit un nombre maximum dobjets (fixé à lavance)
- Soit rien
- Construction processus récursif
- À chaque étape, on découpe un volume en 8 sous
volumes identiques (division par 2 selon chaque
axe) - On teste les conditions de contenu pour chaque
sous volume
19Illustration
20Avantages / inconvénients
- Avantages
- Réduction du nombre de voxels (on regroupe de
nombreux voxels vides au sein dun seul volume) - Inconvénients
- Suivi du rayon plus difficile (les volumes
traversés successivement ne sont pas identiques)
21Les arbres BSP
- BSP Binary Space Partition
- Amélioration des octrees
- On ne découpe pas systématiquement en 8
- On découpe en 2, en variant cycliquement le plan
de découpe - Mêmes critères pour le découpage
- Volume contenant plus de MAX objets on découpe
- Sinon on ne découpe pas
- Avantage réduction du nombre de voxels
- Inconvénient suivi difficile des rayons
22Illustration 2D
23Cependant ...
- Les performances obtenues restent loin de la
notion d interactivité - quelques secondes de calcul pour une scène de
très faible complexité - plusieurs minutes à plusieurs heures dès lors que
la scène se complexifie - Comment obtenir un lancer de rayons interactif,
voire temps réel ???
24II. Vers un lancer de rayons interactif
- Références
- Interactive distributed ray tracing of highly
complex models , Wald et al, Rendering
Techniques 2001 - Interactive rendering with coherent ray
tracing , Wald et al, Eurographics 2001 - Objectifs
- utiliser le LR sur des très grosses scènes
(plusieurs dizaines de millions de triangles) - obtenir une visualisation interactive (plusieurs
images par seconde)
25Moyens mis en uvre
- Distribution des calculs
- Copie unique des données
- Optimisation poussée du lancer de rayons
- Pas de pré-calculs coûteux sur la scène, tq
- indexation spatiale
- niveaux de détail
- simplification de la géométrie
26Approche distribuée
- Approche relativement classique
- un maître gère la distribution des calculs et
l affichage - N esclaves ont en charge les calculs
d intersection - Plus précisément
- chaque esclave calcule une zone image de taille
32x32 qui lui est affectée dynamiquement par le
maître
27Le problème des données
- LR embarrassingly parallel
- le calcul dun pixel est indépendant de celui des
autres pixels - même remarque pour une zone 32x32
- Mais
- nécessité de disposer a priori de toute la scène
pour les calculs dun pixel / dune
zone(propagation des arbres de rayons dans la
scène) - Classiquement mémoire réduite sur esclaves gt
accroissement des communications
28Distribution des données (1)
29Distribution des données (2)
Absent !
30Distribution des données (suite)
- Gestion du cache LRU
- Compression des arbres BSP secondaires
- Gestion asynchrone des rayons
- mise en attente en cas de données manquantes
- Séparation des données
- géométriques calculs d intersection
uniquement - photométriques pour l illumination d un seul
point - réduit les communications
- améliore l utilisation du cache
31Optimisations du lancer de rayons (1)
- Réduction de la complexité du code
- objectif optimiser l utilisation du pipeline
matériel du processeur - moyens
- utiliser un seul type de primitive (triangle)
- choix du BSPTree (code de traversée simple)
- réduire les conditions au niveau du code
- Gestion des caches
- réduire les temps daccès aux données nécessaires
- prefetching (nécessité d algos simples .)
32Optimisations du lancer de rayons (2)
- Gestion des cohérences entre rayons
- des rayons voisins ont un comportement similaire
lors de leur trajet dans la scène - application aux rayons primaires et d ombrage
- Cette forme de cohérence peut être exploitée
- au niveau matériel
- routines SSE, réduction des accès mémoires aux
données communes, amélioration de l utilisation
du cache - dans la gestion de la distribution des calculs
33Instructions SSE
Registres 64 bits
Registres 256 bits
x
x1
x2
x3
x4
y
y1
y2
y3
y4
xy
x1y1
x2y2
x3y3
x4y4
34Application au lancer de rayons
- Calcul simultané de plusieurs intersections
- gain de 3.5 à 3.7
- Parcours du BSPTree en parallèle pour 4 rayons
- traversée 2 à 3 fois plus coûteuse que le calcul
d intersection (sans SSE) - calculs liés à la traversée facilement
parallélisables pour le BSP - Calcul simultané de l illumination
- réorganisation des calculs en cas de matériaux
différents - lancer des rayons d ombrage vers chaque source
en SSE
35Cohérence et distribution
- Les pixels calculés par un processeur sont
corrélés - zone 32x32 gt comportement similaire des
rayons - favorise la localité des BSPTrees nécessaires au
calculs d intersection - déplacement (modéré) de la caméra
- distribution de chaque zone au processeur
l ayant calculée à l image précédente (localité
des données)
36Quelques résultats
- Configuration
- 7 bi-processeurs P3
- scène de 50 millions de facettes
- images 640 x 480
- 1 rayon par pixel
- pas de rayons d ombrage ni de réflexions
- Performances
- entre 3 et 5 images par seconde (sans SSE)
- entre 6 et 12 images par seconde (avec SSE -
estimation)
37Commentaires (1)
- Limitations
- restriction des réflexions
- la cohérence entre rayons décroît lorsque l on
descend dans les arbres de rayons - les résultats présentés sont essentiellement liés
aux rayons primaires et d ombrage - les résultats restent convenables si les zones de
forte réflexion restent petites sur l image
38Commentaires (2)
- Intérêts par rapport au tracé de chemin
- basé sur le tracé de rayons
- doit pouvoir être accéléré par des techniques
similaires - écriture fine du code
- distribution des calculs
- Mais nombreux problèmes
- essentiellement liés au postulat de cohérence
39(No Transcript)
40Commentaires (3)
- SSE
- a priori difficulté de trouver des rayons ayant
une trajectoire proche - mais
- applicable aux rayons primaires
- applicable aux rayons d ombrage de niveau 1
(PTNE) - envisager une bufferisation des rayons ?
- Distribution
- efficacité liée à la cohérence de traversée des
arbres BSP - perdue du fait des réflexions aléatoires
- envisager une bufferisation des rayons (bis) ?