Skip to content

MaterialPhysicalSss

MaterialPhysicalSss#

(Sss)

Go to User page.

Description#

A sub-surface scattering physical material

Public Attributes#

Type Name Visual Hint Description
long subsurface_model VISUAL_HINT_DEFAULT Technique used to simulate sub-surface scattering. A diffusion kernel cheaply approximates the aggregate light paths that reach the surface, and is a close match when the diffuse mean free path is smaller than the geometric features of the object onto which the material is applied. Instead, the random-walk scheme simulates actual scattering events inside the medium, which requires more computation and samples, but more accurately captures fine-scale illumination details.
long diffusion_model VISUAL_HINT_DEFAULT Diffusion profile used to model the attenuation of light with distance due to subsurface scattering. The Gaussian profile is a blurry phenomenological model. The cubic profile is a sharper and more efficient approximation. The empirical profile is a good fit to actual SSS measurements.
long max_bounces VISUAL_HINT_DEFAULT The maximum number of random-walk sub-surface bounces.
long subsurface_preset VISUAL_HINT_DEFAULT Set of measured optical properties for several sample materials.
long optical_mode VISUAL_HINT_DEFAULT Select how to specify the optical properties of the material. The volume mode is more physicist-friendly since it takes as input the intrinsic optical properties of the volume, and makes it possible for the user to copy-paste measured values from real-world materials (as may be found online and/or in the literature). The surface mode is more artist-friendly since it takes as input WYSIWYG-like parameters, and makes it possible for the user to eye-ball the expected overall appearance to quickly achieve a certain look. The hybrid mode is a mix of the volume and surface modes, and is mostly provided for backward-compatibility and portability purposes.
double[3] volume_albedo VISUAL_HINT_RGB Single-scattering albedo of the volume particles, i.e., the color of the individual particles that scatter light inside the volume.
double[3] volume_mean_free_path VISUAL_HINT_RGB Wavelength-dependent mean free path between individual extinction events in the volume, i.e., how far each color channel of a light beam penetrates on average into the volume before being absorbed or scattered by a particle.
double[3] diffuse_albedo VISUAL_HINT_COLOR Average surface albedo resulting from all sub-surface scattering events inside the material.
double diffuse_albedo_gain VISUAL_HINT_PERCENTAGE Scaling factor of all color channels of the diffuse albedo.
double[3] diffuse_mean_free_path VISUAL_HINT_COLOR Wavelength-dependent diffuse mean free path traveled overall by light underneath the surface.
double mean_free_paths_scale VISUAL_HINT_DISTANCE Scaling factor of the volume/diffuse mean free paths at all wavelengths.
double mean_free_paths_exponent VISUAL_HINT_DEFAULT Base-ten exponent multiplying the volume/diffuse mean free paths at all wavelengths.
double anisotropy VISUAL_HINT_DEFAULT The anistropy of the volumetric phase function. -1 is highly back-scattering, 0 is isotropic and 1 is highly forward-scattering.
long surface_transmission VISUAL_HINT_DEFAULT The scattering function at the boundary of the subsurface layer.
double[3] surface_color VISUAL_HINT_COLOR Color multiplier influencing the light coming from the front/back, can be seen as a very crude scattering term. Note that changing this value will break physical plausibility in the diffusion model. When path-traced subsurface is enabled, this value represents the surface color tint at the point the scattered ray intersects the surface.
double index_of_refraction VISUAL_HINT_DEFAULT The refractive index of the subsurface layer.
string sss_group VISUAL_HINT_TAG Name of the group among which illumination propagates between SSS materials.

Inherited Public Attributes#

