RTEngine

559 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
559
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
89
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

RTEngine

  1. 1. RAYTRACER Amaury Patard, Ahmed BougachaMickael Rodrigues, Aymeric Beaumet
  2. 2. XMLGRAPHICSMANAGER
  3. 3. CAMERASSAMPLING
  4. 4. MATERIAUXRENDERPASS
  5. 5. OBJETSMESHES
  6. 6. FONCTIONNEMENT PARALLELISATION
  7. 7. RENDUS
  8. 8. PRESENTATION
  9. 9. PRESENTATIONraytracer en OOCpermet un rendu rapide, basé sur le concept de renderpasspermet aussi le pathtracing
  10. 10. XMLfichier de scène
  11. 11. XMLUsage: ./rt scene.xml
  12. 12. XML<scene>    <image>        <camera type="...." />        <rendering size="..." samples="..." />    </image>    <renderpass>        <pass type="..." />    </renderpass>    <materials>        <material type="..." id="..." />    </materials>    <objects>        <object type="..." id_mat="..." coor="..." rot="..." />    </objects>    <lights>        <light type="..." radiance="..."/>    </lights></scene>
  13. 13. GRAPHICSMANAGER
  14. 14. GRAPHICSMANAGERUsage : ./rt scene.xml Display:[mlx|sdl|bmp|none]La sortie se fait grâce au GraphicsManagerIl est très facile den ajouter (par exemple: ascii, png, GTK+, etc...)
  15. 15. GRAPHICSMANAGER
  16. 16. GRAPHICSMANAGER• init(): initialise la mlx, la sdl ou autre• display(): appeléeaprès chaque renderpass afin de mettre a jour limage rendue• end(): préviensle manager quil ny aura plus de mise-à-jour, (mlx: appel de mlx_loop, bmp: sauvegarde de limage)
  17. 17. GRAPHICSMANAGERDummyGraphicsManager• Lorsque le rt est compilé avec NO_GRAPHICS (ne nécessite pas de serveur X)• Lorsquun client ne veut pas daffichage
  18. 18. CAMERAS"A raytracer is never really good unless the camera is an eye in the head of a poet." - ORSON WELLES
  19. 19. CAMERAS
  20. 20. CAMERAS pinhole
  21. 21. PINHOLE
  22. 22. CAMERAS fisheye
  23. 23. FISHEYE
  24. 24. CAMERAS spherical
  25. 25. SPHERICAL
  26. 26. CAMERAS grand angles
  27. 27. GRAND ANGLES - SPHERICAL / FISHEYESpherical @ 180x180 ° Fisheye @ 360 °
  28. 28. SAMPLING"Yes, sampling has changed not just my way of raytracing and composing" - KLAUS SCHULZE
  29. 29. SAMPLINGrépartir des points dans un carré unitaireles mapper sur une sphère - ou un hemisphere - unitaire
  30. 30. SAMPLINGLes points doivent être:• uniformément distribués en 2D (mais pas regulièrement)• uniformément répartis sur les axes x/y• assez espacés
  31. 31. SAMPLING
  32. 32. SAMPLINGregular random jittered
  33. 33. SAMPLINGDe nombreuses techniques sont mises en place pour éviter lespatterns:• utilisation dun nombre premier de sets de samples• mélange dans lordre dutilisation des sets• utilisation de samplers différents pour les différentes entités• ...
  34. 34. SAMPLING FAILSConséquences désastreuses (cf. images suivantes)
  35. 35. SAMPLING FAILSX-Point star patterns(hemisphere mapping coefficient: e = 1.0) ambient occlusion path tracing Regular @4spp x 83sets BRDF: Jittered @900spp x 1777sets AreaLight: Jittered @100spp x 1777sets
  36. 36. MATERIAUX"Sometimes you dont choose the material; the material chooses you." - JAMES D. HOUSTON
  37. 37. MATERIAUX UNIFORMES• matte• phong• glossy reflective• reflective• transparent
  38. 38. MATERIAUX TEXTURES• procédurales• bruits• images• bump-mapping
  39. 39. MATERIAUX EMISSIFS• emissive
  40. 40. MATERIAUX
  41. 41. MATERIAUX BRDF - BTDF
  42. 42. BRDF-BTDF
  43. 43. MATERIAUX materiaux
  44. 44. MATERIAUX matte
  45. 45. MATTERéflection diffuseBRDF Lambertian:- Réflectance de Lambert- Isotropique- Loi du cosinus de Lambert
  46. 46. MATERIAUX phong
  47. 47. PHONGspecular highlightsmodel de Phong
  48. 48. MATERIAUX reflective
  49. 49. REFLECTIVEspecular reflection(réflection parfaite)
  50. 50. REFLECTIVE CAUSTIQUES Photographie d’une néphroïdeNéphroïde rendue en path tracing
  51. 51. MATERIAUX glossy reflective
  52. 52. GLOSSY REFLECTIVEleffet glossy est reproduiten appliquant des samplesmappés sur hemisphere ala direction de refléxion
  53. 53. MATERIAUX transparent
  54. 54. TRANSPARENTtransparence physiquementcorrectedépend de :- coefficient de réfraction λ- coefficient de transparence- coefficient de reflexion
  55. 55. TRANSPARENTλ=0 λ=1λ = 1.1 λ = 1.5
  56. 56. TRANSPARENT CAUSTIQUES Caustiques rendues en path tracing ior = 1.10 5 area lights rectangulairesCaustique rendue en path tracing ior = 1.14 1 area light rectangulaire
  57. 57. MATERIAUX procedural
  58. 58. PROCEDURALla couleur est modifiée enfonction des coordonnées despoints d’intersection
  59. 59. MATERIAUX bruit
  60. 60. BRUITla couleur est modifiée enfonction d’un bruit cohérentobtenu à partir des coordonéesdes points d’intersection
  61. 61. MATERIAUX bump mapping
  62. 62. BUMP MAPPINGla modification de la normalesur un ou plusieurs axesentraîne une modification dela luminosité et un effet derelief
  63. 63. MATERIAUX image mapping
  64. 64. IMAGE MAPPINGÀ partir des coordonnées3D(x, y, z) on obtient lescoordonnées sphérique(theta, phi) qui nous serventensuite à obtenir descoordonnées 2D (u, v) pouraccéder a la couleur de latexture.
  65. 65. LUMIERES"Every moment of light and dark is a miracle." - WALT WHITMAN
  66. 66. LUMIERES
  67. 67. LUMIERES point
  68. 68. POINT
  69. 69. LUMIERES ambient
  70. 70. AMBIENT
  71. 71. LUMIERES directional
  72. 72. DIRECTIONAL
  73. 73. LUMIERES environment
  74. 74. ENVIRONMENT
  75. 75. LUMIERES area
  76. 76. AREAPath tracing @ 100x257 AreaLight @ 400x257
  77. 77. LUMIERES fake spherical
  78. 78. FAKE SPHERICAL
  79. 79. RENDERPASS"Always render more and better images than is expected of you, no matter what your task may be." - OG MANDINO
  80. 80. RENDERPASStâche spécifique appliquée à l’ensemble des pixels de l’imageassociée à un (voire plusieurs) buffer(s)parfois associée à un matériel (texture, transparence)
  81. 81. RENDERPASSpermet:• d’ajouter très facilement de nouvelles techniques• d’activer/désactiver très facilement les techniques utilisées• de pouvoir voir les différentes étapes du rendu
  82. 82. RENDERPASS
  83. 83. RENDERPASS buffers
  84. 84. BUFFERS• primordiaux• associent une valeur (vecteur, rayon, couleur, radiance, ..) à une coordonnée dans l’image• permettent d’implémenter des techniques en screen space (SSAO, ..)
  85. 85. GBUFFERensemble de buffers fondamentaux normalbuffer colorbuffer raybuffer materialbuffer depthbuffer (zbuffer) hitpointbuffer
  86. 86. BUFFERS
  87. 87. RENDERPASS renderpasses
  88. 88. RENDERPASS first renderpass
  89. 89. FIRST RENDERPASSremplit tout les buffersfondamentaux (gbuffer)obligatoire pour lamajorité des autresrenderpasses
  90. 90. RENDERPASS light
  91. 91. LIGHTremplit un lightbuffer pourchaque lumièreobligatoire pour certainesrenderpass (ombres, AO,SSAO, ..)
  92. 92. RENDERPASS shadow
  93. 93. SHADOWéteint certains pixels deslightbuffers
  94. 94. SHADOW SOFT SHADOWINGatténue les lightbuffersse base sur la distance du pointoccludé à la lumière
  95. 95. RENDERPASS oversampling
  96. 96. OVERSAMPLINGpour éviter laliasing, il faut répartir plusieurs samples (lancer plusieurs rayons) dans un même pixel Laliasing qui a lieu quand un seul sample est 25 samples dans un pixel utilisé par pixel (25 spp / Jittered)
  97. 97. OVERSAMPLING1 spp 25 spp
  98. 98. RENDERPASSscreen space ambient occlusion
  99. 99. SSAO• résultats similaires à de lambient occlusion, en screen-space• technologie récente (2007 - à la pointe du rendu 3D realtime, introduite par CryTek, pour CryEngine 2+)• rendu instantané• vitesse constante (ne dépend pas de la géométrie de la scène)• ultra-configurable, donc plusieurs effets possibles• beaucoup plus adapté aux scènes d’intérieur• permet de gagner énormément en réalisme, avec un coût négligeable en performances
  100. 100. SSAOtechnique ultra-configurable: nombre de samples (coordonnées adjacentes ou les normales, coordonnées, et profondeurs seront lues) rayon de sampling (pixels) falloff (intensité minimale, voir fonctions {,smooth}step de GLSL (OpenGL) et HLSL (DirectX)) intensité coefficient multiplicateur taille du kernel du flou gaussien
  101. 101. SSAOambient light uniquementrendu instantané Sans SSAO Avec SSAO Avec SSAO MultiJittered @16x83 MultiJittered @16x83 falloff = 0.1, rad = 1px falloff = 0, rad = 2.5px
  102. 102. SSAOambient light uniquementrendu instantané Sans SSAO Avec SSAO Avec SSAO MultiJittered @16x83 MultiJittered @16x83 falloff = 0, rad = 1px falloff = 0.1, rad = 2px
  103. 103. RENDERPASS ambient occlusion
  104. 104. AOambient light uniquementquelques minutes MultiJittered @100x83
  105. 105. AOambient light uniquement~10 minutes MultiJittered @100x83
  106. 106. RENDERPASS instant radiosity
  107. 107. INSTANT RADIOSITY35GB de RAM, 55min sur corei7 4096 VPL (visibles) avec lightbuffers (ombres)
  108. 108. INSTANT RADIOSITY~15 minutes, RAM négligeable 2048 VPL (avec rebond) position des VPL (sphères noires)
  109. 109. INSTANT RADIOSITYrendu rapide, proprequelques minutes, RAM négligeable 400 VPL (avec rebond) une pointlight blanche
  110. 110. RENDERPASS path tracing
  111. 111. PATH TRACING• renderpass completement indépendante• rendu parfaitement fidèle à la réalité• n’estpas biaisé: permet un rendu photoréaliste si le nombre de samples est assez elevé• utilisé pour générer des images de référence pour comparer d’autres techniques biaisées (par ex.: Photon Mapping)
  112. 112. PATH TRACING Cornell box avec caustiques: sphère et cône transparent, sphère réflechissante Objets en “plein air”:environment light uniquement
  113. 113. RENDERPASS post processing
  114. 114. POST PROCESSING Original Image Negative Render PassToneMapping Render Pass, coeff=5 Gamma Render Pass, e=3
  115. 115. OBJETS"I raytrace objects as I think them, not as I see them." - PABLO PICASSO
  116. 116. OBJETSplansphèrecylindrecôneboxtorerectangledisquecube trouémesh
  117. 117. MESHES“Raytracing poneys is priceless” - MICKAEL RODRIGUES
  118. 118. MESHESpolygone composé de trianglessupport des fichiers .plysupporte tout les types de matériaux (comme les objets classiques)
  119. 119. MESHES PLYformat ascii ou binairecontient:- liste de vertices (noeuds)- liste de faces (ensemble de 3 vertices)utilisation de ply.h/plyfile.c de Greg Turkafin de lire le fichier
  120. 120. MESHES FLAT/SMOOTHdeux modes de rendu flat smooth affichage du normal buffer
  121. 121. MESHES FLAT/SMOOTHmise en évidence avec l’éclairage phong le rendu smooth permet de cacher un faible nombre de polygones mais cela reste visible sur les contours et les ombres
  122. 122. MESHES FLAT/SMOOTHflat smoothpour un triangle donné, la normale est une normale est calculée pour chaquela même en tout point dintersection triangle à chaque intersection cette normale est interpolée (très peu de perte de perfomance)
  123. 123. MESHES GRIDstructure de donnée 3d, division de lespacesouvent le plus adapté pour les meshes (qui sont très denses)permet de tester très peu dintersections par rayonde très nombreux objets peuvent donc etre raytracés sans perte de perfomance notable                               cest un GeometricObject
  124. 124. MESHES GRIDnombres  avec grid sans gridde triangles1000 quelques secondes plusieurs heures100 000 quelques secondes plusieurs jours1 000 000 quelques secondes impensable
  125. 125. MESHES GRIDInitialisation création dune regular grid 3d couvrant la bounding box du modèle chaque case de la grid contient une liste dobjets les triangles sont placés dans les cases qui intersectent avec la bounding box du triangle vue en 2d
  126. 126. MESHES GRIDParcours de la grid les calculs dintersection sont seulement fait sur les objets voisins au rayon plus la grid est dense, plus le nombre dobjets par case est faible et plus le parcours est rapide défaut : utilise beaucoup de mémoire
  127. 127. FONCTIONNEMENT
  128. 128. FONCTIONNEMENT
  129. 129. FONCTIONNEMENT
  130. 130. FONCTIONNEMENT OOC
  131. 131. FONCTIONNEMENT OOCUn raytracer se prête parfaitement au paradigme objet:- Projet relativement large (30.000+ LOC)- plusieurs groupes de “classes” similaires (cameras: pinhole, spherical,.. ; objets: plan, sphere,.. ; renderpass, ...)- fonctions qui n’ont de sens qu’avec l’état associé (pour récupérer la direction de vision d’une camera, par exemple)- l’encapsulation est indispensable (à moins d’apprécier les forêts d’IFs)
  132. 132. FONCTIONNEMENT OOCImpossibilité de coder en c++:- modèle OOC de Schreiner- permet d’éviter de dupliquer une grande partie du code- permet d’encapsuler les différents types objetsNéanmoins, émuler une surcouche objet du C:- requiert une très grande rigueur et discipline- oblige à s’attarder sur les détails bas-niveau du c++ (RTTI, ..)- ajoute beaucoup de problématiques propres au C- peut, si “mal” fait, amener à certaines choses très sales (typographie GTK, par exemple)
  133. 133. FONCTIONNEMENT OOCcode parfois très lourd:- noms de fonctions à rallonge- obligé de passer l’objet en premier argument- impossibilité d’utiliser la surcharge d’opérateur: 8 lignes pour ce qui tiendrait en une ligne de c++- warnings inadaptés- ..des solutions doivent être trouvées
  134. 134. PARALLELISATION
  135. 135. PARALLELISATION multi-threading clustering
  136. 136. PARALLELISATION multi-threading
  137. 137. MULTI-THREADINGUtilisation d’OpenMP:Portable: Industry StandardScalable: Répartition dynamique de la charge de travailFacile a intégrer sur un travail existant
  138. 138. PARALLELISATION clustering
  139. 139. CLUSTERING SERVEURUsage : ./rt scene.xml Cluster:server [Fork:yes|no]affiche limage- fork un client- envoie la scène aux clients- répartit le travail entre les clients- gère les {dé,re}connexions des clients 
  140. 140. CLUSTERING CLIENTUsage : ./rt Cluster:hostcalcule limage- reçoit le fichier de scène- reçoit une colonne à calculer- calcule en multi-threading- affiche les colonnes calculées
  141. 141. RENDUS
  142. 142. RENDUS 128 min43 pc (Lab Pasteur)
  143. 143. RENDUS
  144. 144. RENDUS 129 min130 pc (Lab Pasteur, SM23, SM24)
  145. 145. RENDUS

×