Skip to content
07-848 2005

V-Ray for Maya

OpenPBR Shading Model

This page provides information about the OpenPBR shading model in V-Ray Material in Maya.

Last updated 1 September 2026

This page provides information about the OpenPBR shading model in V-Ray Material in Maya.

Overview

OpenPBR is an open-source Physically-based Rendering shading model created by Adobe and Autodesk.

V-Ray implements it as a switchable model in the V-Ray Material. Currently, it is supported partially with V-Ray GPU.

Layer Structure

The main difference between the V-Ray material model and OpenPBR is the layers' structure. See the diagram for information on how OpenPBR's layers are calculated.

Fuzz Layer

OpenPBR's topmost layer is Fuzz, which is based on the "Practical Multiple-Scattering Sheen Using Linearly Transformed Cosines"; Tizian Zeltner et all; Siggraph 2022 paper. The Fuzz layer is calculated by itself, unlike in V-Ray Material, where Sheen is coupled with the Diffuse layer. The OpenPBR's Fuzz affects the Coat, Reflection, Refraction, and Diffuse layers, but is not affected by them. For a comparison between Sheen and Fuzz, see the example.

See the Fuzz Amount example.

See the Fuzz Color example.

See the Fuzz Roughness example.

Coat Layer

The Coat layer has an additional parameter, which controls anisotropy.

The Coat parameter simulates a clear, glossy top layer often found on materials like car paint or varnished wood. This layer reflects light, enhancing the visual depth of the material, and adds realism by mimicking physical coatings in the real world.

See the Coat Amount example.

Coat Darkening

Coat Darkening is a parameter that controls how the coat layer impacts the appearance of the underlying layers, dielectric or metallic. This effect emulates how a clear coat layer slightly darkens the underlying material due to light absorption and scattering. By adjusting this parameter, you can create slight color changes, adding depth and making renders look more realistic. See the example.

Roughness

OpenPBR uses the roughness model to simulate light interaction with surfaces.

Roughness determines how smooth or rough a material's surface appears by controlling the scattering of light reflections. A lower roughness value results in sharper, more mirror-like reflections, while higher roughness values produce blurred, diffuse reflections. This parameter is crucial for simulating various surface finishes, from polished metal to matte materials like rubber or chalk. See the example.

Emission

V-Ray Self-Illumination corresponds to OpenPBR Emission, and the emission layer is positioned before the coat layer.

The Emission setting allows materials to emit light independently, creating glowing effects. This feature is often used to simulate lights, screens, or any surfaces that need to radiate brightness in a scene. See the Emission and Coat example.

Thin Film Thickness

In VRayMtl, the thin-film thickness is measured in nanometers (nm), while in OpenPBR, the thickness is measured in micrometers (μm). For instance, a thickness of 0.5 μm in OpenPBR corresponds to 500 nm in VrayMtl. The conversion is handled internally.

Subsurface Scattering (SSS)

In OpenPBR, Subsurface Scattering (SSS) simulates light penetration and scattering beneath a material's surface, commonly seen in materials like skin, wax, or marble. It captures the effect of light entering the surface, scattering within, and exiting at a different location. OpenPBR defines SSS using parameters such as subsurface color and scale, which control the scattering intensity and depth. This ensures a physically accurate representation of translucent materials.

Metalness

Metalness determines whether a material behaves as a metal or a non-metal. Metallic materials (Metalness = 1) reflect light specularly, with the reflection color derived from the base color, and have no diffuse reflection. Non-metallic materials (Metalness = 0) combine diffuse and specular reflections, with the base color defining the diffuse component. This parameter helps achieve realistic material behavior by accurately simulating the optical properties of metals and non-metals.

Refraction

The refraction property of VRayMtl corresponds to the OpenPBR Transmission setting. The Refraction parameter controls the amount of light that passes through a surface, allowing it to simulate transparent or semi-transparent materials such as glass, water, or clear plastics. This parameter affects the visibility of background elements and other objects behind the material, resulting in realistic depth and light interaction.

By adjusting the Transmission setting, you can achieve a range of effects, from frosted glass to fully transparent surfaces.

Thin-Walled

The Thin-Walled setting determines if a material has thickness. When this option is enabled, objects are treated as having no inner volume, making it suitable for items like double-walled glass or thin sheets of plastic. Conversely, if the setting is disabled, the surface behaves like a solid material.

Open PBR Support

This table presents the OpenPBR features that are supported by V-Ray and V-Ray GPU.

Features in the V-Ray plugin name (data type) and Maya UI name columns labelled with

are not supported both by V-Ray and V-Ray GPU.

