Houdini 20.5 Nodes VOP nodes

Principled Shader 2.0 VOP node

An artist-friendly shader that can model a large number of materials realistically.

Since 16.0

The goal of this shader is to produce physically plausible results while using intuitive rather than physical parameters. A large number of materials can be created with relatively few parameters. All parameters are in the zero to one range and represent plausible real-world values within that range.

Textures can be applied to all relevant parameters. Note that the texture value is always multiplied with the value of the parameter.

Parameters

Surface

Basic

Base Color

The overall color of the surface. Depending on other parameters, this can have different effects.

When Metallic is 0.0, Base Color controls the color of diffuse reflections. Use Reflect Tint to also tint reflections.

When Metallic is 1.0, diffuse is faded and Base Color only controls the color and intensity of reflections.

Use Sheen Tint to tint the Sheen effect with the Base Color.

Use Point Color

Tint Base Color with Cd attributes stored on the rendered geometry.

Use Packed Color

Tint Base Color with Cd attributes stored on rendered packed primitives.

Shade Both Sides As Front

Shade both sides of a surface as if they were the front side.

Any transparent part of the shader is unaffected, since transparency relies on the orientation of surfaces to function correctly.

Specular

IOR

Higher values reflect more light and bend refraction rays more.

The impact on reflectivity is strongest on surfaces facing directly towards the viewer. Surfaces facing less directly towards the viewer generally reflect more light, regardless of this parameter’s value.

Note

The shininess of a surface also depends greatly on its Roughness.

Tip

To disable reflections completely, set this parameter to 1.0. This can speed up rendering where reflections are not needed. When using a texture, this effect also occurs in completely black areas of the texture.

The effect on a shiny black object in a white environment. Note how reflections at the edges are not affected, apart from the special value 1.0:

Note

The effect of this parameter diminishes with increasing Metallic values, since metallic reflectivity is tied to Base Color.

Roughness

Controls how dull a surface appears. A value of 0.0 results in a smooth surface with perfectly sharp reflections. A value of 1.0 produces a completely dull surface.

This simulates microscopic bumps which become more pronounced the higher the Roughness, causing reflected light to be scattered more.

The effect of Roughness on a material with Metallic set to 1.0:

The effect of Roughness on a material with Metallic set to 0.0:

Anisotropy

Causes reflections to be stretched in the direction defined by Anisotropy Direction.

This simulates microscopic bumps with a directional bias, causing light to be scattered more in the defined direction. This is typical of brushed metals.

The effect of this parameter increases with Roughness. It has no effect at all when Roughness is 0.0.

Anisotropy Direction

Controls the direction of Anisotropy relative to the UV coordinates of the surface. At 0.0, reflections are stretched in the U direction. At 0.5, the direction is rotated by 90 degrees to the V direction. 1.0 equals 180 degrees. Since the effect is symmetrical this produces the same result as 0.0.

The direction of rotation also depends on the UV layout. When the UVs are layed out such that textures appear on the surface without mirroring, higher values rotate counter-clockwise.

The effect of this parameter diminishes with decreasing Roughness and Anisotropy.

This parameter has its own Filter Type parameter which appears when Use Texture is enabled. This defaults to Point (No Filter), which usually works best. When you change this to an actual filter like Gaussian, artifacts may appear around the transition between areas with different direction values.

Tip

The 0-1 range makes it easy to apply a texture to this value. To find the texture value needed for a certain direction:

  • Turn off Use Texture under Anisotropy Direction.

  • Try out values on the slider and kick off test renders until you get the desired result.

  • Paint the slider value into your texture.

  • Turn Use Texture back on.

To help with this workflow, the Anisotropy Direction remembers its value whenever Use Texture is toggled. It defaults to 1.0 when Use Texture is enabled, meaning you get the unmodified texture data.

Reflection

Metallic

Values closer to 1 give the shader a more metallic appearance.

This is done by fading out the diffuse component and driving reflectivity by Base Color. This makes it easy to create the colored reflections typical of metallic materials.

Reflectivity

Controls the reflectivity of surfaces facing the viewer. This is also affected by the Index of Refraction.

When a surface is rotated away from the viewer, more and more light is reflected regardless of this parameter’s value. At 90 degrees away from the viewer, 100% of the light is reflected, as in the real world.

Tip

How shiny an object appears mostly depends on its Roughness rather than its Reflect value. When you intend to vary shininess using a texture, Roughness is usually the better parameter to use.

