Glass Shader Parameters
In this tutorial you will get familiar with GlassShader's parameters. You will see how change of parameter values
affect materials using GlassShader.
Agenda:
- GlassShader look - basic parameters
- GlassShader control parameters
Scene setup
Let's use custom scene composer to set up the scene.
from skyrenderer.cases.utils import GlassShaderSceneComposer
from skyrenderer.basic_types.procedure.shader.basic_shaders.glass_shader import GlassShader
from skyrenderer.scene.scene_layout.layout_elements_definitions import MaterialDefinition scene_composer = GlassShaderSceneComposer(antialiasing_level=64)
scene_composer.setup_scene()
pbr_shader = GlassShader(scene_composer.renderer_context)
material_definition = MaterialDefinition(shader=pbr_shader)2026-01-05 14:40:05,103 | 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 2026-01-05 14:40:05,343 | 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 2026-01-05 14:40:05,344 | 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 2026-01-05 14:40:05,348 | skyrenderer.basic_types.provider.iprovider | WARNING: Provider for this config has been already initialized! There should be just one Provider created per unit source, consider fixing the scene. Config: metal_material
scene_composer.renderer_context.set_material_definition(
node_name="lightbulb_GEO_Glass*", material_definition=material_definition, use_regex=True
)GlassShader look - basic parameters
In this section we will walk you through changing and setting basic GlassShader parameters:
- base color
- ior
- refraction_color
During that, we will use update default parameter methodology known from Procedure tutorial.
Base color
renders = {}
GlassShader.update_default_parameter("base_color", (1, 1, 1))
renders["base_color=(1, 1, 1)"] = scene_composer.get_render()
GlassShader.update_default_parameter("base_color", (0, 0, 1))
renders["base_color=(0, 0, 1)"] = scene_composer.get_render()
GlassShader.update_default_parameter("base_color", (0.5, 0.9, 0.5))
renders["base_color=(0.5, 0.9, 0.5)"] = scene_composer.get_render()
GlassShader.update_default_parameter("base_color", (1, 1, 1))
scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3, blend_text_background=True)2026-01-05 14:40:05,474 | skyrenderer.utils.time_measurement | INFO: Setup time: 108 ms 2026-01-05 14:40:08,955 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.48 seconds 2026-01-05 14:40:12,822 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:12,824 | skyrenderer.utils.time_measurement | INFO: Render time: 3.87 seconds 2026-01-05 14:40:13,088 | skyrenderer.utils.time_measurement | INFO: Setup time: 200 ms 2026-01-05 14:40:16,456 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.37 seconds 2026-01-05 14:40:17,559 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:17,560 | skyrenderer.utils.time_measurement | INFO: Render time: 1.10 seconds 2026-01-05 14:40:18,847 | skyrenderer.utils.time_measurement | INFO: Setup time: 1.25 seconds 2026-01-05 14:40:22,004 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.16 seconds 2026-01-05 14:40:25,310 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:25,311 | skyrenderer.utils.time_measurement | INFO: Render time: 3.31 seconds
ior
When light passes through glass, it bends due to changes in speed between different mediums, defined by the
material index of refraction (IOR). IOR is physical parameter that can be found for each material. General rule:
higher IOR, stronger ray bending effect.
renders = {}
GlassShader.update_default_parameter("ior", 1)
renders["ior=1"] = scene_composer.get_render()
GlassShader.update_default_parameter("ior", 1.45)
renders["ior=1.45"] = scene_composer.get_render()
GlassShader.update_default_parameter("ior", 1.80)
renders["ior=1.80"] = scene_composer.get_render()
scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3, blend_text_background=True)
GlassShader.update_default_parameter("ior", 1.45)2026-01-05 14:40:25,886 | skyrenderer.utils.time_measurement | INFO: Setup time: 252 ms 2026-01-05 14:40:29,033 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.15 seconds 2026-01-05 14:40:31,746 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:31,747 | skyrenderer.utils.time_measurement | INFO: Render time: 2.71 seconds 2026-01-05 14:40:31,942 | skyrenderer.utils.time_measurement | INFO: Setup time: 183 ms 2026-01-05 14:40:34,999 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.06 seconds 2026-01-05 14:40:37,759 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:37,760 | skyrenderer.utils.time_measurement | INFO: Render time: 2.76 seconds 2026-01-05 14:40:37,959 | skyrenderer.utils.time_measurement | INFO: Setup time: 187 ms 2026-01-05 14:40:41,133 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.17 seconds 2026-01-05 14:40:44,031 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:44,032 | skyrenderer.utils.time_measurement | INFO: Render time: 2.90 seconds
refraction_color
Refraction color is the color used in while ray is refracted instead of reflected. When color R channel is
negative, it takes base_color as refraction_color. By default, it is equal to base_color of the shader, but can
be changed separately.
renders = {}
GlassShader.update_default_parameter("base_color", (0.5, 0.9, 0.5))
GlassShader.update_default_parameter("refraction_color", (1, 0, 0))
renders["refraction_color=(1, 0, 0)"] = scene_composer.get_render()
GlassShader.update_default_parameter("refraction_color", (0, 0, 1))
renders["refraction_color=(0, 0, 1)"] = scene_composer.get_render()
GlassShader.update_default_parameter("refraction_color", (-1, -1, -1))
renders["refraction_color=(-1, -1, -1)"] = scene_composer.get_render()
scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3, blend_text_background=True)2026-01-05 14:40:44,487 | skyrenderer.utils.time_measurement | INFO: Setup time: 201 ms 2026-01-05 14:40:47,788 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.30 seconds 2026-01-05 14:40:50,705 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:50,706 | skyrenderer.utils.time_measurement | INFO: Render time: 2.92 seconds 2026-01-05 14:40:50,930 | skyrenderer.utils.time_measurement | INFO: Setup time: 206 ms 2026-01-05 14:40:54,115 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.18 seconds 2026-01-05 14:40:55,218 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:40:55,219 | skyrenderer.utils.time_measurement | INFO: Render time: 1.10 seconds 2026-01-05 14:40:55,426 | skyrenderer.utils.time_measurement | INFO: Setup time: 187 ms 2026-01-05 14:40:58,521 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.09 seconds 2026-01-05 14:41:01,183 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2026-01-05 14:41:01,184 | skyrenderer.utils.time_measurement | INFO: Render time: 2.66 seconds
Summary
In this section you have learnt:
- GlassShader has many parameters that affect shader appearance.