OpenPBR name (data type)

V-Ray plugin name (data type)

Maya UI name

V-Ray GPU support

OpenPBR name (data type)

V-Ray plugin name (data type)

Maya UI name

V-Ray GPU support

base_color (color3)

diffuse (acolor texture)

Diffuse Color

base_weight (float)

diffuse (acolor texture)

Amount

base_diffuse_roughness (float)

roughness (float texture)

Roughness Amount

base_metalness (float)

metalness (float texture)

Metalness

specular_color (color3)

reflect (acolor texture)

Reflection Color

specular_weight (float)

reflect (acolor texture)

Amount

specular_roughness (float)

reflect_glossiness (float texture)

Reflection Roughness

specular_roughness_anisotropy (float)

anisotropy (float)1

Anisotropy1

1

specular_ior (float)

fresnel_ior (float texture)

Fresnel IOR

transmission_weight (float)

refract (acolor texture)

Amount

transmission_color (color3)

fresnel_ior (float texture)

Transmission Color

transmission_depth (float)

fog_depth (float)

Depth (cm)

transmission_scatter (color3)

transmission_scatter_anisotropy (float)

transmission_dispetion_scale (float)

dispersion_on (bool)

Dispersion

transmission_dispetion_abbe_number (float)

dispersion (float)

Dispersion Abbe

subsurface_weight (color3)

translucency_amount (float texture)

SSS Amount

subsurface_color (color3)

translucency_color (acolor texture)

SSS Color

subsurface_radius (float)

fog_depth(float)

Scatter Radius

subsurface_radius_scale (color3)

fog_color (color)

Scale (cm)

subsurface_scatter_anisotropy (float)

coat_color (color3)

coat_color (acolor texture)

Coat Color

coat_weght (float)

coat_amount (float texture)

Amount

coat_roughness (float)

coat_glossiness (float texture)

Coat Roughness

coat_roughness_anisotropy (float)

coat_anisotropy (float)1

Coat Anisotropy1

1

coat_ior (float)

coat_ior (float texture)

IOR

coat_darkening (float)

Coat_darkening (float)

Darkening

fuzz_color (color3)

sheen_color (acolor texture)

Fuzz Color

fuzz_weight (float)

sheen_amount (float texture)

Amount

fuzz_roughness (float)

sheen_glossiness (float texture)

Fuzz Roughness

emission_luminance (float)

self_illumination (acolor texture)2

Emission2

2

emission_color (color3)

self_illumination (acolor texture)

Emission

thin_film_weight (float)

thin_film_on (bool)

Enable Thin Film

thin_film_thickness (float)3

thin_film_thickness_min (float) / thin_film_thickness_max (float)

Min / Max Thickness (nm)

thin_film_ior (float)

thin_film_ior (float texture)

IOR

geometry_opacity (float)

opacity (float texture)

Opacity Map

geometry_thin_walled (boolean)

refract_thin_walled (bool)

Thin-walled

geomenty_normal (vector3)

bump_map (acolor texture)

Map

Partial4

geometry_tangent (vector3)

geometry_coat_normal (vector3)

coat_bump_map (acolor texture)

Map

Partial4

geometry_coat_tangent (vector3)

Examples

Fuzz Amount

01_ColorR255G255B255_Amount0_Rough0x8.png

Fuzz Amount = 0

02_ColorR255G255B255_Amount0x5_Rough0x8.png

Fuzz Amount = 0.5

03_ColorR255G255B255_Amount1_Rough0x8.png

Fuzz Amount = 1

Fuzz Color

The Fuzz layer is not affected by any other layer, so the colors render vibrantly. You can compare these results to the Coat Color example.

02_ColorR255G0B0_Amount1_Rough0x8.png

Fuzz Color = R: 255, G: 0, B: 0

03_ColorR0G255B0_Amount1_Rough0x8.png

Fuzz Color = R: 0, G: 255, B: 0

04_ColorR0G0B255_Amount1_Rough0x8.png

Fuzz Color = R: 0, G: 0, B:0255

Fuzz Roughness

00_ColorR255G255B255_Amount1_Rough0.png

Fuzz Roughness = 0

02_ColorR255G255B255_Amount1_Rough0x5.png

Fuzz Roughness = 0.5

04_ColorR255G255B255_Amount1_Rough1.png

Fuzz Roughness = 1

Coat Amount

In this example, the Coat Roughness is set to 0.15. That is why, as the Coat Amount increases, the object becomes glossier.

01_ColorR255G255B255_Amount0_Darkening0_Rough0x15.png

Coat Amount = 0

