Comme tout moteur de rendu, Octane a ses paramètres pour optimiser la vitesse d’exécution selon les situations. Même si Octane est probablement le moteur de rendu non-biaisé le plus rapide du moment, il n’en reste pas moins que des paramètres inadaptés peuvent ruiner la vitesse d’exécution. Outre le choix du Kernel et son paramétrage, il y a aussi quelques petites choses bonnes à savoir pour faire des rendus les plus rapides possibles. Petit tour d’horizon, dans la limite de mes découvertes et de mes connaissances.

  1. Le choix du kernel
  2. Bien comprendre les terminologies pour bien paramétrer
  3. Quelques conseils supplémentaires
  4. Conclusion

À savoir : cet article concerne surtout ceux qui veulent tirer le meilleur d’Octane dans les plus brefs délais. Toutefois, comme Octane est un moteur non-biaisé, les plus patients d’entre vous pourront tout simplement attendre plus longtemps en calculant plus de samples/seconde. Les paramètres par défaut sont faits pour donner de bons résultats dans tous les cas pour peu qu’on veuille bien attendre suffisamment longtemps… Seule exception : l’AO Distance en mode DirectLighting > AO Ambiant Occlusion qui doit toujours être adapté à la taille de la scène (selon qu’on rende un bijou ou un stade de foot par exemple).

Octane render : optimisation du rendu. La brume est plus longue à rendre. Ici on peut voir qu'après 1h30 le grain est encore bien présent. Les boules lumineuses ne facilitent pas les choses ni la lumière dans le matériau translucide du rocher...

La brume est plus longue à rendre. Ici on peut voir qu’après 1h30 le grain est encore bien présent. Les boules lumineuses ne facilitent pas les choses ni la lumière dans le matériau translucide du rocher…

Le choix du kernel

Autant enfoncer les portes ouvertes tout de suite : en premier lieu, le choix du Kernel, à savoir du noyau de rendu, est prépondérant. Dans Octane, il y a trois grands noyaux de rendu : Directlighting, Pathtracing et PMC. La grande différence entre ces trois noyaux est la gestion des caustiques et la logique fondamentale de calcul : grosso-modo la technique du lancer de rayon à partir de la caméra pour le DirectLighting et du calcul de probabilité à partir des sources lumineuses vers la caméra pour le Pathtracing et le PMC, technique dite du rendu non-biaisé ou de Monte-Carlo, etc.

Pour Octane, la notion de caustique comprend tous les effets de déformation des rayons lumineux, tant par la réflexion que la réfraction. Donc un rendu sans caustiques dans Octane est considéré comme non-photo réaliste, même s’il peut être considéré comme suffisamment réaliste par l’utilisateur. De par les logiques de calcul fondamentalement différentes entre le DirectLighting d’une part et les Pathtracing et PMC d’autre part, comparer les deux serait comme comparer un simulateur de vol et un vol réel en avion. Le DirectLighting en mode GI Diffuse ne fait que (très bien !) simuler la lumière là où les deux autres modes reproduisent les propriétés physiques de celle-ci, comme c’est le cas pour d’autres moteurs de rendu physiques non-biaisés tel que Maxwell par exemple.

