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)
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)
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)
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)
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.