• 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()
    scene_composer.setup_scene()
    scene_composer.renderer_context.set_material_definition(
        node_name="gummy_bear_GEO_*",
        use_regex=True,
        material_definition=MaterialDefinition(shader=TranslucentShader(scene_composer.renderer_context)),
    )
2025-02-05 12:26:53,542 | skyrenderer.scene.renderer_context |  INFO: Root paths:
- root path: /dli/skyenvironment/skyrenderer/skyrenderer
- assets path: /dli/mount/assets
- config path: /dli/skyenvironment/skyrenderer/skyrenderer/config
- gpu sources path: /dli/skyenvironment/skyrenderer/skyrenderer/optix_sources/sources
- cache path: /dli/mount/cache
- ptx cache path: compiled_ptx/ptx
- ocio path: ocio_configs/aces_1.2/config.ocio

2025-02-05 12:26:53,894 | 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.

2025-02-05 12:26:53,895 | skyrenderer.basic_types.provider.unit_providers.hdr_texture_provider |  WARNING: Parameter light_adapt provided in HDR json is not supported

2025-02-05 12:26:53,896 | skyrenderer.basic_types.provider.unit_providers.hdr_texture_provider |  WARNING: Parameter color_adapt provided in HDR json is not supported

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("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=(600, 1600), n_cols=3)
translucent-shader-parameters_1_resourcesTutorial
2025-02-05 12:26:53,993 | skyrenderer.utils.time_measurement |  INFO: Setup time: 87 ms

2025-02-05 12:26:55,960 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.97 seconds

2025-02-05 12:26:59,577 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:26:59,577 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.62 seconds

2025-02-05 12:26:59,695 | skyrenderer.utils.time_measurement |  INFO: Setup time: 104 ms

2025-02-05 12:27:01,666 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.97 seconds

2025-02-05 12:27:06,015 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:06,016 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.35 seconds

2025-02-05 12:27:06,130 | skyrenderer.utils.time_measurement |  INFO: Setup time: 102 ms

2025-02-05 12:27:08,229 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.10 seconds

2025-02-05 12:27:12,350 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:12,351 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.12 seconds

2025-02-05 12:27:12,459 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-02-05 12:27:14,693 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.23 seconds

2025-02-05 12:27:18,295 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:18,296 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.60 seconds

2025-02-05 12:27:18,402 | skyrenderer.utils.time_measurement |  INFO: Setup time: 99 ms

2025-02-05 12:27:20,552 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.15 seconds

2025-02-05 12:27:24,685 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:24,686 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.13 seconds

2025-02-05 12:27:24,794 | skyrenderer.utils.time_measurement |  INFO: Setup time: 99 ms

2025-02-05 12:27:26,781 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.99 seconds

2025-02-05 12:27:31,115 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:31,116 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.33 seconds

Notice how changing base_color parameter is affecting its shading: it might appear that the color is not changing
at all. In fact, the color is changing and this change can be visible as a sub-color on the surface and in the
shadow on the ground. It is due to the fact that in Translucent model there is another parameter responsible for
base color: ss_base_color. As long the subsurface is used, this parameter is responsible for the internal object
color. The base_color and ss_base_color difference can be easily seen 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=(300, 1600), n_cols=3)
translucent-shader-parameters_2_resourcesTutorial
2025-02-05 12:27:31,939 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-02-05 12:27:33,892 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.95 seconds

2025-02-05 12:27:38,081 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:38,082 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.19 seconds

2025-02-05 12:27:38,191 | skyrenderer.utils.time_measurement |  INFO: Setup time: 99 ms

2025-02-05 12:27:40,163 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.97 seconds

2025-02-05 12:27:44,284 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:44,285 | skyrenderer.utils.time_measurement |  INFO: Render time: 4.12 seconds

2025-02-05 12:27:44,392 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-02-05 12:27:46,327 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.93 seconds

2025-02-05 12:27:49,870 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:49,871 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.54 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=(600, 1600), n_cols=3)
    TranslucentShader.update_default_parameter("ss_gain", 0.25)
translucent-shader-parameters_3_resourcesTutorial
2025-02-05 12:27:50,327 | skyrenderer.utils.time_measurement |  INFO: Setup time: 101 ms