Le Directlighting est donc en quelque sorte la version Raytracing d’Octane. C’est un noyau spécifique très rapide avec des résultats semblables aux moteurs de rendu Raytracing CPU classiques (voir lancer de rayon sur Wikipedia : http://fr.wikipedia.org/wiki/Lancer_de_rayon). Les propriétés physiques de la lumière sont simulées et les caustiques sont absents de tous les modes. C’est donc un moteur de rendu, dans son mode le plus complet, comparable en termes de résultats à l’illumination globale en qualité haute de l’Advanced Render de Cinema 4D.

En Directlighting, on dispose de 5 modes :

  1. None : seule la lumière directe du soleil ou des émetteurs est utilisée, les ombres sont noires et il n’y a aucune compensation de la lumière indirecte. C’est le lancer de rayons le plus basique d’Octane… Uniquement utile à des fins de test.
  2. Ambient : similaire à None mais avec l’utilisation d’une couleur d’environnement.
  3. Sample environment : similaire à Ambient mais avec l’utilisation d’une couleur d’ambiance en provenance de l’environnement ou de l’horizon.

Ces trois premiers modes offrent des rendus supersoniques mais ne sont pas du tout réalistes. Ils sont surtout utilisables pour des rendus de tests ou interactifs de préparation de scènes lourdes. Cela étant dit, ils ne sont pas pour autant « interdits », c’est votre créativité qui fera la différence…

  1. Occlusion ambiante : c’est le mode bien connu d’AO sans radiosité, similaire à l’Occlusion ambiante de l’Advanced render de C4D avec une illumination globale partielle. Il est idéal pour des rendus moyennement réalistes d’animations par exemple car c’est un très bon compromis entre semi-réalisme et vitesse de rendu.
  2. Diffuse : c’est le mode le plus complet du Directlighting. Il peut être nettement plus rapide que le Pathtracing s’il est bien paramétré mais aussi moins réaliste puisqu’il n’y a pas de rendu des caustiques (voir plus haut pour ce qu’on entend par caustiques dans le cas d’Octane). C’est le mode le plus proche du rendu Raytracing classique en illumination globale avec radiosité sans caustiques de C4D. C’est le mode idéal pour les rendus d’animation réalistes ou les rendus d’architecture en très haute définition où le délai est une priorité par exemple.

Le Pathtracing est le mode de rendu non-biaisé photo réaliste principal d’Octane et le plus adapté pour les scènes d’intérieur à éclairage majoritairement direct, les scènes d’extérieur, les rendus de type studio, etc. Il est bien entendu moins rapide que le Directlighting en sous-mode GI Diffuse mais aussi totalement réaliste. Cela étant, avec les dernières optimisations des versions récentes d’Octane, l’écart de performance entre ces deux modes tend à se rétrécir pour peu qu’on optimise correctement les paramètres et qu’on fasse quelques concessions au réalisme. Il est aussi devenu une alternative valable au PMC pour les scènes à éclairage difficile, pour peu qu’on adapte correctement ses paramètres

Le PMC est une émanation du Pathtracing, tout aussi photo réaliste, optimisé pour le rendu de caustiques complexes ou de scènes à très forte densité d’éclairage indirect sur GPU (l’exemple ultime étant le sténopé : http://fr.wikipedia.org/wiki/St%C3%A9nop%C3%A9). C’est un mode très curieux car il donne la sensation au début du rendu d’être bien moins bon que le Pathtracing – de par l’apparition d’un moiré caractéristique, d’un bruit très marqué et changeant – mais sur la durée il s’avère parfois plus efficace sur ce type de scène car le bruit et les fireflies disparaissent plus vite. C’est donc un mode qui est plus adapté pour les rendus finaux de scènes fixes (pas d’animation !) et pas pour le travail préparatoire car il faut attendre quelques dizaines de samples avant que le bruit ne disparaisse, ce qui peut rendre le travail de préparation de la scène et des matériaux plus fastidieux. C’est toutefois un mode à tester pour les scènes à éclairage très difficile si le Pathtracing ne s’en sort pas. Même s’il n’a pas beaucoup évolué dans les dernières versions d’Octane, il reste efficace pour les cas très spécifiques précités.

Octane render : optimisation du rendu. Un exemple en Pathtracing d'un scène d'intérieur : 10 minutes de rendu.

Octane render : optimisation du rendu. Un exemple en Pathtracing d'une scène en extérieur : rendu 2 minutes 30.

Bien comprendre les terminologies pour bien paramétrer

Le kernel DirectLighting

Le noyau DirectLighting comprend un grand nombre de paramètres mais tous ne sont pas utilisés dans tous les modes (voir plus haut). Par exemple le Diffuse Depth n’est utilisé que dans le mode GI Diffuse. Dans les autres modes, il ne sert à rien de le modifier. Donc il est utile de savoir à quoi servent tous ces paramètres. Certains ne doivent être changés qu’en de très rares occasions alors que d’autres peuvent être prédominants pour la vitesse de rendu. Voici un tour d’horizon. Pour certains paramètres, j’ai purement et simplement traduit et éventuellement complété le contenu du manuel en ligne (http://render.otoy.com/manuals/Standalone_2_0/)…

Maximum Samples : c’est le nombre de samples (ou passes) par pixel que le moteur doit calculer avant de s’arrêter. En théorie, Octane, comme tout moteur non-biaisé, pourrait continuer de calculer une image à l’infini mais il faut bien lui dire d’arrêter un jour… Selon qu’une image est éclairée par un seul soleil en extérieur ou par une lumière indirecte en intérieur, le nombre de samples à calculer ne sera pas le même pour obtenir une image propre et sans bruit. Idem si la scène est très chargée en polygones ou qu’il y a beaucoup de matériaux transparents et/ou réfléchissants, etc. C’est donc une valeur empirique à déterminer à l’œil, selon qu’on veuille un rendu rapide de test ou une image finale impeccable.

À savoir : si lors du rendu de test dans le Live Viewer on constate que l’image est d’assez bonne qualité à 500 samples, il n’est pas nécessaire d’augmenter le nombre de samples pour le rendu final. Toutefois comme cette image sera probablement de plus haute définition, elle mettra plus de temps pour atteindre les 500 samples par pixels puisqu’il y a plus de pixels à calculer… Logique non ? La proportion est quasi arithmétique : pour une image 4 fois plus grande, ça mettra 4 fois plus de temps.

Specular Depth : détermine le nombre de fois qu’un rayon peut être réfracté avant de disparaître. Cela concerne donc surtout les matériaux transparents de type specular. Si vous avez, par exemple, un ensemble de verres l’un derrière l’autre, il faudra augmenter cette valeur pour éviter que les derniers verres n’apparaissent noirs à travers les précédents. Si vous n’avez aucun matériaux de type specular dans une scène, vous pouvez éventuellement diminuer légèrement la valeur par défaut même si cela n’a pas beaucoup d’impact, par contre si vous avez beaucoup de matériaux de ce type, vous devrez sans aucun doute augmenter cette valeur.

Glossy Depth : détermine le nombre de fois qu’un rayon peut être réfléchi avant de disparaître. Cela concerne les matériaux réfléchissants de type glossy et specular. C’est le même principe que pour le Specular Depth ci-dessus mais pour les réflexions. Dans le cas de l’exemple du grand nombre de verres, il faudra tout autant augmenter cette valeur pour éviter que les réflexions ne deviennent noires mais dans le cas de boules de pétanque par exemple, seule cette valeur sera importante.

Diffuse Depth : détermine le nombre de réflexions diffuses si on est dans le mode GI Diffuse. Ça détermine donc la profondeur et la finesse de l’illumination globale. Ce serait donc une bonne idée d’augmenter légèrement cette valeur si on a scène avec beaucoup de lumière indirecte. Attention, une valeur haute peut fortement ralentir le rendu, donc à augmenter un cran à la fois et uniquement si nécessaire !

AO Distance : détermine la distance de l’occlusion ambiante en valeur d’unité en mode AO Ambiant occlusion (normalement en mètre avec le plugin pour Cinema 4D si je ne fais pas erreur). Donc pour une scène large, comme un bâtiment, il sera nécessaire d’augmenter la valeur par défaut alors que pour une scène petite, comme un bijou, il sera nécessaire de diminuer la valeur. Plus on augmente cette valeur, plus la scène sera sombre. Si on veut travailler avec le sous-mode AO Ambient occlusion, l’adaptation de ce paramètre à l’échelle de la scène est fondamentale pour obtenir un bon résultat. Cela est également très visible en combinaison avec des matériaux de type specular qui peuvent comporter des zones très noires si l’AO Distance n’est pas à la bonne échelle.

Path Termination Power : permet de contrôler le rapport entre les échantillons par seconde et la convergence (la vitesse de disparition du bruit). Augmenter ce paramètre forcera le kernel à garder des rayons plus courts et à passer moins de temps sur les zones sombres (ce qui signifie qu’elles conserveront plus de bruit), au bénéfice du calcul de plus de samples par seconde et donc d’un rendu plus rapide. Réduire cette valeur forcera par contre le kernel à tracer des rayons plus longs en moyenne et à passer plus de temps sur les zones sombres, au détriment de la vitesse de rendu. En bref, des valeurs élevées augmentent la vitesse de rendu, mais peuvent conduire à bruit plus élevé dans les zones sombres, c’est donc une proportion à trouver en fonction de la scène et de son type d’éclairage. La valeur par défaut donne généralement de bons résultats.

Ray epsilon : est une valeur qui contrôle le biais entre la géométrie et le rayon. Il n’est généralement pas nécessaire de la modifier sauf si la scène présente des problèmes d’échelle et que des cercles concentriques apparaissent dans l’illumination. Ce qui est très rare si on travaille à échelle réelle.

Filter size : ce paramètre est en quelque sorte l’équivalent du réglage d’anti-aliasing de Cinema 4D. Le réglage par défaut est généralement bon mais il est parfois nécessaire d’augmenter légèrement la valeur pour des scènes avec beaucoup de droites peu inclinées (comme des barreaux par exemple) ou de la diminuer si on veut une image avec un peu plus de piqué. On peut aussi parfois réduire le bruit en augmentant cette valeur mais il faut savoir que cela risque de donner une image floue ou molle.

Coherent Ratio : lorsque le Coherent Ratio est activé le bruit disparaît plus rapidement mais en contrepartie l’image scintille durant environ les 500 premiers samples de rendu. Ce mode peut faire gagner du temps en éliminant le bruit plus rapidement mais il est nécessaire de régler le Maximum Samples sur au moins 500 s/px, sans quoi on peut obtenir des résultats différents d’un rendu à l’autre (ou d’une image à l’autre dans une animation). C’est un mode à réserver au rendu final car le scintillement est trop fort pour pouvoir travailler confortablement dans le Live Viewer. Si j’ai bonne mémoire, les développeurs conseillent de ne pas dépasser une valeur de 0,5. Une valeur entre 0,35 et 0,45 est un bon compromis il me semble, mais c’est à tester !

Alpha Shadows : ce paramètre sert à prendre en compte les transparences pour le calcul des ombres : matériau specular, transparence alpha, opacité, Fake shadows pour les vitres architecturales, matériau Matte, materiau Portal, etc. Si rien de tout ça n’est utilisé dans une scène, il est utile de désactiver ce paramètre car il consomme pas mal de ressources. Par exemple, une scène avec des centaines d’arbres utilisant un feuillage avec des transparences Alpha se calculera quasi un tiers plus vite sans ce paramètre mais les ombres tiendront compte des panneaux de polygones supportant la texture des feuilles et pas l’Alpha des feuilles elles-mêmes.

Alpha Channel : active ou non le calcul d’une couche de transparence Alpha durant le rendu pour un compositing ultérieur. À ma connaissance, ça ne ralenti pas le calcul mais bien entendu ça consomme un peu de mémoire GPU… L’activation de ce paramètre est indispensable si on veut utiliser un objet Background de C4D.

Static Noise : ce paramètre est en relation directe avec le Coherent Ratio, il évite que le bruit ne bouge entre deux images, ce qui pourrait donner un effet vibratoire. Surtout utile pour le rendu d’animation bien entendu.

GI_Mode : c’est le choix du mode de rendu en DirectLighting tel que détaillé plus haut.

Le kernel PathTracing

Le noyau PathTracing est lui plus cohérent et plus lisible quant à ses paramètres puisqu’il ne comporte pas de modes. Pas mal de paramètres vus avec le DirectLighting sont équivalents ici comme le Maximum Samples, le Path termination power, le Ray epsilon, le Filter size, l’Alpha channel, l’Alpha Shadows, le Coherent Ratio et le Static Noise. Je me contenterai donc d’un copier-coller pour ces paramètres.

Maximum Samples : c’est le nombre de samples (ou passes) par pixel que le moteur doit calculer avant de s’arrêter. En théorie, Octane, comme tout moteur non-biaisé, pourrait continuer de calculer une image à l’infini mais il faut bien lui dire d’arrêter un jour… Selon qu’une image est éclairée par un seul soleil en extérieur ou par une lumière indirecte en intérieur, le nombre de samples à calculer ne sera pas le même pour obtenir une image propre et sans bruit. Idem si la scène est très chargée en polygones ou qu’il y a beaucoup de matériaux transparents et/ou réfléchissants, etc. C’est donc une valeur empirique à déterminer à l’œil, selon qu’on veuille un rendu rapide de test ou une image finale impeccable.

À savoir : si lors du rendu de test dans le Live Viewer on constate que l’image est d’assez bonne qualité à 500 samples, il n’est pas nécessaire d’augmenter le nombre de samples pour le rendu final. Toutefois comme cette image sera probablement de plus haute définition, elle mettra plus de temps pour atteindre les 500 samples par pixels puisqu’il y a plus de pixels à calculer… Logique non ? La proportion est quasi arithmétique : pour une image 4 fois plus grande, ça mettra 4 fois plus de temps.

Diffuse Depth : contrairement à son homonyme du noyau DirectLighting, ce paramètre ne détermine pas seulement le nombre de réflexions diffuses mais aussi le nombre de réflexions et de réfractions. Il détermine donc la profondeur et la finesse du rendu dans son ensemble. La valeur par défaut de 16 est une valeur idéale mais elle est souvent bien trop haute. Pour une scène de type extérieur avec éclairage par un soleil, on peut descendre jusqu’à 4 alors qu’une scène d’intérieur avec éclairage indirect demandera une valeur aux alentours de 8. Bien entendu, ces valeurs ne sont qu’indicatives, si on a beaucoup de réflexions ou de réfractions, il faudra peut-être revoir ces valeurs à la hausse, en gardant toujours à l’esprit que moins haute sera cette valeur, plus rapide sera le rendu et qu’une valeur de 16 devrait normalement suffire dans tous les cas (à moins de rendre un labyrinthe de miroirs éclairé par une bougie, par exemple…).

Specular Depth : même si cette valeur porte le même nom que dans le noyau DirectLighting, son effet est moins arithmétique. Il s’agit ici d’un réglage concernant toujours le matériau de type specular mais dans le cadre d’un calcul plus global, plus subtil et pas simplement la superposition de transparences successives. Ce réglage va servir à éviter les effets de bordure noires autour des objets transparents mais ne va pas pour autant limiter les nombre d’objets transparents vus à travers d’autres objets transparents. Selon moi, la valeur par défaut de 16 est très haute et peut bien souvent être diminuée jusqu’à 8 mais c’est à tester selon les cas !

Path Termination Power : permet de contrôler le rapport entre les échantillons par seconde et la convergence (la vitesse de disparition du bruit). Augmenter ce paramètre forcera le kernel à garder des rayons plus courts et à passer moins de temps sur les zones sombres (ce qui signifie qu’elles conserveront plus de bruit), au bénéfice du calcul de plus de samples par seconde et donc d’un rendu plus rapide. Réduire cette valeur forcera par contre le kernel à tracer des rayons plus longs en moyenne et à passer plus de temps sur les zones sombres, au détriment de la vitesse de rendu. En bref, des valeurs élevées augmentent la vitesse de rendu, mais peuvent conduire à bruit plus élevé dans les zones sombres, c’est donc une proportion à trouver en fonction de la scène et de son type d’éclairage. La valeur par défaut donne généralement de bons résultats.

Ray epsilon : est une valeur qui contrôle le biais entre la géométrie et le rayon. Il n’est généralement pas nécessaire de la modifier sauf si la scène présente des problèmes d’échelle et que des cercles concentriques apparaissent dans l’illumination. Ce qui est très rare si on travaille à échelle réelle.

Filter size : ce paramètre est en quelque sorte l’équivalent du réglage d’anti-aliasing de Cinema 4D. Le réglage par défaut est généralement bon mais il est parfois nécessaire d’augmenter légèrement la valeur pour des scènes avec beaucoup de droites peu inclinées (comme des barreaux par exemple) ou de la diminuer si on veut une image avec un peu plus de piqué. On peut aussi parfois réduire le bruit en augmentant cette valeur mais il faut savoir que cela risque de donner une image floue ou molle.

Alpha Channel : active ou non le calcul d’une couche de transparence Alpha durant le rendu pour un compositing ultérieur. À ma connaissance, ça ne ralenti pas le calcul mais bien entendu ça consomme un peu de mémoire GPU… L’activation de ce paramètre est indispensable si on veut utiliser un objet Background de C4D.

Alpha Shadows : ce paramètre sert à prendre en compte les transparences pour le calcul des ombres : matériau specular, transparence alpha, opacité, Fake shadows pour les vitres architecturales, matériau Matte, materiau Portal, etc. Si rien de tout ça n’est utilisé dans une scène, il est utile de désactiver ce paramètre car il consomme pas mal de ressources. Par exemple, une scène avec des centaines d’arbres utilisant un feuillage avec des transparences Alpha se calculera quasi un tiers plus vite sans ce paramètre mais les ombres tiendront compte des panneaux de polygones supportant la texture des feuilles et pas l’Alpha des feuilles elles-mêmes.

Caustic Blur : est utilisé pour évaluer les caustiques sur des surfaces rugueuses et augmenter ou diminuer leur netteté. Une valeur de zéro fournit les caustiques les plus nettes et l’augmentation de cette valeur augmente l’effet de flou pour rendre des caustiques plus douces et limiter le bruit et les fireflies générés par cette haute précision. La valeur par défaut pour ce paramètre est de 0,01. Ce n’est pas à proprement parler un paramètre qui accélère les samples par seconde mais comme les caustiques ont tendance à générer beaucoup de bruit, il permet de flouter ce bruit sélectivement pour éviter de devoir faire des rendus trop longs (si le rendu des caustiques ne doit pas être très précis).

GI Clamp : contrôle les rebonds de lumière indirecte et prévoit un mécanisme pour équilibrer l’illumination globale et le bruit produit par les caustiques dans la scène. Réduire le GI Clamp diminue le bruit généré par une forte lumière passant à travers des objets clairs ou spéculaires (une valeur de zéro correspondant simplement à de la lumière directe sans aucun rebonds). C’est un paramètre très utile lorsqu’on a des bruits parasites (ou des fireflies) qui apparaissent en cours de rendu d’un objet très éclairé provoquant une radiosité très bruitée. Tout comme le Caustic Blur, c’est une technique qui évite de devoir faire des rendu très longs pour éliminer un type bruit parasite spécifique. Régler cette valeur peut radicalement diminuer le temps de rendu nécessaire à la disparition du bruit, bien entendu au détriment de la précision de l’illumination globale.

À savoir : lorsqu’on veut obtenir un objet très réfléchissant, on a tendance à forcer la dose dans l’index du matériau. Ce qui n’est pas toujours une bonne idée car un index très haut a tendance à générer pas mal de bruit, surtout s’il est combiné à un bump marqué. Qui peut le plus peut le moins, un miroir potable peut être obtenu avec un index de 1 si on ne veut pas de caustiques particulières… On trouve les indices de réflexion et de réfraction de matériaux un peu partout sur internet, à consommer sans modération avec Octane. À l’exception de matériaux extrêmement rares, un index au-delà 3 ou 3,5 ne devrait pas être utilisé.

Coherent Ratio : lorsque le Coherent Ratio est activé le bruit disparaît plus rapidement mais en contrepartie l’image scintille durant environ les 500 premiers samples de rendu. Ce mode peut faire gagner du temps en éliminant le bruit plus rapidement mais il est nécessaire de régler le Maximum Samples sur au moins 500 s/px, sans quoi on peut obtenir des résultats différents d’un rendu à l’autre (ou d’une image à l’autre dans une animation). C’est un mode à réserver au rendu final car le scintillement est trop fort pour pouvoir travailler confortablement dans le Live Viewer. Si j’ai bonne mémoire, les développeurs conseillent de ne pas dépasser une valeur de 0,5. Une valeur entre 0,35 et 0,45 est un bon compromis il me semble, mais c’est à tester !

Static Noise : ce paramètre est en relation directe avec le Coherent Ratio, il évite que le bruit ne bouge entre deux images, ce qui pourrait donner un effet vibratoire. Surtout utile pour le rendu d’animation bien entendu.

Octane render : optimisation du rendu. Dès que la source lumineuse est plus importante, le rendu en Pathtracing est le noyau le plus adapté si on veut des caustiques (ici légèrement floutées par le Caustic blur).

Dès que la source lumineuse est plus importante, le rendu en Pathtracing est le noyau le plus adapté si on veut des caustiques (ici légèrement floutées par le Caustic blur).

Le kernel PMC

Le noyau PMC est lui aussi plus cohérent et plus lisible quant à ses paramètres puisqu’il ne comporte pas non plus de modes. Pas mal de paramètres vus avec le DirectLighting et le Pathtracing sont équivalents ici comme le Maximum Samples, le Path termination power, le Ray epsilon, le Filter size, l’Alpha channel, l’Alpha Shadows et le Caustic blur. Je me contenterai donc d’un copier-coller pour ces paramètres. D’autres paramètres comme le Coherent Ratio ou le Static Noise ne sont tout simplement pas présents alors que d’autres sont spécifiques à ce noyau. Comme ce noyau nécéssite quelques centaines de samples avant de montrer son plein potentiel, il est à réserver aux rendus d’images fixes. L’utiliser pour de l’animation serait un choix peu judicieux, à moins d’une nécessité absolue pour une scène extrêmement difficile et d’un délai de production suffisamment large…

Maximum Samples : c’est le nombre de samples (ou passes) par pixel que le moteur doit calculer avant de s’arrêter. En théorie, Octane, comme tout moteur non-biaisé, pourrait continuer de calculer une image à l’infini mais il faut bien lui dire d’arrêter un jour… Selon qu’une image est éclairée par un seul soleil en extérieur ou par une lumière indirecte en intérieur, le nombre de samples à calculer ne sera pas le même pour obtenir une image propre et sans bruit. Idem si la scène est très chargée en polygones ou qu’il y a beaucoup de matériaux transparents et/ou réfléchissants, etc. C’est donc une valeur empirique à déterminer à l’œil, selon qu’on veuille un rendu rapide de test ou une image finale impeccable.

À savoir : si lors du rendu de test dans le Live Viewer on constate que l’image est d’assez bonne qualité à 500 samples, il n’est pas nécessaire d’augmenter le nombre de samples pour le rendu final. Toutefois comme cette image sera probablement de plus haute définition, elle mettra plus de temps pour atteindre les 500 samples par pixels puisqu’il y a plus de pixels à calculer… Logique non ? La proportion est quasi arithmétique : pour une image 4 fois plus grande, ça mettra 4 fois plus de temps.

Diffuse Depth : contrairement à son homonyme du noyau DirectLighting, ce paramètre ne détermine pas seulement le nombre de réflexions diffuses mais aussi le nombre de réflexions et de réfractions. Il détermine donc la profondeur et la finesse du rendu dans son ensemble. La valeur par défaut de 16 est une valeur idéale mais elle est souvent bien trop haute. Pour une scène de type extérieur avec éclairage par un soleil, on peut descendre jusqu’à 4 alors qu’une scène d’intérieur avec éclairage indirect demandera une valeur aux alentours de 8. Bien entendu, ces valeurs ne sont qu’indicatives, si on a beaucoup de réflexions ou de réfractions, il faudra peut-être revoir ces valeurs à la hausse, en gardant toujours à l’esprit que moins haute sera cette valeur, plus rapide sera le rendu et qu’une valeur de 16 devrait normalement suffire dans tous les cas (à moins de rendre un labyrinthe de miroirs éclairé par une bougie, par exemple…).

Specular Depth : même si cette valeur porte le même nom que dans le noyau DirectLighting, son effet est moins arithmétique. Il s’agit ici d’un réglage concernant toujours le matériau de type specular mais dans le cadre d’un calcul plus global, plus subtil et pas simplement la superposition de transparences successives. Ce réglage va servir à éviter les effets de bordure noires autour des objets transparents mais ne va pas pour autant limiter les nombre d’objets transparents vus à travers d’autres objets transparents. Selon moi, la valeur par défaut de 16 est très haute et peut bien souvent être diminuée jusqu’à 8 mais c’est à tester selon les cas !

Path Termination Power : permet de contrôler le rapport entre les échantillons par seconde et la convergence (la vitesse de disparition du bruit). Augmenter ce paramètre forcera le kernel à garder des rayons plus courts et à passer moins de temps sur les zones sombres (ce qui signifie qu’elles conserveront plus de bruit), au bénéfice du calcul de plus de samples par seconde et donc d’un rendu plus rapide. Réduire cette valeur forcera par contre le kernel à tracer des rayons plus longs en moyenne et à passer plus de temps sur les zones sombres, au détriment de la vitesse de rendu. En bref, des valeurs élevées augmentent la vitesse de rendu, mais peuvent conduire à bruit plus élevé dans les zones sombres, c’est donc une proportion à trouver en fonction de la scène et de son type d’éclairage. La valeur par défaut donne généralement de bons résultats.

Ray epsilon : est une valeur qui contrôle le biais entre la géométrie et le rayon. Il n’est généralement pas nécessaire de la modifier sauf si la scène présente des problèmes d’échelle et que des cercles concentriques apparaissent dans l’illumination. Ce qui est très rare si on travaille à échelle réelle.

Exploration Strength : ce paramètre détermine à quel point le noyau doit investiguer un rayon valable avant d’essayer d’en trouver un autre. Une valeur basse va générer une image plus bruitée alors qu’une valeur haute va générer une image tachée et molle. Le paramètre par défaut donne généralement de bons résultats. Augmenter légèrement la valeur par défaut peut contribuer à réduire plus rapidement le grain dans certain cas. À tester selon le type d’éclairage.

Direct Light Importance : augmenter ce paramètre pousse le noyau à se concentrer davantage sur les rayons de lumière directe. Par exemple, imaginez la lumière du soleil passant à travers une fenêtre qui crée une tache lumineuse sur le sol. Si le Direct Light Importance est défini à 1, le noyau va fortement concentrer ses efforts sur cette zone, même si elle devient propre très rapidement. Par contre, si le Direct Light Importance est réduit, le noyau va réduire ses efforts sur cette zone de lumière directe et se concentrer davantage sur des zones de lumière indirecte plus difficiles à rendre. Puisque le kernel PMC est généralement choisi en raison d’un type de scène comportant beaucoup de lumière indirecte, le paramètre par défaut est défini en ce sens.

Max Rejects : cette valeur permet de contrôler le biais du rendu. En réduisant cette valeur, le rendu sera plus biaisé (le contraire d’un rendu non-biaisé) et donc plus rapidement propre mais moins précis. Dans sa logique de fond, c’est un paramètre similaire (mais pas comparable) au GI Clamp.

Ray epsilon : est une valeur qui contrôle le biais entre la géométrie et le rayon. Il n’est généralement pas nécessaire de la modifier sauf si la scène présente des problèmes d’échelle et que des cercles concentriques apparaissent dans l’illumination. Ce qui est très rare si on travaille à échelle réelle.

Filter size : ce paramètre est en quelque sorte l’équivalent du réglage d’anti-aliasing de Cinema 4D. Le réglage par défaut est généralement bon mais il est parfois nécessaire d’augmenter légèrement la valeur pour des scènes avec beaucoup de droites peu inclinées (comme des barreaux par exemple) ou de la diminuer si on veut une image avec un peu plus de piqué. On peut aussi parfois réduire le bruit en augmentant cette valeur mais il faut savoir que cela risque de donner une image floue ou molle.

Alpha Channel : active ou non le calcul d’une couche de transparence Alpha durant le rendu pour un compositing ultérieur. À ma connaissance, ça ne ralenti pas le calcul mais bien entendu ça consomme un peu de mémoire GPU… L’activation de ce paramètre est indispensable si on veut utiliser un objet Background de C4D.

Alpha Shadows : ce paramètre sert à prendre en compte les transparences pour le calcul des ombres : matériau specular, transparence alpha, opacité, Fake shadows pour les vitres architecturales, matériau Matte, materiau Portal, etc. Si rien de tout ça n’est utilisé dans une scène, il est utile de désactiver ce paramètre car il consomme pas mal de ressources. Par exemple, une scène avec des centaines d’arbres utilisant un feuillage avec des transparences Alpha se calculera quasi un tiers plus vite sans ce paramètre mais les ombres tiendront compte des panneaux de polygones supportant la texture des feuilles et pas l’Alpha des feuilles elles-mêmes.

Caustic Blur : est utilisé pour évaluer les caustiques sur des surfaces rugueuses et augmenter ou diminuer leur netteté. Une valeur de zéro fournit les caustiques les plus nettes et l’augmentation de cette valeur augmente l’effet de flou pour rendre des caustiques plus douces et limiter le bruit et les fireflies générés par cette haute précision. La valeur par défaut pour ce paramètre est de 0,01. Ce n’est pas à proprement parler un paramètre qui accélère les samples par seconde mais comme les caustiques ont tendance à générer beaucoup de bruit, il permet de flouter ce bruit sélectivement pour éviter de devoir faire des rendus trop longs (si le rendu des caustiques ne doit pas être très précis).

GI Clamp : contrôle les rebonds de lumière indirecte et prévoit un mécanisme pour équilibrer l’illumination globale et le bruit produit par les caustiques dans la scène. Réduire le GI Clamp diminue le bruit généré par une forte lumière passant à travers des objets clairs ou spéculaires (une valeur de zéro correspondant simplement à de la lumière directe sans aucun rebonds). C’est un paramètre très utile lorsqu’on a des bruits parasites (ou des fireflies) qui apparaissent en cours de rendu d’un objet très éclairé provoquant une radiosité très bruitée. Tout comme le Caustic Blur, c’est une technique qui évite de devoir faire des rendu très longs pour éliminer un type bruit parasite spécifique. Régler cette valeur peut radicalement diminuer le temps de rendu nécessaire à la disparition du bruit, bien entendu au détriment de la précision de l’illumination globale.

À savoir : lorsqu’on veut obtenir un objet très réfléchissant, on a tendance à forcer la dose dans l’index du matériau. Ce qui n’est pas toujours une bonne idée car un index très haut a tendance à générer pas mal de bruit, surtout s’il est combiné à un bump marqué. Qui peut le plus peut le moins, un miroir potable peut être obtenu avec un index de 1 si on ne veut pas de caustiques particulières… On trouve les indices de réflexion et de réfraction de matériaux un peu partout sur internet, à consommer sans modération avec Octane. À l’exception de matériaux extrêmement rares, un index au-delà 3 ou 3,5 ne devrait pas être utilisé.

Parallelism : ce paramètre est utilisé pour réduire le nombre d’échantillons qui sont étudiés en parallèle afin de faire apparaître les caustiques plus tôt, au détriment de certaines performances. Donc une valeur haute accélèrera légèrement le rendu au détriment de la rapidité d’apparition des caustiques alors qu’une valeur basse ralentira le rendu, au bénéfice d’un rendu plus rapide des caustiques. Par exemple, ce paramètre peut avoir un impact important dans le cas du rendu de rayons lumineux à travers un brouillard (fabriqué à partir d’un nœud SSS dans un matériau specular, voir cet article) : une valeur basse ralentira le nombre de samples/seconde mais les rayons lumineux apparaitront plus vite à travers le brouillard alors qu’une valeur haute accélèrera légèrement la vitesse globale au détriment d’un brouillard visible moins rapidement. Comme les caustiques apparaissent moins vite en valeurs hautes, sur un nombre limité de samples le brouillard risque d’être plus grainé. Ce grain a tendance à s’estomper sur de grands nombres de samples. La valeur par défaut de 4 donne un bon rapport résultat/vitesse.

Octane render : optimisation du rendu. Exemple de brume PMC, 500 samples, Parallelism à 1.

Exemple de brume PMC, 500 samples, Parallelism à 1.

 

Octane render : optimisation du rendu. Exemple de brume PMC, 500 samples, Parallelism à 8.

Exemple de brume PMC, 500 samples, Parallelism à 8.

Octane render : optimisation du rendu. La brume fonctionne également avec le noyau DirectLighting.

La brume fonctionne également avec le noyau DirectLighting.

Octane render : optimisation du rendu. Si on veut des caustiques en plus de la brume, le noyau PMC est quasi indispensable.

Si on veut des caustiques en plus de la brume, le noyau PMC est quasi indispensable.

Quelques conseils supplémentaires

Le matériau Portal

Dès que vous envisagez de faire un rendu d’intérieur, il est indispensable d’inclure dans votre modélisation devant les ouvertures (fenêtre, porte ouverte avec un éclairage venant de la pièce voisine, etc) des panneaux ajustés au plus près de vos ouvertures mais comportant le moins de polygones possibles (idéalement un seul quadrangle) avec la normale orientée vers l’intérieur de la scène et un matériau Portal appliqué. Ces Portals vont avoir pour fonction de concentrer les rayons calculés des sources lumineuses sur les ouvertures de votre scène et réduire de beaucoup les temps de rendu.

Ces Portals ne se limitent pas aux ouvertures d’une scène d’intérieur, ils peuvent également servir à concentrer le calcul de la lumière aux extrémités d’un abat-jour ou quelque source lumineuse partiellement couverte. Il n’est pas nécessaire d’en mettre partout mais surtout sur les zones difficiles.

Faites attention de toujours bien orienter les normales des polygones dans le sens de la concentration de la lumière : vers l’intérieur d’une salle où se trouve la caméra ou vers l’extérieur des extrémités d’un abat-jour. Sans quoi, ces portals auront un effet contre-productif.

Les sources lumineuses

Que vous utilisiez des matériaux diffuse avec un emitter ou les lampes de base intégrées au plugin, les sources de lumière autres que l’Octane Daylight intègrent un paramètre de sampling_rate. Ce paramètre a pour fonction de régler la priorité d’une source lumineuse par rapport aux autres dans le cas où elle génèrerait trop de bruit, pour diverses raisons : un objet lumineux très chargé en polygones ou masqué par un abat-jour qui rend la dispersion de sa lumière difficile, une lumière à proximité d’un objet réfléchissant ou specular, etc. Dans ce cas vous pouvez augmenter ce paramètre pour forcer le moteur de rendu à concentrer un peu plus ses calculs sur cette source lumineuse en particulier.

Il va de soi que si vous mettez toutes vos sources lumineuses à 1000, l’intérêt de ce paramètre s’annule puisque toutes les sources ont alors la même priorité. Ce n’est pas un paramètre miraculeux mais il peut accélérer les choses dans certains cas.

Concernant les sources lumineuses, j’ai eu l’occasion de temps à autre de constater que certains fichiers HDRI disponibles librement sur internet avaient aussi la fâcheuse tendance à générer du bruit, même si l’importance sampling est bien activé comme il se doit. Il s’agit là de fichiers pour lesquels il n’y a rien à faire si ce n’est en choisir un autre… Je me suis arraché quelques cheveux sur ce sujet, je veux vous éviter une calvitie précoce.

Le CameraImager et l’exposition

Le CameraImager est le centre de contrôle du rendu 32bits par couche donc tous ses paramètres ne feront normalement pas redémarrer le rendu à l’exception du paramètre Premultiply alpha qui nécessite de recalculer la passe alpha (à moins que le plugin pour Cinema 4D ne se trompe et n’identifie un changement comme nécessitant une mise à jour du Live Viewer…).

C’est important à savoir car cela signifie qu’en augmentant l’exposition on ne change pas fondamentalement l’intensité de l’éclairage de la scène. Donc sur des scènes très sombres à la base, augmenter radicalement l’exposition aura pour effet d’augmenter la visibilité du grain (un peu à la manière d’un APN en ISO 1600 ou 3200). Pour faire disparaître ce grain, il faudra donc effectuer des rendus beaucoup plus longs. Il est dès lors préférable d’augmenter la puissance des sources lumineuses pour compenser l’absence de luminosité afin de pouvoir diminuer l’exposition et réduire les temps de rendu.

Dans le même ordre d’esprit, le choix du Camera Response a son importance car il s’agit juste de courbes colorimétriques qui influent sur le rendu 32bits et altèrent le gamut. Certaines de ces courbes augmentant fortement le contraste dans certaines valeurs sombres, elles auront pour effet de révéler un grain qui serait invisible avec une autre courbe. Là aussi, le grain ne disparaîtra pas avec le temps ou alors très lentement. La meilleure solution sera de soit jouer sur le gamma, de changer de courbe ou de revoir son éclairage. Les courbes de type Agfachrome et Ektachrome ont malheureusement cette fâcheuse tendance, même si certaines d’entre-elles sont très jolies.

Dans les choix de Camera Response, il est également bon de savoir que dès qu’on choisit une courbe autre que la courbe linear, le gamma est adapté en interne. Donc en théorie, il ne devrait pas être nécessaire de faire varier le gamma. Dans le cas de la courbe linear, il faut bien entendu adapter le gamma à son environnement (2.2 sur Windows et 1.8 sur Mac) si on veut visualiser la compensation correspondante.

En remplacement, si on veut juste légèrement réchauffer et ou refroidir une ambiance, on peut choisir une couleur dans la white balance. Cette option n’a pas cet effet de renforcement du contraste et permet un contrôle plus personnalisé de l’ambiance colorée. Attention, cette option fonctionne sur le principe des couleurs complémentaires : donc pour donner une ambiance plus rouge/orangé, on choisira un cyan ; pour une ambiance plus jaune, un bleu/violet ; pour une ambiance plus verte un magenta, etc. Seules la teinte et la saturation seront prises en compte, la luminosité n’influencera rien.

Les passes de rendu

Lorsqu’on est habitué à travailler beaucoup en compositing, on peut être tenté d’activer un maximum de passe pour les avoir toutes sous la main au cas où. Avec Octane, ce n’est pas toujours un bon calcul car certaines de ces passes peuvent prendre du temps à rendre – malgré un système assez bien optimisé – mais aussi parce qu’elles consomment pas mal de mémoire GPU. Même si le système de out-of-core textures vient de faire son apparition (système permettant de charger une partie des textures dans la mémoire RAM au lieu de la mémoire GPU), l’impact sur les performances peut être assez important de par les fréquents aller-retour via le port PCI-Express. Il est donc préférable de bien évaluer les passes dont on a réellement besoin, a fortiori si on veut lancer un calcul d’animation où chaque seconde de rendu compte.

Bien entendu, certaines de ces passes comme les Beauty passes doivent être idéalement rendues en même temps que la passe principale puisqu’elles partagent le même nombre de samples/seconde mais rien n’empêche de rendre d’autres passes comme les Info passes ultérieurement selon les besoins. Étant donné que les Info passes sont rendues indépendamment de la passe principale, il peut être plus rapide de faire un rendu séparé avec très peu de samples pour la passe principale et les Info passes nécessaires par exemple. Ou de demander qu’elles démarrent après les Beauty passes. Etc.

Il y a pour ces passes des tas d’options disponibles qui vont surtout dépendre de vos besoins. Toutes les détailler dans le cadre de cet article serait bien trop fastidieux. Je vous invite donc à vous y plonger quelques heures pour bien en comprendre toute la mécanique. Ce ne seront pas des heures perdues.

Travailler avec les Octane ObjectTag

J’ai déjà eu l’occasion d’en parler dans d’autres articles, l’Octane ObjectTag permet de gérer toute une série d’aspects comme les Object ID ou les Layer ID, le type de motion blur, le mesh number, le lissage OpenSubDiv, etc. C’est le centre de pilotage des objets d’Octane. S’il peut sembler peu utile pour l’optimisation des images fixes, il est tout à fait indispensable pour l’optimisation des animations.

Lorsqu’on sait que sans la gestion via l’Octane ObjectTag une scène est exportée en totalité vers le GPU à chaque image, on imagine aisément le gain de temps que peut représenter l’identification des éléments de scène statiques et des éléments animés pour une exportation des seuls éléments animés à chaque changement d’image.

Ceci ne concerne pas à proprement parlé l’optimisation du rendu lui-même mais bien l’optimisation de la préparation de la scène avant le lancement du rendu. Sur une scène avec un décor statique de quelques milliers ou millions de polygones, cela peut représenter des heures de différence au bout du compte. Cette petite piqûre de rappel a donc toute sa place ici mais je ne m’étendrai pas sur les paramètres…

Conclusion

Pour conclure, il ne faut pas oublier que les paramètres par défaut sont prévus pour un rendu optimal orienté qualité dans les noyaux Pathtracing et PMC. Le noyau DirectLighting étant quant à lui plutôt optimisé pour un rendu rapide. Donc, en Pathtracing ou PMC, ces paramètres par défaut étant fort gonflés, commencez par réduire le Diffuse Depth et le Specular Depth, vous aurez déjà fait un bon tiers du chemin. En jouant sur le GI Clamp, vous aurez amélioré un autre tiers du chemin. Et si vous voulez encore grappiller le dernier tiers, il vous reste à ajuster les autres paramètres. L’idéal étant bien entendu d’ajuster tout ça en connaissance de cause et en fonction de votre scène. Améliorer la vitesse du DirectLighting est par contre plutôt difficile à partir des paramètres par défaut. Par contre, selon votre scène il sera nécessaire d’augmenter certaines valeurs pour obtenir un rendu de meilleure qualité comme les profondeurs de Diffuse, Specular et Glossy. N’oubliez pas non plus d’ajuster l’AO Distance si vous faites un rendu en mode AO ambient occlusion.

Dans tous les cas, le Coherent ratio n’est jamais actif à cause du scintillement qu’il provoque qui rend difficile la préparation de la scène dans le Live Viewer. Toutefois, ce serait une bonne idée de le paramétrer entre 0,2 et 0,4 pour le rendu final. Ce paramètre contribuera à réduire plus rapidement le bruit. Attention toutefois : dans certaines scènes avec de la brume j’ai constaté qu’il pouvait générer des artefacts triangulaires avec une valeur plus haute que 0,2. À surveiller donc…

Voilà tout ce que je peux dire pour l’instant sur la problématique de l’optimisation des rendus avec Octane. J’espère que cette lecture vous aura été utile pour la compréhension des kernels d’Octane. Bien entendu, je ne prétends pas tout savoir sur le sujet et il se peut que je me sois trompé dans la compréhension de l’un ou l’autre paramètre. Dans ce cas n’hésitez pas à me faire part de vos commentaires ou de vos suggestions.

Pin It on Pinterest

Share This