Houdini 16.5 Nodes Shader nodes

Principled Shader shader node

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

On this page

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.

Note

This is a SHOP shader, which means it cannot be layered with other shaders.

If you need to do this, or if you need more control, you can use Principled Shader VOP which this shader is based on.

Parameters

Surface

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.

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.

Reflect

Controls the reflectivity of surfaces facing the viewer. This replaces the Index of Refraction parameter found on other shaders to allow for more direct control over visual appearance.

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 it’s Roughness rather than it’s 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.

The effect of Reflect on a black object in a white environment. Note how reflections at the edges are not affected unless Reflect is exactly 0.0.

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.

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. Under the hood, 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 it’s 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 it’s value whenever Use Texture is toggled. It defaults to 1.0 when Use Texture is enabled, meaning you get the unmodified texture data.

Subsurface

Gives the appearance of subsurface scattering. This is a fast approximation and doesn’t perform actual SSS.

Note

The effect of this parameter diminishes with increasing Metallic values.

Sheen

Produces extra reflections at grazing angles, which can be useful to match certain cloths and some other materials.

Note

The effect of this parameter diminishes with increasing Metallic values.

Sheen Tint

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

Note

The effect of this parameter diminishes with increasing Metallic values.

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.

Filter

The type of texture filter to use. This is used for all Surface parameters except for Anisotropy Direction, which has it’s 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.

Emission

Emission Illuminates Objects

Controls whether emission should illuminate other objects.

Emission Color

The color of light emitted from the surface.

Emission Intensity

Intensity of light emitted from the surface.

Bump & Normals

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)d.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 rest of 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)d.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)d.rat" returns "map_1044.rat" with u=3.1, v=4.15

Examples

The following examples include this node.

FrictionBalls Example for RBD Object dynamics node

This example demonstrates the friction parameter on an RBD Object.

CoolLava Example for Fluid Source geometry node

This example demonstrates how to cool Lava using the Cool Within Object shelf tool.

WornMetal Example for Curvature VOP node

This example shows how the curvature vop can be added to a shader network to add a worn or distressed look to your material.

See also

Shader nodes