on commence par les cas dégénérés que je n'ai pas montré pendant la discussion : ou pourquoi s'embette-t-on à utiliser la même séquence par pixel, mais avec des permuations différentes ?
on commence par les cas dégénérés que je n'ai pas montré pendant la formation : ou pourquoi s'embette-t-on à utiliser la même séquence par pixel, mais avec des permuations différentes ? alors qu'il y a des solutions plus directes...
## séquence Sobol' globale sur l'image
par exemple, on peut exploiter la propriété de stratification forte des 2 premières dimensions de Sobol' qui forme une (0, 2)-séquence, ce qui veut dire que pour chaque puissance de 2, la séquence visite chaque point une seule fois (rappel : t= 0 donc $2^t=1$ point dans chaque strate...)
comment profiter de cette propriété ?
il faut reprendre la boucle de rendu de l'image, elle n'est pas compatible avec ce que l'on va faire :
```
for(int py...)
for(int px...)
Sampler rng( seed )
for(sample...)
// genere le ieme sample du pixel
float x= rng.sample()
float y= rng.sample()
// genere le rayon pour le point (px+x, py+y) sur le plan image
```
pour la transformer en :
```
Sobol rng
for(sample...)
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)
```
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.
## même séquence par pixel
on comprend mieux pourquoi on s'embette avec les permutations d'Owen ou le RDS...