Shaders can be written in Open Shading Language, an advanced shading language for production GI renderers. OSL shaders placed in the shader search path are automatically registered as Arnold shader nodes, with their parameters converted to Arnold parameters. Once loaded, they can be inspected, instantiated and linked in exactly the same way as C++ shaders. OSL shaders can be used to implement texture patterns and materials using closures.
- The shaders must have unique names. If the name conflicts with an existing shader the OSL shader won't load. You should see a warning in the log in this case.
- Multiple outputs are not supported at the moment.
|An example .osl shader and .mtd file can be found here.|
More information about using OSL shaders can be found here.
If you change the shader code in a text editor whilst rendering, you will need to "update full scene" in the Arnold RenderView.
Just like any other third-party shader libraries, OSL shaders placed in the shader search path are automatically registered as Arnold shader nodes. The OSL shader parameters are converted to Arnold parameters. Once loaded, they can be inspected, instantiated and linked in exactly the same way as C++ shaders.
You can render OSL shaders directly in MtoA. You must do the following:
Create a folder where the OSL shader will reside. Add this line to your Maya.env file (location of the .osl shaders):
- Place the OSL shader (with .mtd metadata file) in the
ARNOLD_PLUGIN_PATHfolder and they will automatically be available as shader nodes. Arnold will automatically compile the .osl file and produce a dill (.oso) file.
- The shader should be visible in the Hypershade window.
.osl shader rendered with MtoA