Le sampling sur Cycles

Clément Granjon, aka Cgranjon sur le forum nous a fait un superbe tuto sur le sampling sur Cycles.

Cycles / Sampling et Light Paths

– Le sampling

Cycles est un moteur de rendu de type raytracer, ce qui signifie que l’image est analysée à travers des pixels par de la prise d’échantillons. Lors du rendu, Cycles prend plein d’échantillons d’information par pixel : ce sont les samples. Cette récupération d’information des éléments de votre scène 3D à travers des pixels s’appelle le sampling.
Le nombre de samples à évaluer par pixel est défini par l’utilisateur. Par défaut, Cycles est paramètré en Path Tracing, et il est défini 10 samples de rendu (mettons de côté les samples de preview qui paramètre le rendu en temps réel du viewport). Cela se traduit par : Cycles va récolter 10 fois de l’information pour chaque pixel de votre image. Bien entendu, ces réglages seront insuffisants pour obtenir une belle image. Les samples c’est simple, plus on les augmente, plus le moteur de rendu va prendre d’échantillons par pixel, plus la qualité et la finesse de l’image va augmenter. A contrario, un manque de samples résulte en du grain et ce qu’on appelle des images grainées ou noisy. Le grain est un simple manque d’information, si il y a du grain dans une image, Cycles vous dit :”Je manque d’informations pour avoir quelque chose de propre”. On augmentera donc les samples pour augmenter la qualité.

Il existe différents types de samples. Sous Cycles, le mode Path Tracing de base ne vous laisse qu’un seul paramètre à régler, il s’agit des AntiAliasing Samples ou AA Samples. Selon votre image cela peut être utile de n’utiliser que cet unique paramètre mais nous verrons que ce n’est pas forcément optimisé.

– Les différents types de rayons (rays)

Considérons le schéma ci-dessous (cf: blenderwiki):

Manual_cycles_light_path_rays

Lorsque vous lancez le rendu, des rayons (rays) sont émis à partir de la caméra et se divisent en plusieurs types. Les rays sont le chemin que suit un sample pour récupérer de l’information dans la scène 3D. On retrouve donc un type de ray par phénomène (diffuse, réflection, refraction…).

Avec le mode par défaut de Path Tracing Cycles va chercher de l’information dans tout les phénomènes qu’illustre le schéma ci-dessus.

– Branched Path Tracing: optimisation par type de rays

Cycles nous permet désormais d’utiliser un nouveau mode de sampling: le Branched Path Tracing (BPT). Ce mode permet de régler le nombre de samples par phénomène et donc d’optimiser vos rendus. Si par exemple vous trouvez que votre rendu a une belle diffuse mais que vos réflexions floues ont un peu de grain, vous pourrez dire à Cycles d’aller chercher plus d’informations dans le phénomène de réflexion sans augmenter tout les autres paramètres.

sampling_001
Exemple d’un rendu à la diffuse propre mais au réflexions grainées

Cycles, fonctionne de la façon suivante pour déterminer le nombre de samples à prendre en compte (exemple pour les samples de diffuse):

Nombre de samples au rendu = AA samples x diffuse samples

/!\ Important /!\
Si vous éclairez vos scènes à l’aide d’area lights, augmenter les samples de la light lissera les réflections de ladite area en plus de rendre les ombres plus proprement.

* Astuce *
Pour ceux qui veulent réduire le grain dans le Depth of Field, il faudra augmenter les AA samples et donc probablement revoir à la baisse les samples par phénomène pour rééquilibrer vos paramètres.

– Les bounces

C’est le nombre de rebonds autorisés en fonction d’un phénomène. Prenons l’exemple ci-dessous:

sampling_002

Chaque sphère se reflètent dans l’autre au maximum 128 fois. C’est un trop grand chiffre pour ce réglage, que l’on pourra revoir à la baisse sans voir de différences :

sampling_003

sampling_004

Même chose avec la transparency par exemple:

sampling_005

sampling_006

Concernant les bounces de diffuse, cela correspond aux rebonds d’éclairage indirect (GI) :

sampling_007

sampling_008

0 bounces = éclairage direct

Suivant les besoin de l’image on pourra donc simplement régler les Light Paths avec le preset Limited Global Illumination et régler les paramètres au besoin.

– Multiple Importance Sampling

Le Multiple Importance Sampling (MIS) permet de sampler une version floutée d’une map HDR. Aussi simple que ça. C’est un peu le même principe que sIBL pour ceux qui connaissent, sauf qu’on ne met qu’une seule map en input et Cycles fait tout le boulot. Le MIS permet de réduire significativement le grain dû à une map HDRI. Augmenter la Map Resolution au dessus de 256 n’est pas forcément nécessaire et fera augmenter vos temps de rendus.

sampling_009

– Performance

Après différents tests, il s’avère que quand on calcul en CPU, les tiles devraient être de 32.
Pourquoi 32 ? Et bien, quand il ne reste qu’un bucket à calculer, il n’y a qu’un core qui le calcul et non les 4 cores ou plus de votre processeur.
Donc, plus le bucket sera petit, plus le calcul sera rapide. C’est pourquoi on ne dépasse jamais les 64 x 64 en calcul CPU. La valeur 32 est une valeur médiane entre 16 et 64 et permet donc de gagner du temps au rendu.

Quand on calcul en GPU, il est préférable de choisir 256.
Si vous avez une carte puissante avec beaucoup de ram, ½ de la résolution fait souvent l’affaire.
Par exemple :

1920 x 1080 = 960 en X et 540 en Y.

Si vous disposez de deux cartes identiques, cela ne change pas.
Si vous disposez de deux cartes différentes, la valeur 256 est à privilégier.

Voilà, vous êtes maintenant prêts pour paramétrer vos rendus de façon optimisée, vous gagnerez très certainement en temps de rendu et en qualité d’image. A vos images, et bonne 3D !

– Exercice :

Si vous voulez vous entraîner à la suite de cet article, nous avons crée un post avec une simple scène dont le but est d’améliorer l’image en changeant uniquement les paramètres de rendu.

x0oKg

Rendez-vous sur le forum 😉

Vous pouvez aussi télécharger cet article au format ODT Ici.

TwitterFacebookGoogle+