diff --git a/README.md b/README.md index 2f14e89d3d273ff8b78212ac4c0478720872c663..b29dd9290868330559a50c441302218bac127b28 100644 --- a/README.md +++ b/README.md @@ -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 ? -## 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). 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 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 `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 ## 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. +les 2 codes de départ exportent aussi les normales et les albedos de chaque pixel pour aider le denoiser. +