Type Name Visual Hint Description
bool export_aovs VISUAL_HINT_DEFAULT Compute and write Aovs defined in the shading graph
reference (AovStore) arbitrary_output_variables VISUAL_HINT_DEFAULT Set the list of extra channels to write to the image.
string light_path_expression_label VISUAL_HINT_DEFAULT Set the material label in light path expressions.
long material_sample_count VISUAL_HINT_SAMPLE_PER_PIXEL Material sample count per pixel.
double subsurface_sampling_multiplier VISUAL_HINT_SCALE Material subsurface sample count multiplier.
double russian_roulette VISUAL_HINT_PERCENTAGE Amount of Russian roulette used on the material samples.
double roughness_noise_optimization VISUAL_HINT_PERCENTAGE Noise reduction strategy along rough light path.
long diffuse_depth VISUAL_HINT_DEFAULT Maximum diffuse depth.
double[3] opacity VISUAL_HINT_COLOR Opacity of the material.
long normal_mode VISUAL_HINT_DEFAULT Define which geometric normal to use for the shading.
double normal_input VISUAL_HINT_PERCENTAGE Override the shading normal by the one given as input. The value controls the blending with the original normal.
long sidedness VISUAL_HINT_DEFAULT Sidedness of this surface used for this material. 'Single' keeps the original normals no matter what. 'Double' may flip the normal to be oriented toward the incomming direction. 'Invert' flips the original normal no matter what.
long shadow_casting_mode VISUAL_HINT_DEFAULT Defines the properties of the material when casting shadows: fully opaque (regardless of the actual value of the opacity of the material), artistic (user-defined opacity and coloring), pseudo-caustics (cheaply emulating actual refractive caustics) or physical (intrinsic transparency of the material), where the last three are modulated by the opacity of the material.
double shadow_opacity VISUAL_HINT_PERCENTAGE Defines how dark the shadows cast by this material are.
double shadow_coloring VISUAL_HINT_PERCENTAGE Defines how much refraction and absorption colors affect shadowing.

CID#

