Open Shading Language (OSL)

O Open Shading Language (OSL) permite usar um novo Mapa OSL, toda uma categoria de vários mapas OSL e criar mapas OSL próprios com ferramentas de desenvolvimento para uso com qualquer agente de renderização.

O Open Shading Language (OSL) é uma linguagem de sombreamento de código aberto, de entendimento simples. Pode ser usado de várias formas. Pode-se usar o Mapa OSL, que é um ambiente de execução para sombreadores OSL dentro do 3ds Max, e ele funciona como qualquer mapa do 3ds Max incorporado normal. Há também uma categoria de Mapas OSL pré-carregados que pode ser utilizada facilmente. Além disso, pode-se usar qualquer mapa OSL baixado pela Internet. Por fim, pode-se criar um sombreador ou mapa em OSL usando ferramentas de desenvolvimento próprias. Este é um método de criação de mapas personalizados bem mais simples do que desenvolver a funcionalidade equivalente como mapa do 3ds Max C++.

O OSL funciona em qualquer agente de renderização compatível com a API normal de sombreamento do 3ds Max (Scanline, vRay, Corona etc.). Funciona também fora de agentes de renderização, em qualquer lugar no 3ds Max onde seja solicitado um mapa normal, como no modificador de Deslocamento. Também funciona com agentes de renderização compatíveis com OSL de forma nativa, como o Arnold. Nesses casos, o ambiente de execução dentro do mapa OSL não é utilizado. Em vez disso, o código fonte OSL, os valores de parâmetros e as vinculações do sombreador são enviados ao agente de renderização, que executa o código OSL. Mais agentes de renderização compatíveis com OSL de forma nativa estão surgindo a cada dia.

O OSL utiliza de uma só vez a compilação "just-in-time" e a otimização de toda a sombra de árvores, desde que todos os sombreadores sejam OSL. Podem-se misturar sombreadores OSL e outros comuns, mas as otimizações serão afetadas.

Nota: A terminologia da computação gráfica nem sempre é precisa, e palavras como sombreador, mapa, textura, procedural e material têm significados diferentes dependendo do contexto, do aplicativo e do agente de renderização. Como o OSL no 3ds Max não é compatível com fechamentos, ele aparece como mapas. Porém, sendo uma linguagem de sombreamento, os termos sombreadores e mapas são utilizados como sinônimos no contexto do OSL.
Nota: A API de renderização original não era compatível com várias saídas. Essa extensão foi introduzida mais tarde. Por isso, a maioria dos materiais e dos mapas não decodifica a conexão com um mapa que possui várias saídas. Para solucionar esse problema, o mapa Seletor de saída foi introduzido como intermediário, inserido automaticamente entre um contexto com várias saídas e outro que não as decodifica. O mapa Seletor de saída é automaticamente ocultado no Editor de materiais Slate, onde tem aparência de uma conexão normal (exceto pelo fio azul em vez de vermelho). A opção pode ser ativada ou desativada selecionando-se Preferências no menu Opções no Editor de materiais Slate e alternando-se Ocultar único mapa seletores de saída.

Limitações do OSL

O mapa OSL tem algumas limitações no 3ds Max.

Limitação Descrição
É compatível somente com mapas, não com materiais

Um sombreador escrito em OSL pode ter várias saídas retornando diferentes tipos de dados, como cores, valores de ponto flutuante, números inteiros, sequências de caracteres e assim por diante. Isso é totalmente compatível.

No entanto, o OSL também é compatível com um tipo especial conhecido como fechamento. Pode-se considerar que fechamentos são materiais. Isso não é compatível. Na prática, significa que o mapa OSL só pode ser usado para criar texturas procedurais (mapas), e não para a construção de materiais.

Portanto, o fluxo de trabalho recomendado é construir seus mapas de texturas de procedimentos em OSL, mas conectar as saídas a um material padronizado, bem definido e independente do agente de renderização, como o Material físico.

Se um sombreador OSL encontrado online aparentemente não surtir efeito, ou não parecer ter qualquer saída, pode ser um material OSL.

Compatível apenas com tipos de dados simples

O Mapa OSL no 3ds Max só é compatível com os tipos de dados simples: cores, vetores, flutuações, números inteiros e sequências de caracteres. Ele não é compatível com matrizes ou estruturas como entradas.

Na prática, isso raramente é um problema, pois muito poucos sombreadores OSL usam matrizes ou estruturas como entradas. A limitação só se aplica a parâmetros; matrizes e estruturas continuam funcionando bem dentro do código OSL.

Não há instruções #include

O código OSL no 3ds Max não pode incluir a instrução #include. Se seu código OSL contiver a instrução #include <stdosl.h>, ela não é necessária e pode ser removida. O arquivo stdosl.h é incluído implicitamente pelo compilador.

Suporte para viewports

Muitos mapas OSL agora usam seu sombreador real para exibição de viewport, resultando em melhor desempenho e grande aprimoramento da sua representação visual. Para tal, execute a viewport em "Modo realista com mapas". Os mapas OSL que utilizam o sombreador mostram a notificação Viewport: sombreador usado acima dos seus parâmetros no Editor de materiais. No entanto, os mapas OSL que ainda usam consolidação exibem Viewport: textura consolidada usada.

Observe que, no momento, os sombreadores do OSL a seguir ainda usam texturas consolidadas:

UVW

Raiz

Cena

Valores

Nota: Esta melhoria da viewport também não é compatível com o material do Arnold, que sempre usa texturas consolidadas.