@@ -55,7 +55,7 @@ ie utiliser balance au lieu de power comme c'est le cas dans le code.
...
@@ -55,7 +55,7 @@ ie utiliser balance au lieu de power comme c'est le cas dans le code.
il y a 2 estimateurs MIS, la version "multi-sample" et la version "one-sample". que faut-il modifier pour écrire la version "one-sample". quelles sont les différences en temps de rendu, en erreur ?
il y a 2 estimateurs MIS, la version "multi-sample" et la version "one-sample". que faut-il modifier pour écrire la version "one-sample". quelles sont les différences en temps de rendu, en erreur ?
## owen
## permutations d'Owen
il y a un bug numérique dans les permutations d'owen, cf `projects/owen_fast.h`. vous pouvez vous en rendre compte en comparant les images calculées avec Owen et OwenFast pour peu d'échantillons (< 16).
il y a un bug numérique dans les permutations d'owen, cf `projects/owen_fast.h`. vous pouvez vous en rendre compte en comparant les images calculées avec Owen et OwenFast pour peu d'échantillons (< 16).
de manière assez surprenante le code de construction des permutations est correct, le générateur de nombre aléatoire (utilisé pour les décisions aléatoires de permuter chaque bit), aussi, à un détail près...
de manière assez surprenante le code de construction des permutations est correct, le générateur de nombre aléatoire (utilisé pour les décisions aléatoires de permuter chaque bit), aussi, à un détail près...
...
@@ -78,6 +78,24 @@ re-écrivez la boucle principale pour utiliser la séquence de Sobol' globale, i
...
@@ -78,6 +78,24 @@ re-écrivez la boucle principale pour utiliser la séquence de Sobol' globale, i
utilisez une image carrée dont le coté est une puissance de 2. la stratification naturelle des 2 premières dimensions permet de visiter chaque pixel de l'image.
utilisez une image carrée dont le coté est une puissance de 2. la stratification naturelle des 2 premières dimensions permet de visiter chaque pixel de l'image.
## Z Sampler
une modification des permutations d'Owen permet de produire des échantillons à peu près "Blue noise".
le principe est présenté dans cet article :
["Screen-Space Blue-Noise Diffusion of Monte Carlo Sampling Error via Hierarchical Ordering of Pixels"](http://abdallagafar.com/publications/zsampler/) 2020.
l'idée est de construire le code de Morton des indices des échantillons et d'utiliser une permutation 4D de ce code.
il faut également écrire la séquence globale, cf l'exercice précédent.
il est également possible de construire une fonction de hachage comme dans le cas classique. les détails sont sur le blog ["Psychopath renderer"](https://psychopath.io/) :
- présentation ["Owen Scrambling Based Blue-Noise Dithered Sampling"](https://psychopath.io/post/2022_07_24_owen_scrambling_based_dithered_blue_noise_sampling)
- fonction de hachage pour les permutations classiques ["Building a Better LK Hash"](https://psychopath.io/post/2021_01_30_building_a_better_lk_hash)
- fonction de hachage pour les permutations 4d et le Z sampler ["A Fast Hash For Base-4 Owen Scrambling"](https://psychopath.io/post/2022_08_14_a_fast_hash_for_base_4_owen_scrambling)
## convergence
## convergence
`projects/errors.cpp` prend en paramètre une image de référence et une série d'images calculées avec un nombre croissant d'échantillons et calcule l'erreur de chaque image par rapport à la réference.
`projects/errors.cpp` prend en paramètre une image de référence et une série d'images calculées avec un nombre croissant d'échantillons et calcule l'erreur de chaque image par rapport à la réference.
...
@@ -87,6 +105,8 @@ le script `scripts/ao.txt` permet d'automatiser le rendu des images, de calculer
...
@@ -87,6 +105,8 @@ le script `scripts/ao.txt` permet d'automatiser le rendu des images, de calculer
## filtrage
## filtrage
il est très simple de filter une image avec [OIDN](https://www.openimagedenoise.org/). c'est prévu dans le script, ainsi que le calcul d'erreur.
il est très simple de filter une image avec [OIDN](https://www.openimagedenoise.org/). c'est prévu dans le script, ainsi que le calcul d'erreur.
les 2 codes de départ exportent aussi les normales et les albedos de chaque pixel pour aider le denoiser.