Upload
leone-grimaud
View
109
Download
1
Embed Size (px)
Citation preview
Ray Tracing Acceleration Techniques
A Survey of Ray Tracing Acceleration TechniquesJames Arvo et David Kirk
Ray Tracing on Programmable Graphics HardwareTimothy.J.Purcell, Ian Buck, Willian.R.Mark, Pat Hanrahan
DESS IMM :Duberga Jean-Christophe et Perier Christophe
Ray Tracing Acceleration Techniques
Problématique:
Le lancé de rayons est réputé comme une méthode de rendu lente, l’écartant des méthodes de rendu en temps réel.
Ray Tracing Acceleration Techniques
Plan :
I) Techniques d’accélération générales.1) hiérarchie sur les volumes
2) subdivision de l’espace
3) Réduction du nombre de rayons
- Light Buffer
- Ray Coherence
- Ray Classification
II) Accélération Hardware (Vertex et Pixel Shader).1) Tirer parti de l’architecture parallèle des GPU
2) Contraintes engendrées par les GPU
3) Exemple d’implémentation
III) Conclusion.
Ray Tracing Acceleration Techniques
Évaluation de la complexité d’un Ray tracer :
n * B + m * I
n: Nombre de rayons testés contre le volume englobant
m: Nombre de rayons qui touche le volume englobant
B: coût de chaque test d’intersection
I: coût de l’intersection
Ray Tracing Acceleration Techniques
Comment réduire le nombre de tests d’intersection entre les rayons et les
volumes ?
Ray Tracing Acceleration Techniques
- Bounding Box associée au modèle.
- Découpage de l’espace (Octree,BSP…).
Ray Tracing Acceleration Techniques
Convex Hulls:- Donne l’enveloppe convexe d’un objet
- C’est une décomposition unique
- C’est la plus petite.
Ray Tracing Acceleration Techniques
Découpage de l’espace :-Subdivision uniforme de l’espace
Ray Tracing Acceleration Techniques
Découpage de l’espace :-Subdivision non uniforme de l’espace
Ray Tracing Acceleration Techniques
Comparaisons :
Uniforme : loin d’être optimal, mais
simple à construire
Non uniforme : plus optimal et à peine plus compliqué
Ray Tracing Acceleration Techniques
Deux problèmes :-Un objet peut intersecter plusieurs voxels.
- On peut réduire le nombre de tests !
(Algo de la Mailing Box)
-On peut oublier des d’objets.- Il faut tester si l’intersection se trouve dans le voxel
courant !
Ray Tracing Acceleration Techniques
Ray Tracing Acceleration Techniques
Directional techniques:
- Direction Cube
- Ray coherence
- Light Buffer
- Ray classification
Ray Tracing Acceleration Techniques
Ray Tracing Acceleration Techniques
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader).
1) Tirer parti de l’architecture parallèle des GPU :
Les calculs sur les rayons sont relativement cours mais très nombreux.
On pourrait donc imaginer de les exécuter en parallèle grâce à l’architecture en pipeline des cartes graphiques.
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader).
2) Contraintes engendrées par les GPU :
Les GPU sont très spécialisés, ils ont donc un très petit jeu d’instructions et ne supportent pas les branchements (pour l’instant)
Les structures de données sont restreintes (Vertex, Texture…), il n’y a pas de structure prévue pour les voxels ou les rayons.
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader).
3) Exemple d’implémentation Timothy.J.Purcell, Ian Buck, Willian.R.Mark et Pat Hanrahan
proposent une méthode pour implémenter un ray tracer dans un programme de Pixel Shader qui sera donc exécuté sur la carte graphique et tirera parti de son architecture parallèle.
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader).
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader). Organisation des structures de données (tenant compte des contraintes vues précédemment)
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader).
Deux versions du programme :- Version avec boucle en une seule passe.
- Version sans boucle en multi passes.
Ray Tracing Acceleration Techniques
Accélération Hardware (Vertex et Pixel Shader).
Ray Tracing Acceleration Techniques
Conclusion :
Le lancé de rayons en temps réel, bientôt une réalité ?
Wald et al. 20M tri/sec sur un PIII 800Mhz
Carr. Et al. 114M tri/sec sur ATI 8500 (nbre entiers)
Dans ce papier:
56M tri/sec sans branchements
220M tri/sec avec branchements
Il reste le problème des scènes dynamiques.