J'avais promis, il y a quelques temps dans un autre fil, d'expliquer ce que sont les shaders de DAZ Studio. Et bien voilà... Si vous avez des questions, postez moi un message
Qu'est-ce qu'un shader ?Sous-entendu dans DAZ Studio, car ce terme est également utilisé pour d'autres applications d'images de synthèse sans être exactement un équivalent.
Un shader est en fait un programme (informatique !) qui est utilisé par le moteur de rendu de DAZ Studio (appelé 3Delight) pour déterminer quelle est la représentation d'un objet dans l'image (ouf !). Le rendu OpenGL à l'écran ou rapide de DAZ Studio n'utilise pas les shaders.
Il y a en fait cinq types de shaders :
- Les 'surface shaders' sont les shaders responsables de calculer à quoi ressemble l'objet lorsqu'il reçoit de la lumière (je simplifie, il s'agit en fait des propriétés optiques de la surface de l'objet).
- Les 'displacement shaders' sont responsables des modifications de l'apparence de l'objet, soit avec de véritables déplacements de sa surface, soit en modifiant la trajectoire de la lumière.
- Les 'light shaders' sont les shaders qui simulent les sources de lumières : lampe, éclairage ambient, etc.
- Les 'volume shaders' sont les shaders responsables de décrire comment la lumière varie lorsqu'elle se propage dans la scène. C'est ce qui permet de gérer les effets de brouillard, de l'atténuation due à l'atmosphère, etc.
- Les 'imager shaders' sont des processus qui traitent l'image en fin de calcul.
Pour des raisons que j'ignore, DAZ Studio n'utilise que les trois premiers types de shaders (alors que le moteur 3Delight les gère tous). Il n'est donc pas possible de faire des effets de brouillard directement dans DAZ Studio ni des opérations en post-processing lors du rendu. Il faudra simuler tout cela avec un programme 2D. Ce n'est pas très grave en pratique car ces effets sont en général très consommateur de temps de rendu.
Il est possible de créer soi-même ses propres shaders mais cela nécessite des compétences précises (langage RSL, compilation, script interne DAZ) et c'est donc hors sujet

