mercredi 31 mai 2017

Temps de rendu

Andrew Price de Blender Guru a publié il y a quelques jours une vidéo qui présente 18 techniques pour accélérer le rendu avec Blender Cycles.

Ça tombe bien, la scène sur laquelle je travaille est particulièrement gourmande. Un rendu acceptable en HD prend 15 minutes. Pour en faire une animation de 10 secondes à 60 images par seconde, c'est 150 heures de rendu, et 10£ sur la facture d'électricité. Alors, tentons d'appliquer les techniques de Blender Guru à mon image. Voici le rendu de base, en 720 lignes pour passer moins de temps (tiens, la résolution, non mentionnée par Blender Guru ! Nous y reviendrons). Comme vous le voyez, tout ne s'applique pas, mais il n'y a pas de magie : chaque image est différente, et réagira plus ou moins bien à chaque technique.

Voici mon image de base, dont le rendu prend 1m53, avec beaucoup de bruit dans l'image. Commençons.

1 - Réduction des rebonds (light bounces)

Par défaut, le nombre maximum de rebonds est de 128. La réduction jusqu'à 5 ne donne pas grand chose, et finalement la réduction à 2 permet d'économiser quelques secondes : l'on passe à 1m37s. En revanche, le verre devient opaque ! Généralement une bonne technique, mais pas applicable dans mon cas, où j'ai besoin des rebonds...

2 - Utiliser les portails

Cette technique n'est applicable que pour les scènes d'intérieur éclairées par une fenêtre, par exemple. On zappe.

3 - Utiliser le GPU

Déjà fait ! Sans le GPU, la scène met 7m05s à être rendue. Y'a pas photo.

4 - Utiliser la taille optimale de tuiles

Mes rendus GPU utilisent généralement des tuiles 256x256, mais c'était l'occasion d'utiliser du 512x512. Résultat : 1m30s ! Toujours bon à prendre.

5 - Réduire les samples

En l’occurrence, plutôt les augmenter : il y a bien trop de bruit dans mon image. Voyons avec 48 samples : argh, 6m26s ! Et avec 36 : 3m31. Je vous ai mis l'image de base, la 36 et la 48 les unes après les autres. La différence de qualité est visible, et la 48 vaut le coup.

6 - Denoising

Celle là va de pair avec la précédente : peut-on atteindre la qualité 48 en enlevant le bruit de la 36 ? Pour ma scène, très contrastée, la réponse est non : le bruit que je veux voir partir (le fond du bureau, le fond de l'horloge) reste, mais les beaux reflets de ma lampe sont atténués ! Pas pour moi, celui là.

7, 8, 9 - La version de blender, le système d'exploitation, le clamp

Je passe rapidement sur ceux là : j'utilise la dernière version stable de Blender disponible, je suis déjà sous Linux, et je n'ai pas de problèmes de lucioles.

10 - Les caustiques

Voici quelque chose qui va provoquer des différences ! Voici la scène en 36 samples, avec et sans caustiques.

Alors, ça prend moins de temps, 3m02s au lieu de 3m36s. Mais qu'est-ce que c'est moins joli ! L'image est plus sombre, et les couleurs moins intéressantes. Plutôt normal, pour une scène où les effets de transparence et de réflection, métallique en particulier, sont primordiaux.

11, 12 - Instances, subdivision

Ma scène est suffisamment simple pour que ne souffre pas de problèmes de mémoire, et la faible profondeur de champ ne permet pas une utilisation de la subdivision adaptive.

Le reste

J'ignore le reste, qui ne s'applique pas à ma scène, qui n'a ni matériaux volumétriques, ni système de cheveux.

Conclusion : Comme quoi, il faut essayer, comparer, voir ce qui marche et ce qui ne marche pas... Je garde l'augmentation de la taille des tuiles, mais je continue à penser que l'image bénéficie vraiment des 48 samples. Reste les dernières variables d'ajustement : au lieu de full HD, si je me limite à 720 lignes, et que je réduis à 30 images par seconde, et que je me contente de 5 secondes d'animation, c'est 15 heures de rendu.

Aucun commentaire: