Juste à des fins d'apprentissage, je regardais les techniques de lancer de rayons. J'ai récemment découvert Global Illumation et ses variantes, en lisant ce travail incroyable par Kevin Beason. J'ai essayé de porter smallpt dans une autre langue (Lua).Accélérer l'éclairage global en utilisant des courbes de remplissage d'espace - Comment ça marche?
J'ai quelque chose qui marche bien, jusqu'ici, mais ça rend la scène trop lente à mon avis. Jusqu'à présent, j'ai creusé sur Internet, et j'ai vu dans de nombreux articles techniques couvrant le sujet que c'était le principal problème des techniques d'éclairage global, en particulier le traçage des chemins.
Il me semble qu'il existe des méthodes pour accélérer le processus, telles que l'espacement des courbes de remplissage (courbes de Hilbert, par exemple). Fondamentalement, ils divisent tous la fenêtre en seaux (ou en mosaïques), puis commandent au rendu de traiter le traçage de chemin sur chaque compartiment dans un ordre spécifique. Techniquement, je n'ai pas regardé comment implémenter les courbes de Hilbert, mais je voudrais comprendre comment, concrètement, cela peut rendre l'ensemble du processus plus rapide? Ma première hypothèse était que, compte tenu de chaque seau, le rendu était appelé sur des pixels spécifiques, puis les autres étaient des échantillons utilisant des astuces d'interpolation, mais en réalité, il semble que le rendu est appelé sur chaque pixel du seau. Par conséquent, le moteur de rendu traitera tous les pixels de la carte, ce qui entraîne le même volume de travail que deux boucles imbriquées (pour chaque ligne, chaque colonne), à mon humble avis. Donc, je sais qu'il me manque manifestement quelque chose, je cherche donc des explications claires.
Merci d'avance.
Personne? Voici le lien vers le référentiel du projet, en fait [Smallpt-Lua] (https://github.com/Yonaba/smallpt-lua). Merci. –