2025-02-05 12:27:52,264 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.94 seconds

2025-02-05 12:27:56,129 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:27:56,130 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.86 seconds

2025-02-05 12:27:56,236 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-02-05 12:27:58,212 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.98 seconds

2025-02-05 12:28:02,157 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:02,158 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.94 seconds

2025-02-05 12:28:02,268 | skyrenderer.utils.time_measurement |  INFO: Setup time: 102 ms

2025-02-05 12:28:04,217 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.95 seconds

2025-02-05 12:28:07,021 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:07,022 | skyrenderer.utils.time_measurement |  INFO: Render time: 2.80 seconds

2025-02-05 12:28:07,132 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-02-05 12:28:09,164 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.03 seconds

2025-02-05 12:28:12,997 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:12,997 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.83 seconds

2025-02-05 12:28:13,108 | skyrenderer.utils.time_measurement |  INFO: Setup time: 103 ms

2025-02-05 12:28:15,116 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.01 seconds

2025-02-05 12:28:18,991 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:18,991 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.87 seconds

2025-02-05 12:28:19,107 | skyrenderer.utils.time_measurement |  INFO: Setup time: 108 ms

2025-02-05 12:28:21,106 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.00 seconds

2025-02-05 12:28:23,983 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:23,983 | skyrenderer.utils.time_measurement |  INFO: Render time: 2.88 seconds

TranslucentShader - translucency parameters

    renders = {}
    TranslucentShader.update_default_parameter("translucency", 0)
    renders["translucency=0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency", 0.5)
    renders["translucency=0.5"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency", 1)
    renders["translucency=1"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency", 0.5)
    TranslucentShader.update_default_parameter("translucency_roughness", 0)
    renders["translucency_roughness=0"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency_roughness", 0.5)
    renders["translucency_roughness=0.5"] = scene_composer.get_render()
    TranslucentShader.update_default_parameter("translucency_roughness", 1)
    renders["translucency_roughness=1"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(600, 1600), n_cols=3)
translucent-shader-parameters_4_resourcesTutorial
2025-02-05 12:28:24,812 | skyrenderer.utils.time_measurement |  INFO: Setup time: 107 ms

2025-02-05 12:28:26,961 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.15 seconds

2025-02-05 12:28:30,832 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:30,833 | skyrenderer.utils.time_measurement |  INFO: Render time: 3.87 seconds

2025-02-05 12:28:30,946 | skyrenderer.utils.time_measurement |  INFO: Setup time: 103 ms

2025-02-05 12:28:32,979 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.03 seconds

2025-02-05 12:28:40,937 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:40,937 | skyrenderer.utils.time_measurement |  INFO: Render time: 7.96 seconds

2025-02-05 12:28:41,045 | skyrenderer.utils.time_measurement |  INFO: Setup time: 101 ms

2025-02-05 12:28:43,029 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.98 seconds

2025-02-05 12:28:56,314 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:28:56,315 | skyrenderer.utils.time_measurement |  INFO: Render time: 13.29 seconds

2025-02-05 12:28:56,423 | skyrenderer.utils.time_measurement |  INFO: Setup time: 101 ms

2025-02-05 12:28:58,372 | skyrenderer.utils.time_measurement |  INFO: Context update time: 1.95 seconds

2025-02-05 12:29:05,655 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:29:05,655 | skyrenderer.utils.time_measurement |  INFO: Render time: 7.28 seconds

2025-02-05 12:29:05,763 | skyrenderer.utils.time_measurement |  INFO: Setup time: 100 ms

2025-02-05 12:29:07,768 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.00 seconds

2025-02-05 12:29:14,981 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:29:14,982 | skyrenderer.utils.time_measurement |  INFO: Render time: 7.21 seconds

2025-02-05 12:29:15,093 | skyrenderer.utils.time_measurement |  INFO: Setup time: 103 ms

2025-02-05 12:29:17,112 | skyrenderer.utils.time_measurement |  INFO: Context update time: 2.02 seconds

2025-02-05 12:29:24,248 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-02-05 12:29:24,249 | skyrenderer.utils.time_measurement |  INFO: Render time: 7.14 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.