Note

For additional artistic control, you can disable reflections completely by setting Reflect exactly to 0.0. When using a texture, this effect also occurs in completely black areas of the texture.

Note

The effect of this parameter diminishes with increasing Metallic values, since metallic reflectivity is tied to Base Color.

Reflect Tint

Tints reflections with the Base Color. This is not typical of non-metallic materials, but can be used for artistic purposes.

Note

The effect of this parameter diminishes with increasing Metallic values, since metallic reflections are always tinted by Base Color.

Coat

Controls the intensity of coat reflections. The coat can have a different Roughness value than the base layer, see Coat Roughness.

Coat Roughness

Controls the roughness of Coat reflections.

Transparency

Transparency

Controls how transparent the surface is.

Both diffuse and metallic reflections are faded as transparency increases.

Transparency increasing left to right on a metallic surface.

Transparency increasing left to right on a dielectric surface.

Transmission Color

Tint rays with this color as they pass through an object. The amount of tinting depends on the distance a light ray travels within the object. You can scale the tinting using At distance.

At Distance

A ray must travel this distance within the object before it is completely colored by the Transmission color. Shorter distances give less tinting, longer distances give a darker and more saturated version of the Transmission Color.

Tip

Colors that are not fully saturated work best with the At Distance parameter.

Color components that are set to 0.0 aren’t absorbed at all, while components set to 1.0 are fully absorbed. This means that At Distance has no effect on those components.

Dispersion

Spreads and colors refraction rays to simulate the effect of a spectrum of wavelengths within the refracted light. The larger this value, the larger the spectral separation.

When this parameter is set to a non-zero value, refracted rays are tagged with a single wavelength in the visible spectrum. Each of these wavelengths modify the underlying index of refraction (IOR) causing the rays to separate as they travel through the refractive material.

Surface Priority

The shaded surface’s place in an order of precedence for overlapping transparent materials. A value of 0 means the surface priority should be ignored. Surfaces with lower numbers (higher priority) “override” surfaces with higher numbers (lower priority). Mantra will only calculate the shaders for the highest priority object in a given area, creating the effect of higher priority objects overriding and removing lower priority objects in the same overlapping space.

In this render, the red sphere and the blue box have the same surface priority. This causes problems with refraction and absorption, because it’s not clear to Mantra which surface is inside or outside.

In this example, the red sphere has a higher priority than the blue box (lower numbers mena higher priority) so it “carves out” its volume from the box (Mantra simply ignores whichever parts of the box have overlapped the sphere). The absorption and refraction is now correct for the red sphere being embedded in the blue box. This setup would work well for something like ice cubes floating in water.

In this example, the surface priority values are switched so the blue box has higher priority. This has the effect of removing any parts of the red sphere which overlapped the blue box. This setup would work for something like water droplets resting on the surface of a glass.

This parameter only takes effect when Enable Absorption and Nested Dielectrics is turned on in the Mantra render node.

Subsurface Scattering

Subsurface

The amount of subsurface scattering to perform.

Note

Diffuse intensity decreases as this Subsurface increases.

SSS Mode

Full Subsurface Scattering

Ray traced solution based on Burley’s approximate reflectance profile.

Single Scattering

Quick approximation by only considering light that scatters exactly once inside the surface.

Random Walk (Karma)

Path traced solution that simulates light bouncing around inside the surface until it exits. Good for retaining detail and avoiding energy loss around fine edges.

Note

Not available in mantra. This feature works best with closed manifold geometry. You also need to be careful with internal geometry (e.g. eye sockets and mouth bag) since random walks will terminate when they collide with it, potentially causing unwanted darkening on the outer surface.

Subsurface Distance

The mean distance traversed by subsurface scattering rays. Higher values result in light being scattered through thicker regions of the shaded object.

Subsurface Color

The internal color of the surface used for subsurface scattering.

Scattering Phase

Controls the nature of the scattering. Positive values give forward scattering, 0 gives isotropic scattering, and negative values give backscattering. Range is -1 (full backscattering) to 1 (full forward scattering).

The value depends on the type of material you are trying to model. For example, skin is highly forward scattering, while marble is backscattering.

Sheen

Sheen

Produces extra reflections at grazing angles, which can be useful for matching certain cloth materials.

Sheen Tint

Tints reflections produces by Sheen with the Base Color. This can be help match certain cloth materials.