Pour utiliser les shaders, DAZ Studio utilise son langage de script interne afin de présenter les shaders à l'utilisateur commme des composants de l'application. Cela va donner :
- Des shaders pour les textures des objets (surface shaders et displacement shaders).
- Des lampes ou des composants pour l'éclairage (light shaders).
Quels sont les shaders de DAZ Studio ?Par défaut, DAZ Studio inclut des shaders appelés (à juste titre) "DAZ Studio default". Ce sont ces shaders (surface et déplacements) qui sont appliqués pour la plupart des objets et ce sont les seuls livrés avec DAZ Studio. Les shaders de lumière sont ceux accessibles avec les lampes dans DAZ Studio : lumière ponctuelle (Point light), spot (Spot light), lumière distante (Distant light).
Il est possible d'enrichir ces shaders avec des modules complémentaires disponibles sur le site DAZ : les Poseworks (pwSurface, pwEffect, pwToon, etc.), Elite Human Surface shader. Il existe aussi des shaders gratuits, notamment les
shaders de joelegecko que je vous invite à télécharger car ils sont de grande qualité.
Les lumières peuvent également être étendues avec des modules offrant plus de souplesse (spot et lumière ponctuelle UberPoint par exemple), des surfaces lumineuses ou des éclairages globaux (UberEnvironment Light Shader IBL/HDRI, ahEnvironmentLight - la version 1 de ce dernier est encore accessible gratuitement sur le Web, la version 2 est payante chez DAZ).
Attention : il ne faut pas confondre les shaders et les "shader presets". Ces derniers ne sont que des configurations enregistrées de shaders, c'est-à-dire que vous ne pouvez les utiliser que si vous possédez le shader correspondant. C'est pourquoi certains composants récents de DAZ sont fournis avec des matériaux utilisant les shaders standard de DAZ Studio et des matériaux utilisant des shaders à acheter (pwSurface notamment) afin de donner de meilleurs rendus (au prix d'un plus grand temps de calcul en général).
Enfin, les shaders ne sont pas forcément dédiés pour du rendu réaliste. Les shaders fournis par défaut dans DAZ Studio et le module payant pwToon permettent par exemple d'avoir des rendus style 'cartoon' et le module pwSketch permet de simuler du dessin au trait (crayon, fusain, etc.). pwCatch est même un shader pour effets spéciaux : il permet de gérer l'incrustation d'une image de synthèse dans une photo réelle avec transfert des ombres portées et des réflexions notamment.
Les shaders standard de DAZ StudioDAZ Studio propose en standard 12 shaders. Ces shaders sont en fait double : l'interface utilisateur présente un shader de surface couplé avec un shader de déplacement. Le shader de déplacement est globalement le même et c'est lui qui gère les paramètres 'Bump' et 'Displacement' que vous avez dans l'onglet 'Surfaces' - 'Advanced' qui vous permet de régler les caractéristiques des shaders (je vous invite à vous habituez au plus tôt à l'onglet 'Advanced' pour gérer les textures et à oublier l'onglet 'Basic' qui est vraiment trop simpliste).
Comment se fait-il qu'on ne voit pas ces 12 shaders ?
Parce que pour simplifier l'interface, DAZ Studio a une liste déroulante appelée 'Lighting Model' qui vous propose les choix suivants : 'Plastic', 'Metallic', 'Skin', 'Glossy (Plastic)', 'Matte' et 'Glossy (Metallic)'. Et c'est cette liste déroulante qui vous propose de choisir le shader de surface qui va s'appliquer à l'objet.
Mais je n'ai toujours que 6 shaders, pas 12 ?
Oui

. Mais, toujours dans le but d'une interface simple, dans la fenêtre 'Render Settings' qui permet de régler les options du rendu, et dans l'onglet 'General', vous avez une liste déroulante appelée 'Render Style' qui vous permet de choisir entre 'Normal' (rendu réaliste) et 'Cartoon' (pour un rendu toonesque). Et 2 x 6 = 12... Le compte y est : 'Platic'/'Normal', 'Plastic'/'Cartoon', 'Metallic'/'Normal', etc.
Cette façon d'avoir conçu l'interface utilisateur permet effectivement de la simplifier mais elle induit certaines limites :
- Il n'est pas possible de mixer un rendu toon pour un objet et un rendu réaliste pour autre (style Roger Rabbit !).
- Les caractéristiques sont communes aux shaders, or certains shaders n'ont pas besoin de ces caractéristiques. Par exemple, la valeur de la spécularité n'est pas prise en compte pour le shader 'Matte' puisque la surface est mate et donc non brillante !
- Certaines caractéristiques sont cachées comme le sub-surface scattering du shader 'Skin'.
Enfin, si vous installez un composant additionnel (comme les shaders de joelegecko), vous ne bénéficiez pas de la même intégration.
Peut-on avoir les shaders standard sous une forme éclatée ?
Oui. DAZ les met gratuitement à disposition sur son site (
http://free.daz3d.com/free_weekly/detail.php?free_id=249). Vous les installez et vous avez alors dans la liste des composants un répertoire 'DS Defaults' qui contient 13 vignettes : une pour le shader 'dzDefault' qui est l'interface vers le shader appliqué par défaut quand vous créez un objet et douze vignettes pour les 12 shaders standard.
Comment j'applique un autre shader à un objet ?
Il faut sélectionner à la fois l'objet dans l'onglet 'Scene'
ET l'objet dans l'onglet 'Surfaces'. Puis double-cliquer sur la vignette du shader. C'est valable pour les shaders standard comme pour n'importe quel autre shader que vous pourrez installer dans DAZ Studio.
Pour voir quel shader est pris en compte pour un objet, il faut aller dans l'onglet 'Surfaces'. En haut de l'onglet, en fonction de l'objet sélectionné dans la liste en dessous, DAZ Studio affiche le nom du shader appliqué ('Shader : DAZ Studio Default' par défaut).
Les caractéristiques des shaders.Les caractéristiques des shaders sont les paramètres qui apparaissent dans l'onglet 'Surfaces' - 'Advanced' de DAZ Studio. Elles sont spécifiques à chaque shader même si des caractéristiques sont communes à beaucoup de shaders.
La plupart des caractéristiques définies comme des couleurs (uniformes) peuvent être remplacées ou complétées par des cartes de textures qui définissent la couleur en chaque point. Les caractéristiques définies par des pourcentages peuvent être replacées ou complétées par des cartes de valeurs qui sont des images en niveaux de gris ou interprétées comme telles (blanc = 100%, noir = 0% et les valeurs intermédiaires en gris)
*
DiffuseLe canal 'Diffuse' permet de définir la texture de l'objet via 'Color'. L'intensité 'Strength' du canal, en gros la luminosité de la couleur, est réglée par le curseur.
*
SpecularLe canal 'Specular' permet de définir les tâches lumineuses en direction des sources de lumière (reflets spéculaires). 'Glossiness' définit la concentration de la tâche (100% = petite tâche très lumineuse, 0% = tâche délavée étendue). 'Color' définit la couleur de la tâche. Attention, le mélange entre la couleur dffuse et la couleur du reflet dépend du shader. Ainsi un reflet cyan sur une couleur diffuse rouge donnera un reflet blanc avec un shader 'Plastic' ou 'Skin' (cyan et rouge sont complémentaires) mais pas de reflet avec un shader 'Metallic'. 'Strength' définit l'intensité des reflets (0% = pas de reflet).
'Multiply through Opacity' multiplie l'intensité des reflets avec celle de l'opacité (comme le nom l'indique !). D'un point de vue pratique : mettre à 'On' si vous voulez supprimer les reflets des objets transparents, à 'Off' sinon.
Les shaders 'dzGlossy', 'dzGlossyMetal', 'dzPlastic', 'dzMetal' et 'dzSkin' offrent deux paramètres de plus : 'Glossiness Linear Adjustment' dont je ne sais pas l'utilité et 'Specular Sharpness' qui définit si les bords de reflets sont nets ou en dégradés.
Il n'y a aucun paramète de spécularité pour le shader 'dzMatte'.
*
AmbientLe canal 'Ambient' définit la texture de l'objet en l'absence de lumière. C'est un moyen de rendre un objet plus lumineux dans des éclairages faibles. Ce paramètre permet de simuler les éclairages ambiants qui sont omnidirectionnels. Plus la scène est sombre, plus vous devrez diminuer l'intensité de ce paramètre sauf si l'objet est lumineux en lui-même (flamme de bougie, lampe, etc.).
*
OpacityCe canal permet de définir l'opacité - le contraire de la transparence - de l'objet. AVec une carte de texture, c'est ce qui permet de faire la dentelle des vêtements !
*
BumpIl s'agit du canal pour simuler des reliefs à la surface de l'objet.
*
DisplacementIl s'agit du canal pour modifier la surface de l'objet avec de vrais déplacements.
*
ReflectionLe canal indique la couleur et l'intensité de la réflexion de la lumière à la surface de l'objet. Cela peut aller du métal peu réfléchissant au miroir à réflexion parfaite (100%). Attention, pour avoir une bonne réflexion, prenez une couleur diffuse sombre.
Le shader 'dzSkin' ne gère pas les réflexions.
*
RefractionLe canal définit la couleur et l'intensité de la réfraction, c'est-à-dire
lorsque la lumière traverse l'objet (verre, crystal, eau, etc.). Ne fonctionne évidemment qu'avec des objets au moins partielllement transparent. 'Index of refraction' est l'indice de réfraction de la matière composant l'objet, donc la façon dont la lumière est déviée par la matière (voyez un livre de physique si vous ne savez pas ce que cela représente !).
Le shader 'dzSkin' ne gère pas les réfractions.
*
SubsurfaceCe canal n'apparaît que dans le shader 'dzSkin'. Il gère la dispersion de la lumière en sous-surface (
sub-surface scattering) pour les matériaux légèrement translucides comme la peau, bien sûr, mais aussi le lait, la cire, le jade, etc.
*
GeneralC'est le choix du shader (voir plus haut).
*
UV SetJe n'ai jamais utilisé ce paramètre ! Je ne sais donc pas à quoi il sert et les fois où j'ai regardé dans la documentation, je n'ai rien compris !
*
SmoothingIl s'agit d'une option de rendu qui n'est pas vraiment dépendante du shader. En fait, la géométrie des objets est réalisée à partir de facettes qui font entre elles des angles nets (les arêtes du maillage). Afin de donner un aspect plus lissé au rendu et faire disparaître ces arêtes, le paramètre indique l'angle au delà duquel le rendu lissera la texture. Par défaut, la valeur est de 89,9°, soit un tout petit peu moins qu'un angle droit (pour ne pas arrondir les angles du cube !).
Pour mieux comprendre ce paramètre, prenez une sphère avec assez peu de facettes et réglez le paramètre à 0 ; vous aurez alors un superbe polyèdre qui simulera parfaitment un bouchon de carafe en crystal taillé (ou une boule miroir de discothèque

). À l'inverse, prenez un cube et réglez le paramètre à 120 ; vous verrez que le coin en face de la caméra et les arêtes qui y sont rattachées disparaissent lors du rendu.