diff --git a/code/correction.md b/code/correction.md index c67b650f8f446465f5723b5086afdc2774044d4d..7eeac5e21c0e7d7bc2362f40cd28fe31a52d16b4 100644 --- a/code/correction.md +++ b/code/correction.md @@ -32,7 +32,7 @@ for(i < samples*width*height) float x= rng.sample() float y= rng.sample() // verifie que le ieme sample correspond à un pixel de l'image - // genere le rayon pour le point (x * width, y * height) + // genere le rayon pour le point (x * width, y * height) sur le plan image ``` si l'image est carrée et son coté est une puissance de 2, tous les points correspondent à un pixel. sinon, il faut trouver la puissance de 2 pour se retrouver dans le bon cas et éliminer tous les points qui ne correspondent pas à un pixel. @@ -64,6 +64,20 @@ bien sur l'estimateur est le même que d'habitude, il convergera vers une image ## même séquence par pixel +une solution alternative, est d'utiliser une séquence par pixel. que se passe-t-il si on construit mal les permutations de la séquence, ou si on utilise la séquence directement ? + +pour reproduire les exemples, il suffit d'utiliser le sampler Sobol et son contructeur par défaut. par exemple, dans ao.cpp, il suffit de remplacer : +``` +Sampler rng( seed ); +``` +par +``` +Sobol rng; // meme sequence par pixel +``` + +voila les résultats, sans trop de surprise, c'est moche !! + + ## bilan