leyo23 | guig2000 a écrit :
De ce que j'ai compris:
A ma connaissance le rendu temps réel en ray-tracing complet n'existe pas encore (enfin pas chez les particuliers).
Ray tracing complet: pour chaque pixel de l'écran, on prolonge un rayon qui pars du centre de la caméra virtuelle passe par le pixel et vas jusqu'au premier objet croisé. De là sont projetés d'autres rayons correspondant à la réflexion sur l'objet, l'ombre et s'il est transparent ou translucide, la diffraction. Chaque nouveau rayon générant ses propres rayons, on continus jusqu'à que le rayon sorte de la scène (rayon sans effet) ou atteigne une source de lumière.
Sur les cartes graphiques actuelles:
le ray-tracing n'est pas effectué pixel par pixel mais sur un pourcentages de ceux-ci, le rendu par rasterisation est toujours nécessaire pour pour remplir les trous sans quoi le rendu serai très flou (comme si le nombre de polygones étaient très faible et les textures en basse résolution).
Le ray tracing se limite à un nombre de rayons maximum calculé par pixels où le jeté de rayons est effectué. Là aussi la rasterisation est probablement nécessaire pour avoir des sources de lumières intermédiaires à donner à manger au rayons qui n'ont pas atteins de source de lumière.
Le path tracing par rapport au ray tracing, d'après techspot, utilise des méthodes statistiques (ça doit être bon à donner à manger à de l'IA) pour ignorer les rayons à faible impact sur la couleur finale du pixel calculé, permettant ainsi pour un nombre de rayons calculés identiques de calculer des chemins plus longs.
Ce qui veut dire qu'en ray-tracing classique, par pixel où un rayon est projeté, il faut calculer: le rayon d'origine puis deuxième étape 3 rayons puis troisième étape 9 rayons puis quatrième étape 27 rayons et ainsi de suite! ce qui fait 4 rayons pour un seul rebond, 13 pour deux et 40 pour 3! En path tracing, si on ne conserves que deux chemins, on peut calculer 6 rebonds avec 13 rayons calculés!
|
Le path tracing, ça désigne une méthode d'utilisation du raycasting (aka le raytracing) pour résoudre une intégrale dont les composants sont la scène elle même, c'est effectué par pixel, le bruit, et cette méthode, c'est le problème de base de Monte-Carlo avec la superficie d'un lac :
https://fr.wikipedia.org/wiki/M%C3% [...] onte-Carlo
Le bruit(trous), c'est un problème de convergence, pour doubler la qualité, il faut quadrupler les échantillons (aka, tirer plus de coup de canon).
Citation :
le ray-tracing n'est pas effectué pixel par pixel mais sur un pourcentages de ceux-ci
|
C'est effectué sur l'ensemble des pixels : les jeux calcules 2 fois la scène, la version Raster en HD, et une version réduite de la scène en RT/PT, voir en résolution plus basse avec une optimisation plus forte des assets, par exemple, dans cyberpunk, les reflets des cadavres n'étaient pas démembrés.
Rien d'extraordinaire, pour rappel, la technique du damier était utilisé, par les jeux, bien avant le RT, et Crysis 3 calculait des éléments toute les 4 frames, on rigole sur le "temps réel". En prime, on à un paquet d'astuce pour accélérer les choses, comme l 'échantillonnage adaptatif : on regarde la variance d'un pixel pendant le calcul, lorsqu'elle passe sous un seuil, on arrête les échantillonnage dudit pixel.
Et le ReStir de NVIDIA est bien balaise comme truc.
Il reste des effets incompatibles avec le RT, comme la fumé en screen space.
En prime, le RT a une capacite, spectaculaire, à balancer en pleine tête toute les bricolages des rasters.
C'était aussi la méthode utilisé en CGI jusqu'à l'arrive d'Arnold, je ne parlerai pas de Maxwell render, mais pas mal de moteur étaient sur une approche REYES jusqu'en 2010-2013. |