Updated Nov 15th 2015
— alShaders provides a suite of shaders, procedural textures and utility nodes that forms a complete, production-oriented shader library for SolidAngle's Arnold renderer.
from Stephen Blair.
The collection includes surface shaders: alSurface
: alSurface is a physically plausible, energy-conserving, general-purpose surface shader — suitable for any dielectric or metallic material including skin, plastic, wood, metal, glass, etc. This document is a reference guide to the parameters. alLayer
: Shader to layer two surface shaders together alHair
: Dual-scattering, multiple-importance-sampled hair shader — create believable hair shading with a plausible direct lighting model and approximate multiple scattering. The scattering from a hair fibre is a complex interaction of multiple lobes, often referred to in the literature as R, TT and TRT. Those related to the Specular 1, Transmission and Specular 2 lobes, respectively. The Diffuse lobe represents multiple scattering between hair fibres. This document is a reference guide to the parameters.
Texture shaders: alFractal
: Fractal noise pattern generator — The classic shading artist's best friend with support for both fractal Brownian motion and turbulent noise types. alCellNoise
: Cell noise pattern generator — fractal cell noise with support for both distance-based effects and chips can be useful for a variety of procedural effects. alGaborNoise
: Gabor noise pattern generator — an advanced noise type alFlowNoise
: Flow noise pattern generator — Useful for creating noise patterns that feel similar to fluid flows. alPattern
: Simple pattern generator — generate different periodic wave signals to be used as the basis for other effects. alTriplanar
: Projects a texture orthographically in three axes — useful for quickly adding bombing patterns of texture to objects to add variation and breakup. alBlackbody
: Generates a Rec709 color from the blackbody spectrum for the given temperature — useful for fire, lava, light colors and any self-illuminated object. alFlake
: Generate a normal map of randomly-oriented flakes — useful for car paint shaders, granite and other polished minerals. To use, connect it as a tangent-space normal map to alSurface, making sure Gamma is set 1. Then connect a smooth normal (alInputVector set to Ns) to the Diffuse and Specular 1 Normal parameters. This will use the flake normal for Specular 2 only and the original smooth normal for Diffuse and Specular 1.
And utility shaders: alCombineFloat
: Utility shaders to combine float and color types in various ways (multiply, mix etc.) alRemapFloat
: Utility shaders for remapping and adjusting float and color values. alLayerFloat
: Layer multiple floats together with alpha blending — This can be handy for stacking multiple image or procedural channels together and blending between them in different areas, for example for a displacement shader. alLayerColor
: Layer multiple colors together — layer up to eight color channels together with a variety of Photoshop-style blending modes. alSwitchFloat
: Eight-way switch between input — use this to select between multiple float values based on the value of a float input. alSwitchColor
: Eight-way switch between inputs — use this to select between multiple color values based on the value of a float input. alCache
: Caches the input value for optimization of multple shader calls — useful for optimizing complex networks where you know that multiple evaluations of a particular subnet are slowing your render down. alCurvature
: Measure the local curvature of the surface — can be used to create effects such as stretch maps and dirt maps, or to simulate wear and tear. For best results remap and combine with a noise function then use it to drive layering effects in your surface shader. alInputVector
: Grab useful vectors from the shader state and use them in a network — combining these vectors can be useful as building blocks for more complex effects. alInputScalar
: Grab useful scalar values from the shader state and use them in a network — combining these vectors can be useful as building blocks for more complex effects. alJitterColor
: Applies random color variation within a range — use this in a network attached to multiple objects to add random color variation to each object.