Open Shading Language (OSL)

Le langage Open Shading Language (OSL) vous permet d'utiliser de nouvelles textures OSL, d'appliquer différentes catégories de textures OSL et de créer vos propres textures OSL à l'aide d'outils de développement compatibles avec tous les moteurs de rendu.

Le langage Open Shading Language (OSL) est un langage d'ombrage Open Source plutôt simple. Il peut être utilisé de plusieurs façons. Vous pouvez utiliser la texture OSL, qui est un environnement d'exécution pour les ombrages OSL dans 3ds Max et qui fonctionne comme n'importe quelle texture 3ds Max intégrée standard. Il existe également une catégorie de textures OSL préchargées faciles à utiliser. En outre, vous pouvez utiliser n'importe quelle texture OSL que vous avez téléchargée à partir d'Internet. Enfin, vous pouvez créer un ombrage ou une texture dans OSL à l'aide de nos outils de développement. Par rapport à la fonctionnalité équivalente de développement de texture 3ds Max en langage C++, cette méthode permet de créer des textures personnalisées de manière beaucoup plus simple.

OSL fonctionne avec n'importe quel moteur de rendu prenant en charge l'API d'ombrage 3ds Max standard (ligne de balayage, vRay, Corona, etc.). Il fonctionne également à l'extérieur des moteurs de rendu, dans tout emplacement 3ds Max dans lequel une texture standard est requise, par exemple dans le modificateur Déplacement. Il fonctionne également avec les moteurs de rendu prenant en charge OSL de manière native, par exemple Arnold. Dans ces cas, l'environnement d'exécution dans la texture OSL n'est pas utilisé. Au lieu de cela, le code source OSL, les valeurs des paramètres et les liaisons d'ombrage sont envoyés au moteur de rendu, qui exécute le code OSL. De nouveaux moteurs de rendu prenant en charge le langage OSL de manière native font leur apparition chaque jour.

OSL utilise la compilation "juste-à-temps" et l'optimisation simultanée de l'arborescence des ombrages, tant que tous les ombrages dans l'arborescence des ombrages sont de type OSL. Vous pouvez mélanger des ombrages OSL et des ombrages standard, mais les optimisations seront affectées.

Remarque : La terminologie de l'infographie n'est pas toujours précise. Selon les contextes, les applications et les moteurs de rendu, des termes comme "ombrage", "texture", "procédural" et "matériau" peuvent avoir un sens différent. OSL ne prenant pas en charge les fermetures dans 3ds Max, ce sont des textures qui s'affichent. Toutefois, étant donné qu'OSL est un langage d'ombrage, les termes "ombrages" et "textures" sont utilisés comme synonymes dans le contexte d'OSL.
Remarque : L'API de rendu d'origine ne prenait pas en charge les sorties multiples. Une extension a été introduite ultérieurement. Pour cette raison, la plupart des matériaux et des textures ne comprennent pas la connexion à une texture avec des sorties multiples. Pour résoudre ce problème, la texture Sélecteur de sortie a été introduite pour agir comme intermédiaire : elle est automatiquement insérée entre un élément ayant plusieurs sorties et un autre qui ne comprend pas les sorties multiples. La texture Sélecteur de sortie est automatiquement masquée dans l'Editeur de matériaux détaillé. Elle ressemble à une connexion classique, à l'exception du fil qui est bleu au lieu d'être rouge. Pour activer ou désactiver cette option, sélectionnez Préférences dans le menu Options de l'Editeur de matériaux détaillé, puis activez ou désactivez l'option Masquer sélecteurs de sortie de map unique.

Limitations liées à OSL

La texture OSL présente quelques limitations dans 3ds Max.

Limitations Description
Prend uniquement en charge les textures, et non les matériaux

Un ombrage écrit en langage OSL peut avoir plusieurs sorties renvoyant différents types de données, tels que des couleurs, des valeurs à virgule flottante, des nombres entiers, des chaînes, etc. Tous ces éléments sont pris en charge.

OSL prend également en charge un type spécial appelé une fermeture. Les fermetures sont en quelque sorte des matériaux, mais aucune prise en charge n'est disponible. Dans la pratique, cela signifie que la texture OSL peut uniquement être utilisée pour créer des textures procédurales et non pour créer des matériaux.

Par conséquent, il est recommandé de créer les textures procédurales OSL tout en connectant les sorties à un matériau indépendant du rendu, normalisé et bien défini tel qu'un matériau physique.

Si un ombrage OSL disponible en ligne ne semble avoir aucun effet ou aucune sortie, il s'agit peut-être d'un matériau OSL.

Prend uniquement en charge les types de données simples

Dans 3ds Max, la texture OSL prend uniquement en charge les types de données simples : couleurs, vecteurs, nombres à virgule flottante, nombres entiers et chaînes. Elle ne prend pas en charge les réseaux ou les structures en tant qu'entrées.

Dans la pratique, cela ne devrait pas poser de problème, car très peu d'ombrages OSL utilisent des réseaux ou des structures en tant qu'entrées. La limitation s'applique uniquement aux paramètres. Les réseaux et les structures fonctionnent correctement à l'intérieur du code OSL.

Aucune instruction #include

Dans 3ds Max, le code OSL ne peut pas contenir l'instruction #include. Si votre code OSL contient l'instruction #include <stdosl.h>, elle n'est pas nécessaire et peut être supprimée. Le fichier stdosl.h est implicitement inclus par le compilateur.

Prise en charge des fenêtres

Plusieurs textures OSL utilisent leur ombrage réel pour l'affichage dans les fenêtres, ce qui permet d'améliorer les performances et d'optimiser considérablement leur représentation visuelle. Pour ce faire, exécutez la fenêtre en mode réaliste avec textures. Les textures OSL qui utilisent l'ombrage afficheront le message Fenêtre : ombrage utilisé au-dessus de leurs paramètres dans l'Editeur de matériaux. Toutefois, les textures OSL qui utilisent toujours l'ancrage affichent le message Fenêtre : texture ancrée utilisée.

Les ombrages OSL suivants utilisent toujours les textures ancrées :

UVW

Racine

Scène

Valeurs

Remarque : Cette amélioration de la fenêtre n'est pas prise en charge par le matériau Arnold qui utilise toujours des textures ancrées.