40
Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Embed Size (px)

Citation preview

Page 1: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Lancer de rayons interactif

Réunion équipe graphique 06/02/2003

Page 2: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Plan

• Rappels sur le lancer de rayons

• vers un lancer de rayons interactif

Page 3: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

I 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

O

P

I1

I2

I1 < I2 P =

Page 4: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Calcul 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

=> prise en compte des ombres ...

Page 5: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Illustration

O

Rayons d ’ombrage

Source 1

Source 2P

I(P) = I(Source1) + 0 . I(Source2)

Page 6: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Prise en compte des reflets

O

Source 1

Source 2P

I(P) = I(Source1) + 0 . I(Source2) + I(P’)

P’

Rayon réfléchi

Réflexions spéculaires uniquement

Page 7: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Arbre de rayons

O

P

P’

P’’

S1 Sn….

S1 Sn….

S1 Sn….

Rayon primaire

Rayons réfléchis

Réflexions uniquement

O

P

P’ S1 Sn….

S1 Sn….P’’’P’’

S1 Sn…. S1 Sn

….

Rayons transmis

Réflexions + réfraction

Page 8: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Arrêt du processus

• I(P(n)) < seuil minimal– l ’apport des rayons réfléchis/réfractés suivants

est considéré comme négligeable

• n < profondeur maximale– évite les boucles infinies

• en général, combinaison des deux

Page 9: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Coû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 ((Ns+2) 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

Page 10: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Réduction du coût

• Simplifier le calcul de chaque intersection– gain limités

• Réduire le nombre d’intersections à calculer– gain importants si Ni << 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

Page 11: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Structures 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

Page 12: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Les 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

Pas d ’intersection avec l ’englobant

Intersection avec l ’englobant mais pas avec l ’objet

Intersection avec l ’englobant et avec l ’objet

Page 13: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Hiérarchie de volumes englobants

• Généralisation du principe des englobants à plusieurs niveaux– arborescence de volumes englobants

Page 14: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Subdivision 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

Page 15: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Illustration

Page 16: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Avantages / 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 => + de 4N3 octets

– en général beaucoup de voxels sont vides

Page 17: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Subdivisions irrégulières

• Objectif – Réduire le trop grand nombre de voxels vides

• Moyen– Ne pas découper l’espace de manière régulière– Utiliser des voxels de taille différente

• Différentes approches :– Arbres « Octrees »– Arbres « BSP »

Page 18: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Les octrees• Définition :

– Octree = arbre possédant 8 fils

• Principe :– Chaque fils représente un volume parallélépipédique de

l’espace– Ce volume contient

• Soit un nombre maximum d’objets (fixé à l’avance)• 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

Page 19: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Illustration

N objets (N<MAX)=

Page 20: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Avantages / inconvénients

• Avantages :– Réduction du nombre de voxels (on regroupe

de nombreux voxels vides au sein d’un seul volume)

• Inconvénients :– Suivi du rayon plus difficile (les volumes

traversés successivement ne sont pas identiques)

Exemple 2D

Page 21: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Les 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

Page 22: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Illustration 2D1 objet : stop

vide : stop

1 objet : stop

1 objet : stop 1 objet : stop

Page 23: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Cependant ...

• 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 ???

Page 24: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

II. 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)

Page 25: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Moyens 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

Page 26: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Approche 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

Page 27: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Le problème des données

• LR : « embarrassingly parallel »– le calcul d’un 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 d’un pixel / d’une zone(propagation des arbres de rayons dans la scène)

• Classiquement : mémoire réduite sur esclaves => accroissement des communications

Page 28: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Arbre BSPprincipal

Arbres BSP secondaires

Arbre BSPglobal

Distribution des données (1)

Page 29: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Esclave j

Distribution des données (2)

Absent !

Arbres BSP secondaires

Arbre BSP primaire

Maî

tre

Arbre BSP primaire

Cache pour quelques arbres BSP secondaires

Esclave i

envoyerBSP(x)

x

Page 30: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Distribution 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

Page 31: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Optimisations 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 d’accès aux données nécessaires– prefetching (nécessité d ’algos simples ….)

Page 32: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Optimisations 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

Page 33: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Instructions SSE

Registres 64 bits Registres 256 bits

x

y

x+y

x1

y1

x1+y1

x2

y2

x2+y2

x3

y3

x3+y3

x4

y4

x4+y4

+

=

+

=

Page 34: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Application 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

Page 35: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Cohérence et distribution

• Les pixels calculés par un processeur sont corrélés :– zone 32x32 => 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)

Page 36: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Quelques 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)

Page 37: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Commentaires (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

Page 38: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Commentaires (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

Page 39: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Lancer de rayons

Tracé de chemins

Page 40: Lancer de rayons interactif Réunion équipe graphique 06/02/2003

Commentaires (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) ?