• Shader

Translucent shader parameters

By: SKY ENGINE AI
scroll down ↓to find out moretranslucent-shader-parameters_4_resourcesTutorial

TranslucentShader Parameters

In this tutorial you will get familiar with TranslucentShader's parameters. You will see how change of parameter
values affect materials using TranslucentShader.

Agenda:

  • TranslucentShader - basic parameters
  • TranslucentShader - SSS parameters
  • TranslucentShader - translucency parameters

Scene setup

Let's use custom scene composer to set up the scene.

    from skyrenderer.cases.utils import TranslucentGummySceneComposer
    from skyrenderer.scene.scene_layout.layout_elements_definitions import MaterialDefinition
    from skyrenderer.basic_types.procedure.shader.basic_shaders import TranslucentShader
    scene_composer = TranslucentGummySceneComposer(antialiasing_level=512)
    scene_composer.setup_scene()
    translucent_shader = TranslucentShader(scene_composer.renderer_context)
    scene_composer.renderer_context.set_material_definition(
        node_name="gummy_bear_GEO_*",
        use_regex=True,
        material_definition=MaterialDefinition(shader=translucent_shader),
    )
2025-12-11 15:39:40,002 | skyrenderer.scene.renderer_context |  INFO: Root paths:
- root path: /dli/skyenvironment/content-marketing/skyrenderer/skyrenderer
- assets path: /dli/mount/assets
- config path: /dli/skyenvironment/content-marketing/skyrenderer/skyrenderer/config
- gpu sources path: /dli/skyenvironment/content-marketing/skyrenderer/skyrenderer/optix_sources/sources
- cache path: /dli/mount/cache
- ptx cache path: compiled_ptx/ptx
- ocio path: ocio_configs

2025-12-11 15:39:40,252 | skyrenderer.basic_types.provider.unit_providers.substance_texture_provider |  WARNING: Unable to map purpose diffuse. Map will be parsed with legacy system.
	Purpose not present in ['ambientocclusion', 'basecolor', 'coatweight', 'coatroughness', 'emissive', 'height', 'metallic', 'normal', 'opacity', 'refractioncolor', 'roughness', 'specular', 'scattering', 'scatteringcolor', 'visibility', 'texturesemanticmap', 'any', 'mask', 'spectralid']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : diffuse_map

2025-12-11 15:39:40,252 | skyrenderer.basic_types.provider.unit_providers.substance_texture_provider |  WARNING: Unable to map purpose glossiness. Map will be parsed with legacy system.
	Purpose not present in ['ambientocclusion', 'basecolor', 'coatweight', 'coatroughness', 'emissive', 'height', 'metallic', 'normal', 'opacity', 'refractioncolor', 'roughness', 'specular', 'scattering', 'scatteringcolor', 'visibility', 'texturesemanticmap', 'any', 'mask', 'spectralid']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : glossiness_map

2025-12-11 15:39:40,255 | skyrenderer.scene.renderer_context |  WARNING: Light with light_id=point_LIGHT_NUL already exists in the scene and will be replace with a new one.There can only be a single light for a single node.

TranslucentShader - basic parameters

In this section we will walk you through changing and setting basic TranslucentShader parameters. They are the
same as in PBRShader For exemplary purposes chosen parameters are: base_color and roughness.
During that, we will use update default parameter methodology known from Procedure tutorial.