class "MaterialPhysicalSss" "MaterialPhysical" {
    #version 0.94
    icon "material_sss.iconrc"
    doc "A sub-surface scattering physical material"
    attribute_group "computation" {
        long "subsurface_model" {
            doc "Technique used to simulate sub-surface scattering. A diffusion kernel cheaply approximates the aggregate light paths that reach the surface, and is a close match when the diffuse mean free path is smaller than the geometric features of the object onto which the material is applied. Instead, the random-walk scheme simulates actual scattering events inside the medium, which requires more computation and samples, but more accurately captures fine-scale illumination details."
            preset "Diffusion Kernel" "0"
            preset "Random Walk" "1"
            value 0
        }
        long "diffusion_model" {
            doc "Diffusion profile used to model the attenuation of light with distance due to subsurface scattering. The Gaussian profile is a blurry phenomenological model. The cubic profile is a sharper and more efficient approximation. The empirical profile is a good fit to actual SSS measurements."
            preset "Gaussian" "1"
            preset "Cubic" "2"
            preset "Empirical" "0"
            value 0
        }
        long "max_bounces" {
            doc "The maximum number of random-walk sub-surface bounces."
            animatable yes
            numeric_range yes 0.0 65536
            ui_range yes 0.0 1024
            read_only yes
            value 256
        }
    }
    attribute_group "subsurface" {
        long "subsurface_preset" {
            doc "Set of measured optical properties for several sample materials."
            preset "Custom" "0"
            preset "Apple" "1"
            preset "Chicken1" "2"
            preset "Chicken2" "3"
            preset "Cream" "4"
            preset "Ketchup" "5"
            preset "Marble" "6"
            preset "Potato" "7"
            preset "Skimmilk" "8"
            preset "Skin1" "9"
            preset "Skin2" "10"
            preset "Wholemilk" "11"
            value 0
        }
        long "optical_mode" {
            doc "Select how to specify the optical properties of the material. The volume mode is more physicist-friendly since it takes as input the intrinsic optical properties of the volume, and makes it possible for the user to copy-paste measured values from real-world materials (as may be found online and/or in the literature). The surface mode is more artist-friendly since it takes as input WYSIWYG-like parameters, and makes it possible for the user to eye-ball the expected overall appearance to quickly achieve a certain look. The hybrid mode is a mix of the volume and surface modes, and is mostly provided for backward-compatibility and portability purposes."
            preset "Volume" "0"
            preset "Hybrid" "1"
            preset "Surface" "2"
            value 2
        }
        rgb "volume_albedo" {
            doc "Single-scattering albedo of the volume particles, i.e., the color of the individual particles that scatter light inside the volume."
            texturable yes
            animatable yes
            read_only yes
            value 0.988331797396131 0.988331797396131 0.988331797396131
        }
        rgb "volume_mean_free_path" {
            doc "Wavelength-dependent mean free path between individual extinction events in the volume, i.e., how far each color channel of a light beam penetrates on average into the volume before being absorbed or scattered by a particle."
            texturable yes
            animatable yes
            read_only yes
            value 0.00186013111794941 0.00186013111794941 0.00186013111794941
        }
        color "diffuse_albedo" {
            doc "Average surface albedo resulting from all sub-surface scattering events inside the material."
            texturable yes
            animatable yes
            value 0.78 0.78 0.78
        }
        percentage "diffuse_albedo_gain" {
            doc "Scaling factor of all color channels of the diffuse albedo."
            texturable yes
            animatable yes
            slider yes
            numeric_range yes 0.0 10
            ui_range yes 0.0 1
            value 1
        }
        color "diffuse_mean_free_path" {
            doc "Wavelength-dependent diffuse mean free path traveled overall by light underneath the surface."
            texturable yes
            animatable yes
            value 0.01 0.01 0.01
        }
        distance "mean_free_paths_scale" {
            doc "Scaling factor of the volume/diffuse mean free paths at all wavelengths."
            texturable yes
            animatable yes
            numeric_range yes 0.0 1.79769313486232e+308
            ui_range yes 0.0 1.79769313486232e+308
            value 1
        }
        double "mean_free_paths_exponent" {
            doc "Base-ten exponent multiplying the volume/diffuse mean free paths at all wavelengths."
            animatable yes
            numeric_range yes -100 100
            ui_range yes -10 10
            value 0.0
        }
        double "anisotropy" {
            doc "The anistropy of the volumetric phase function. -1 is highly back-scattering, 0 is isotropic and 1 is highly forward-scattering."
            texturable yes
            animatable yes
            slider yes
            numeric_range yes -1 1
            ui_range yes -1 1
            value 0.0
        }
    }
    attribute_group "subsurface>advanced" {
        collapsed yes
        ui_weight 1000
        long "surface_transmission" {
            doc "The scattering function at the boundary of the subsurface layer."
            preset "Dielectric (Smooth)" "1"
            preset "Lambertian (Rough)" "2"
            value 2
        }
        color "surface_color" {
            doc "Color multiplier influencing the light coming from the front/back, can be seen as a very crude scattering term. Note that changing this value will break physical plausibility in the diffusion model. When path-traced subsurface is enabled, this value represents the surface color tint at the point the scattered ray intersects the surface."
            texturable yes
            animatable yes
            read_only yes
            value 1 1 1
        }
        double "index_of_refraction" {
            doc "The refractive index of the subsurface layer."
            texturable yes
            animatable yes
            slider yes
            numeric_range yes 0.0 10000
            ui_range yes 1 3
            read_only yes
            value 1.5
        }
        tag "sss_group" {
            doc "Name of the group among which illumination propagates between SSS materials."
            value ""
        }
    }
    attribute_group "transparent_shadows" {
        collapsed yes
    }
    set "diffuse_sampling_multiplier" {
        null_label "Use Renderer Settings"
        null_value "-1.0"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 1000
        ui_range yes 0.0 10
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable yes
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "glossy_reflection_sampling_multiplier" {
        null_label "Use Renderer Settings"
        null_value "-1.0"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 1000
        ui_range yes 0.0 10
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable yes
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "glossy_transmission_sampling_multiplier" {
        null_label "Use Renderer Settings"
        null_value "-1.0"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 1000
        ui_range yes 0.0 10
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable yes
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "volume_sampling_multiplier" {
        null_label "Use Renderer Settings"
        null_value "-1.0"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 1000
        ui_range yes 0.0 10
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable yes
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "multiple_scattering_strength" {
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 1
        ui_range yes 0.0 1
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value 1
    }
    set "specular_reflection_depth" {
        null_label "Use Renderer Settings"
        null_value "-1"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 65536
        ui_range yes 0.0 16
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "glossy_reflection_depth" {
        null_label "Use Renderer Settings"
        null_value "-1"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 65536
        ui_range yes 0.0 16
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "specular_transmission_depth" {
        null_label "Use Renderer Settings"
        null_value "-1"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 65536
        ui_range yes 0.0 16
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "glossy_transmission_depth" {
        null_label "Use Renderer Settings"
        null_value "-1"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 65536
        ui_range yes 0.0 16
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "volume_depth" {
        null_label "Use Renderer Settings"
        null_value "-1"
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range yes 0.0 65536
        ui_range yes 0.0 16
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        value -1
    }
    set "reflective_caustics" {
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range no 0.0 1
        ui_range no 0.0 1
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        preset "Off" "0"
        preset "Glossy only" "1"
        preset "Specular only" "2"
        preset "Full" "3"
        value 0
    }
    set "refractive_caustics" {
        private no
        hidden yes
        saveable yes
        texturable no
        animatable no
        slider no
        numeric_range no 0.0 1
        ui_range no 0.0 1
        dg_active yes
        dg_cyclic no
        dirtiness_pass_through no
        read_only no
        shading_variable no
        experimental no
        advanced no
        overriden no
        promote_attribute no
        allow_expression yes
        localizable yes
        preset "Off" "0"
        preset "Glossy only" "1"
        preset "Specular only" "2"
        preset "Full" "3"
        value 0
    }
}