Emission

Emission Color

The color of light emitted from the surface.

Emission Intensity

Intensity of light emitted from the surface.

Emission Illuminates Objects

Controls whether emission should illuminate other objects.

Opacity

Opacity

Opacity Scale

The opacity of the shaded surface.

Opacity Color

Opacity of the red, green and blue color channels of the shaded surface.

Use Point Alpha

Multiply opacity by the value of the Alpha attribute if it exists on the shaded geometry.

Fake Caustics

Enable

Lets light pass through refractive areas of the surface. This can be used to make the shadows of transparent objects transparent without the need for expensive caustics or indirect light bounces.

Transmission Tint

Tints light using transmission color.

Shadow

Reducing this causes more light to be transmitted when it hits the surface at a grazing angle, where it would otherwise be reflected.

Masking

Alpha Mode

Defines the behavior for transparency. The modes are the same as the glTF specification.

Blend

Do normal blending of foreground and background elements.

Mask

Discard pixels with a transparency below the Alpha Cutoff value. The pixel is either fully opaque or discarded.

Opaque

Transparency is ignored, the pixel will be fully opaque.

Alpha Cutoff

Textures

Contains texture controls for all parameters on the Surface tab.

Sampling

Filter

The type of texture filter to use. This is used for all Surface parameters except for Anisotropy Direction, which has its own Filter parameter.

Filter Width

The width of the filter to use when sampling textures. Higher values causes the texture to be filtered/burred more.

Bump & Normals

Round Edge Radius

When enabled, averages normals around the specified radius (in Houdini units). This can be useful to fake beveled edges on hard surfaces.

Base

Texture Type

Bump

A bump map creates the appearance of surface detail without actually modifying the geometry or changing the object’s silhouette.

Depending on the Channel parameter the R, G, B channel or the luminance is used as the bump height.

Normal

Set the normals from an RGB texture. After reading the texture values, they are modified according to the Normal Space, Flip X and Flip Y parameters and transformed to the space defined by the Vector Space.

Texture Color Space

The texture’s color space.

Vector Space

The space in which the vector-based operations Normal and Vector Displacement are applied.

UV Tangent Space

Use the space defined by the Surface Normal and the UV-tangents. Using this space allows normal textures to be applied to deforming objects, since the vector applied relative to the surface’s orientation, rather than simply in object space.

Object Space

Use the object’s transform.

Offset

This offset is added to the value before Effect Scale is applied.

Effect Scale

The effect of the operation is scaled by this value.

In Normal mode, this scales the rotation of normals away form the input normal.

Texture Path

The image file to use as a texture map.

UDIM Filename Expansion

UDIM texture filename expansion. The UDIM coordinate is computed based on the uv-coordinate: 1000 + int(u)+1 + int(v)*10. Example: “map_<UDIM>.rat” returns “map_1044.rat” with u=3.1, v=4.15

Wrap

Determines how the image is evaluated when the texture coordinates are outside the range 0-1. The options are:

Repeat

(string value repeat). The image map repeats outside the range 0 to 1. Basically, the integer component of the texture coordinate is ignored.

Streak

(string value streak). Texture coordinates are clamped to the 0 to 1 range.

Decal

(string value decal). Coordinates outside the range 0 to 1 will evaluate to the border color rather than an image color.

Filter

Type of anti-aliasing filter to be used for evaluation. The options are:

Box

(string value box)

Gaussian

(string value gauss)

Bartlett/Triangular

(string value bartlett)

Sinc Sharpening

(string value sinc)

Hanning

(string value hanning)

Blackman

(string value blackman)

Catmull-Rom

(string value catrom)

Mitchell

(string value mitchell)

Point Sampling

(string value point)

Filter Width

Blur the texture based on derivatives in shading contexts. For contexts that do not provide derivatives (such as the sop context), this parameter will have no effect and you should use Texture Blur or Pixel Blur instead. In shading contexts, filtering will be proportional to the micropolygon size with a filter width of 1, filtering one micropolygon.

Channel

The component to use with the scalar operations Bump and Displace Along Normal.

Image Plane

The image plane to read from the texture.

Tip

Tangent-space normals exported using the Shading Tangent-Space Normal parameter on the Mantra ROP are exported to the Nt image plane by convention.

Normal Space

In Normal mode, controls in what format the input is stored.

0 to 1

The components of the normal are in the 0-1 range. This is typically done in textures in order to store values in the positive and visible range.