Base color and roughness

    renders = {}
    TranslucentShader.update_default_parameter("translucency", 0.1)
    TranslucentShader.update_default_parameter("base_color", (1, 0, 0))
    renders["base_color=(1, 0, 0)"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("base_color", (1, 1, 0))
    renders["base_color=(1, 1, 0)"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("base_color", (1, 0.7, 0.4))
    renders["base_color=(1, 0.7, 0.4)"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("base_color", (1, 1, 1))
    TranslucentShader.update_default_parameter("roughness", 0.0)
    renders["roughness=0.0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("roughness", 0.5)
    renders["roughness=0.5"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("roughness", 1)
    renders["roughness=1"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("roughness", 0)
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, blend_text_background=True)
translucent-shader-parameters_1_resourcesTutorial
2025-12-11 15:39:40,340 | skyrenderer.utils.time_measurement |  INFO: Setup time: 78 ms

2025-12-11 15:39:43,506 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.17 seconds

2025-12-11 15:41:00,656 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:41:00,658 | skyrenderer.utils.time_measurement |  INFO: Render time: 77.15 seconds

2025-12-11 15:41:00,917 | skyrenderer.utils.time_measurement |  INFO: Setup time: 194 ms

2025-12-11 15:41:03,892 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.97 seconds

2025-12-11 15:42:10,485 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:42:10,486 | skyrenderer.utils.time_measurement |  INFO: Render time: 66.59 seconds

2025-12-11 15:42:10,703 | skyrenderer.utils.time_measurement |  INFO: Setup time: 190 ms

2025-12-11 15:42:13,633 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.93 seconds

2025-12-11 15:42:53,403 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:42:53,404 | skyrenderer.utils.time_measurement |  INFO: Render time: 39.77 seconds

2025-12-11 15:42:53,674 | skyrenderer.utils.time_measurement |  INFO: Setup time: 229 ms

2025-12-11 15:42:56,736 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.06 seconds

2025-12-11 15:43:34,762 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:43:34,763 | skyrenderer.utils.time_measurement |  INFO: Render time: 38.03 seconds

2025-12-11 15:43:34,988 | skyrenderer.utils.time_measurement |  INFO: Setup time: 208 ms

2025-12-11 15:43:38,131 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.14 seconds

2025-12-11 15:44:17,955 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:44:17,955 | skyrenderer.utils.time_measurement |  INFO: Render time: 39.82 seconds

2025-12-11 15:44:18,172 | skyrenderer.utils.time_measurement |  INFO: Setup time: 195 ms

2025-12-11 15:44:21,147 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.97 seconds

2025-12-11 15:44:58,951 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:44:58,952 | skyrenderer.utils.time_measurement |  INFO: Render time: 37.80 seconds

Notice how changing base_color parameter is affecting its shading: it may seem that the color is not changing
at all. In reality, the color is changing and this change can be visible as a sub-color on the surface and in the
shadow on the ground. This is because the Translucent model includes another parameter that influences the base
color: ss_base_color. As long the subsurface is used, this parameter controls the internal object color.
The base_color and ss_base_color difference is clearly visible on the right gummy bear.

TranslucentShader - SSS parameters

base_color and ss_base_color

Abbreviation:

  • bc - stands for "base_color"
    renders = {}
    TranslucentShader.update_default_parameter("base_color", (1, 0, 0))
    TranslucentShader.update_default_parameter("ss_base_color", (0, 1, 0))
    renders["bc=(1, 0, 0),ss_bc=(0, 1, 0)"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("base_color", (0, 0, 1))
    TranslucentShader.update_default_parameter("ss_base_color", (1, 1, 0))
    renders["bc=(0, 0, 1),ss_bc=(1, 1, 0)"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("base_color", (1, 0.7, 0.4))
    TranslucentShader.update_default_parameter("ss_base_color", (0.97, 0.52, 0.52))
    renders["bc=(1, 0.7, 0.4),ss_bc=(0.97, 0.52, 0.52)"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3, blend_text_background=True)
translucent-shader-parameters_2_resourcesTutorial
2025-12-11 15:44:59,556 | skyrenderer.utils.time_measurement |  INFO: Setup time: 199 ms

2025-12-11 15:45:02,498 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.94 seconds

2025-12-11 15:45:42,048 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:45:42,049 | skyrenderer.utils.time_measurement |  INFO: Render time: 39.55 seconds

2025-12-11 15:45:42,256 | skyrenderer.utils.time_measurement |  INFO: Setup time: 195 ms

2025-12-11 15:45:45,257 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.00 seconds

2025-12-11 15:46:23,130 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:46:23,131 | skyrenderer.utils.time_measurement |  INFO: Render time: 37.87 seconds

2025-12-11 15:46:23,332 | skyrenderer.utils.time_measurement |  INFO: Setup time: 190 ms

2025-12-11 15:46:26,336 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.00 seconds

2025-12-11 15:47:04,361 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:47:04,362 | skyrenderer.utils.time_measurement |  INFO: Render time: 38.02 seconds

ss_radius and ss_gain

    renders = {}
    TranslucentShader.update_default_parameter("base_color", (0, 0.9, 0.1))
    TranslucentShader.update_default_parameter("ss_base_color", (0.1, 0.5, 0.5))
    TranslucentShader.update_default_parameter("ss_radius", (0, 0, 0))
    renders["ss_radius=0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("ss_radius", (0.1, 0.1, 0.1))
    renders["ss_radius=0.1"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("ss_radius", (0.5, 0.5, 0.5))
    renders["ss_radius=0.5"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("ss_radius", (0.1, 0.1, 0.1))
    TranslucentShader.update_default_parameter("ss_gain", 0)
    renders["ss_gain=0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("ss_gain", 0.5)
    renders["ss_gain=0.5"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("ss_gain", 1)
    renders["ss_gain=1"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, blend_text_background=True)
    TranslucentShader.update_default_parameter("ss_gain", 0.25)
translucent-shader-parameters_3_resourcesTutorial
2025-12-11 15:47:04,809 | skyrenderer.utils.time_measurement |  INFO: Setup time: 223 ms

2025-12-11 15:47:07,830 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.02 seconds

2025-12-11 15:47:42,950 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:47:42,951 | skyrenderer.utils.time_measurement |  INFO: Render time: 35.12 seconds

2025-12-11 15:47:43,159 | skyrenderer.utils.time_measurement |  INFO: Setup time: 196 ms

2025-12-11 15:47:46,169 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.01 seconds

2025-12-11 15:48:23,888 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:48:23,889 | skyrenderer.utils.time_measurement |  INFO: Render time: 37.72 seconds

2025-12-11 15:48:24,127 | skyrenderer.utils.time_measurement |  INFO: Setup time: 218 ms

2025-12-11 15:48:27,241 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.11 seconds

2025-12-11 15:48:59,307 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:48:59,308 | skyrenderer.utils.time_measurement |  INFO: Render time: 32.07 seconds

2025-12-11 15:48:59,521 | skyrenderer.utils.time_measurement |  INFO: Setup time: 194 ms

2025-12-11 15:49:02,442 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.92 seconds

2025-12-11 15:49:38,933 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:49:38,934 | skyrenderer.utils.time_measurement |  INFO: Render time: 36.49 seconds

2025-12-11 15:49:39,146 | skyrenderer.utils.time_measurement |  INFO: Setup time: 193 ms

2025-12-11 15:49:42,064 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.92 seconds

2025-12-11 15:50:17,236 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:50:17,236 | skyrenderer.utils.time_measurement |  INFO: Render time: 35.17 seconds

2025-12-11 15:50:17,440 | skyrenderer.utils.time_measurement |  INFO: Setup time: 192 ms

2025-12-11 15:50:20,358 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.92 seconds

2025-12-11 15:50:52,119 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:50:52,120 | skyrenderer.utils.time_measurement |  INFO: Render time: 31.76 seconds

TranslucentShader - translucency parameters

We are going to set different colors for each bear.

    def set_translucent_parameter_on_red_bear(**kwargs):
        red_translucent_provider = TranslucentShader.create_parameter_provider(
            scene_composer.renderer_context,
            base_color=(0.84, 0, 0.11), **kwargs
        )
        red_material_definition = MaterialDefinition(
            shader=translucent_shader, parameter_set=red_translucent_provider
        )
        scene_composer.renderer_context.set_material_definition(
            node_name="gummy_bear_GEO", material_definition=red_material_definition
        )
    renders = {}
    TranslucentShader.update_default_parameter("translucency", 0)
    renders["translucency=0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency", 0.3)
    set_translucent_parameter_on_red_bear(translucency=0.3)
    renders["translucency=0.3"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency", 0.7)
    set_translucent_parameter_on_red_bear(translucency=0.7)
    renders["translucency=0.7"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency", 0.5)
    set_translucent_parameter_on_red_bear(translucency=0.5)
    TranslucentShader.update_default_parameter("translucency_roughness", 0)
    set_translucent_parameter_on_red_bear(translucency_roughness=0)
    renders["translucency_roughness=0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency_roughness", 0.5)
    set_translucent_parameter_on_red_bear(translucency_roughness=0.5)
    renders["translucency_roughness=0.5"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency_roughness", 1)
    set_translucent_parameter_on_red_bear(translucency_roughness=1)
    renders["translucency_roughness=1"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, blend_text_background=True)
translucent-shader-parameters_4_resourcesTutorial
2025-12-11 15:50:52,723 | skyrenderer.utils.time_measurement |  INFO: Setup time: 197 ms

2025-12-11 15:50:55,654 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.93 seconds

2025-12-11 15:51:23,642 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:51:23,642 | skyrenderer.utils.time_measurement |  INFO: Render time: 27.99 seconds

2025-12-11 15:51:23,845 | skyrenderer.utils.time_measurement |  INFO: Setup time: 192 ms

2025-12-11 15:51:26,755 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.91 seconds

2025-12-11 15:52:13,448 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:52:13,449 | skyrenderer.utils.time_measurement |  INFO: Render time: 46.69 seconds

2025-12-11 15:52:13,655 | skyrenderer.utils.time_measurement |  INFO: Setup time: 194 ms

2025-12-11 15:52:16,563 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.91 seconds

2025-12-11 15:53:32,222 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:53:32,223 | skyrenderer.utils.time_measurement |  INFO: Render time: 75.66 seconds

2025-12-11 15:53:32,432 | skyrenderer.utils.time_measurement |  INFO: Setup time: 197 ms

2025-12-11 15:53:35,341 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.91 seconds

2025-12-11 15:54:36,058 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:54:36,059 | skyrenderer.utils.time_measurement |  INFO: Render time: 60.72 seconds

2025-12-11 15:54:36,280 | skyrenderer.utils.time_measurement |  INFO: Setup time: 202 ms

2025-12-11 15:54:39,183 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.90 seconds

2025-12-11 15:55:38,138 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:55:38,138 | skyrenderer.utils.time_measurement |  INFO: Render time: 58.95 seconds

2025-12-11 15:55:38,368 | skyrenderer.utils.time_measurement |  INFO: Setup time: 207 ms

2025-12-11 15:55:41,341 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.97 seconds

2025-12-11 15:56:42,116 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-12-11 15:56:42,117 | skyrenderer.utils.time_measurement |  INFO: Render time: 60.78 seconds

Summary

In this section you have learnt:

  • TranslucentShader can be controlled with most of PBR Shader parameters.
  • TranslucentShader have two groups of translucency controls: SSS and translucency parameters.