// verifie que le ieme sample correspond à un pixel de l'image
// 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.
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
...
@@ -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
## 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 !!