03_ColorR255G255B255_Amount0x5_Darkening0_Rough0x15.png

Coat Amount = 0.5

05_ColorR255G255B255_Amount1_Darkening0_Rough0x15.png

Coat Amount = 1

Coat Color

The Coat layer is affected by the Fuzz layer and that reflects in the color renders. You can compare these results to the Fuzz Color example.

02_ColorR255G0B0_Amount1_Darkening0_Rough0x15.png

Coat Color = R: 255, G: 0, B: 0

03_ColorR0G255B0_Amount1_Darkening0_Rough0x15.png

Coat Color = R: 0, G: 255, B: 0

04_ColorR0G0B255_Amount1_Darkening0_Rough0x15.png

Coat Color = R: 0, G: 0, B: 255

Coat Darkening

01_CoatWhite_Amount1_Darkening0.png

Coat Darkening = 0

02_CoatWhite_Amount1_Darkening0x5.png

Coat Darkening = 0.5

03_CoatWhite_Amount1_Darkening1.png

Coat Darkening = 1

Coat Roughness

01_ColorR255G255B255_Amount1_Darkening0_Rough0.png

Roughness = 0

03_ColorR255G255B255_Amount1_Darkening0_Rough0x5.png

Roughness = 0.5

05_ColorR255G255B255_Amount1_Darkening0_Rough1.png

Roughness = 1

Anisotropy

01_Anisotropy-0x8_Rotation0.png

Anisotropy = -0.8

02_Anisotropy0_Rotation0.png

Anisotropy = 0.0

03_Anisotropy0x8_Rotation0.png

Anisotropy = 0.8

Anisotropy Rotation

01_Anisotropy0x8_Rotation-45.png

Anisotropy Rotation = -45°

02_Anisotropy0x8_Rotation0.png

Anisotropy Rotation = 0°

03_Anisotropy0x8_Rotation45.png

Anisotropy Rotation = 45°

Emission and Coat

This example illustrates how different Coat values affect the Emission effect. This simulates the materials setup of an object with both emission and reflection, such as a neon sign. In this example, the Emission Color is set to R: 030, G: 190, B: 255.

01_EmissionR30G190_B255_CoatWhite_Amount0.png

Coat Amount = 0

02_EmissionR30G190_B255_CoatWhite_Amount0x5.png

Coat Amount = 0.5

03_EmissionR30G190_B255_CoatWhite_Amount1.png

Coat Amount = 1

Sheen and Fuzz

This example compares the results from identical Roughness amounts and how they render with the different shading models - V-Ray and OpenPBR.

The Fuzz/Sheen color is set to R: 255, G: 255, B: 255.

V-Ray Model

Sheen Roughness = 0.8

Sheen Roughness = 0.5

Sheen Roughness = 0.2

V-Ray Model

Sheen Roughness = 0.8

Sheen Roughness = 0.5

Sheen Roughness = 0.2

OpenPBR Model

Fuzz Roughness = 0.8

Fuzz Roughness = 0.5

Fuzz Roughness = 0.2

PBR Presets

This example showcases how the V-Ray Presets look when converted to the PBR Shading Model.

01_Bubble_ThinFilm_Min300Max900_ThicknessBlend-BubbleMap_IOR1x4.png

Soap Bubble

02_VarnishedWood_CoatColorWhite_Amount1_Darkening0_CRough0_IOR1x6.png

Varnished Wood

03_NeonLight_EmmisionR0G200B210_CoatR255G255B255_FuzzR60G105B180_FuzzAmount1_FuzzRough0x8.png

Neon Light

04_GlassFrostedShiny_TransmissionColorWhite_Amount1_TransmissionRough0x25_TrIOR1x53_FogColorR190G230B245.png

Glass Frosted

05_Rubber_FuzzColorR160G160B160_Amount0x75_FuzzRough0x5.png

Rubber

06_Plastic_CoatColorWhite_CoatAmount0x5_Darkening0x2_CoatRough0x25_IOR1x6.png

Plastic

07_Velvet_FuzzColorR255G160B160_Amount1_FuzzRoughness0x5.png

Red Velvet

Notes

  1. Anisotropy tangent mapping is not supported.
  2. The emission_luminance parameter uses cd/m2 as a unit, while V-Ray’s Emission multiplier is unitless.
  3. In the VRayMtl, the thin-film thickness is measured in nanometers (nm), whereas in OpenPBR is measured in micrometers (μm). For instance, a thickness of 0.5 μm in OpenPBR corresponds to 500 nm in VRayMtl. The conversion is handled internally.
  4. Only normals in tangent- and world space are supported.