-1 to 1

The components of the normal are in their natural, normalized state.

Flip X

Flip the input normals in X, before applying the Vector Space.

Flip Y

Flip the input normals in Y, before applying the Vector Space.

Coat

Separate Coat Normals

When enabled, grants separate control over the Coat reflection layer’s normals. For example, this allows you to create a scratched coat layer with a smooth base layer underneath.

The parameters on this tab are the same as on the Base tab above.

Displacement

Displacement Bound

The maximum bounds that the displacement shader will move geometry. This is defined in “camera” space. The absolute value is used to determine the bounds.

True Displacement

Whether to do “real” displacement (actually modify geometry at render time, allowing the silhouette of the object to change). If you turn this option off, the values of the displacement tab will be used as a bump map (creating the appearance of depth but not actually modifying the geometry or changing the object’s silhouette).

Include In Exported Tangent Normals

Controls whether displacement should affect the normals exported through the Nt variable.

Tip

To export the tangent-space normals generated by the shader as an image plane, enable the Shading Tangent-Space Normals (Nt) parameter on the Mantra ROP's Images/Extra Image Planes tab.

Texture Type

Displace Along Normal

Moves the surface in the direction of it’s normal.

Depending on the Channel parameter the R, G, B channel or the luminance is used as the height.

Vector Displacement

Moves the surface by the texture value. The value is applied in the chosen Vector Space.

Texture Color Space

The texture’s color space.

Vector Space

The space in which the vector-based operations Normal and Vector Displacement are applied.

UV Tangent Space

Use the space defined by the Surface Normal and the UV-tangents. Using this space allows normal textures to be applied to deforming objects, since the vector applied relative to the surface’s orientation, rather than simply in object space.

Object Space

Use the object’s transform.

Offset

This offset is added to the value before Effect Scale is applied.

Effect Scale

The effect of the operation is scaled by this value.

In Normal mode, this scales the rotation of normals away form the input normal.

Texture Path

The image file to use as a texture map.

UDIM Filename Expansion

UDIM texture filename expansion. The UDIM coordinate is computed based on the uv-coordinate: 1000 + int(u)+1 + int(v)*10. Example: “map_<UDIM>.rat” returns “map_1044.rat” with u=3.1, v=4.15

Wrap

Determines how the image is evaluated when the texture coordinates are outside the range 0-1. The options are:

Repeat

(string value repeat). The image map repeats outside the range 0 to 1. Basically, the integer component of the texture coordinate is ignored.

Streak

(string value streak). Texture coordinates are clamped to the 0 to 1 range.

Decal

(string value decal). Coordinates outside the range 0 to 1 will evaluate to the border color rather than an image color.

Filter

Type of anti-aliasing filter to be used for evaluation. The options are:

Box

(string value box)

Gaussian

(string value gauss)

Bartlett/Triangular

(string value bartlett)

Sinc Sharpening

(string value sinc)

Hanning

(string value hanning)

Blackman

(string value blackman)

Catmull-Rom

(string value catrom)

Mitchell

(string value mitchell)

Point Sampling

(string value point)

Filter Width

Blur the texture based on derivatives in shading contexts. For contexts that do not provide derivatives (such as the sop context), this parameter will have no effect and you should use Texture Blur or Pixel Blur instead. In shading contexts, filtering will be proportional to the micropolygon size with a filter width of 1, filtering one micropolygon.

Channel

The component to use with the scalar operations Bump and Displace Along Normal.

Image Plane

The image plane to read from the texture.

Tip

Tangent-space normals exported using the Shading Tangent-Space Normal parameter on the Mantra ROP are exported to the Nt image plane by convention.

Settings

Component Labels

Diffuse

Specifies a label for the diffuse component. This can be used to export contributions from this component to a separate image plane.

Base Reflection

Specifies a label for the base reflection component. This can be used to export contributions from this component to a separate image plane.

Coat Reflection

Specifies a label for the coat reflection component. This can be used to export contributions from this component to a separate image plane.

Misc

UDIM Filename Expansion

UDIM texture filename expansion. The UDIM coordinate is computed based on the uv-coordinate: 1000 + int(u)+1 + int(v)*10. Example: “map_<UDIM>.rat” returns “map_1044.rat” with u=3.1, v=4.15

Note

The example images above use HDRIs from hdrihaven.com.

See also

VOP nodes