Au fil des ans, il y a eu beaucoup d'articles sur différentes techniques pour dessiner un terrain à hauteur de champ dans un traceur de rayons. Certains algorithmes ray-mars la grille directement (ou via un quadtree); d'autres transforment le terrain en maillage polygonal et utilisent un test d'intersection rayon-triangle standard. La recherche semble avoir évolué au cours des dernières années, et il est difficile de trouver des articles écrits au cours de la dernière décennie, mais l'équilibre entre la mémoire et le calcul (CPU et GPU) est toujours en train de changer.
Quel type d'algorithme donne les meilleures performances sur les ordinateurs de bureau haut de gamme de nos jours? Ou s'il n'y a pas de réponse unique, en quoi les caractéristiques de performance des meilleurs algorithmes actuels diffèrent-elles?
la source
Réponses:
Pour l'état de l'art actuel, recherchez ce document: "Mipmaps maximales pour un rendu de champ dynamique en hauteur rapide, précis et évolutif", Tevs et al. 2008
L'idée de base est de sauter beaucoup d'espace en ayant connaissance de la valeur maximale sur de grandes surfaces de terrain. Si le rayon reste au-dessus, passez à la grande zone suivante.
Si vous regardez la figure 8, vous verrez une comparaison entre le pas linéaire de base et les mipmaps maximaux. La progression linéaire se traduit par 200 étapes, ce qui peut être fait en temps réel sur les gpus modernes mais est toujours lent. Les mipmaps maximales font de même en environ 10 étapes, le tout dans le shader.
la source
Le meilleur que j'ai personnellement vu est ce que fait Inigo Quillez, qui est utilisé dans les trucs de la demoscène. Ray March le terrain, en faisant de plus grands pas plus vous vous éloignez de la caméra car (généralement) les détails importent moins à distance (exception = parois minces!). Il utilise des informations de pénétration et d'autres mesures faciles à obtenir pour simuler l'occlusion ambiante et d'autres techniques d'éclairage sophistiquées.
Voici une démonstration des éléments en action: https://www.youtube.com/watch?v=_YWMGuh15nE
Et voici la page d'IQ sur le raymarching terrain qui est une lecture assez intéressante: http://www.iquilezles.org/www/articles/terrainmarching/terrainmarching.htm
BTW, dans les jeux modernes, la technique de "réflexion de l'espace d'écran" n'est souvent qu'une marche de rayon contre le tampon Z de la scène rendue. Le tampon Z n'est vraiment qu'un champ de hauteur.
J'ai vu quelques discussions à ce sujet au siggraph 2014, et alors que certaines personnes utilisaient des techniques similaires à celles du QI, quelques-unes faisaient même moins bien que le QI, ce qui était intéressant à voir: P
la source
Le Cone Step Mapping et le Cone Step Mapping détendu semblent être des algorithmes très décents. Ceux-ci s'appuient sur un peu de prétraitement du champ de hauteur pour créer une carte 2D utilisée pour des recherches plus efficaces.
http://www.lonesock.net/files/ConeStepMapping.pdf https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch18.html
la source