• Shader

Glass Shader Parameters

By: SKY ENGINE AI
scroll down ↓to find out moreglass-shader-parameters_3_resourcesTutorial

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 MaterialsSceneComposer from skyrenderer.basic_types.procedure.shader.basic_shaders.glass_shader import GlassShader from skyrenderer.scene.scene_layout.layout_elements_definitions import MaterialDefinition scene_composer = MaterialsSceneComposer(antialiasing_level=32) scene_composer.setup_scene(illuminance=10) pbr_shader = GlassShader(scene_composer.renderer_context) material_definition = MaterialDefinition(shader=pbr_shader) scene_composer.renderer_context.set_material_definition( node_name="shaderball_GEO", material_definition=material_definition )
2025-01-31 10:22:07,450 | 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

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", (1, 1, 0)) renders["base_color=(1, 1, 0)"] = 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)
glass-shader-parameters_1_resourcesTutorial
2025-01-31 10:22:07,913 | skyrenderer.utils.time_measurement | INFO: Setup time: 421 ms 2025-01-31 10:22:10,651 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.74 seconds 2025-01-31 10:22:16,050 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:16,051 | skyrenderer.utils.time_measurement | INFO: Render time: 5.40 seconds 2025-01-31 10:22:16,226 | skyrenderer.utils.time_measurement | INFO: Setup time: 98 ms 2025-01-31 10:22:19,298 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.07 seconds 2025-01-31 10:22:21,990 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:21,991 | skyrenderer.utils.time_measurement | INFO: Render time: 2.69 seconds 2025-01-31 10:22:23,050 | skyrenderer.utils.time_measurement | INFO: Setup time: 1.04 seconds 2025-01-31 10:22:25,980 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.93 seconds 2025-01-31 10:22:31,480 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:31,481 | skyrenderer.utils.time_measurement | INFO: Render time: 5.50 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, 1, 1)) renders["ior=1"] = scene_composer.get_render() GlassShader.update_default_parameter("ior", (1.45, 1.45, 1.45)) renders["ior=1.45"] = scene_composer.get_render() GlassShader.update_default_parameter("ior", (2, 2, 2)) renders["ior=2"] = scene_composer.get_render() scene_composer.visualize_grid_desc(renders, shape=(500, 1500), n_cols=3) GlassShader.update_default_parameter("ior", (1.45, 1.45, 1.45))
glass-shader-parameters_2_resourcesTutorial
2025-01-31 10:22:31,836 | skyrenderer.utils.time_measurement | INFO: Setup time: 79 ms 2025-01-31 10:22:34,766 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.93 seconds 2025-01-31 10:22:36,842 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:36,842 | skyrenderer.utils.time_measurement | INFO: Render time: 2.08 seconds 2025-01-31 10:22:36,910 | skyrenderer.utils.time_measurement | INFO: Setup time: 55 ms 2025-01-31 10:22:39,840 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.93 seconds 2025-01-31 10:22:43,212 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:43,213 | skyrenderer.utils.time_measurement | INFO: Render time: 3.37 seconds 2025-01-31 10:22:43,281 | skyrenderer.utils.time_measurement | INFO: Setup time: 56 ms 2025-01-31 10:22:46,087 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.81 seconds 2025-01-31 10:22:49,665 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:49,666 | skyrenderer.utils.time_measurement | INFO: Render time: 3.58 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", (1, 1, 0)) renders["refraction_color=(1, 1, 0)"] = 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)
glass-shader-parameters_3_resourcesTutorial
2025-01-31 10:22:49,971 | skyrenderer.utils.time_measurement | INFO: Setup time: 56 ms 2025-01-31 10:22:52,946 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.97 seconds 2025-01-31 10:22:55,616 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:22:55,617 | skyrenderer.utils.time_measurement | INFO: Render time: 2.67 seconds 2025-01-31 10:22:55,684 | skyrenderer.utils.time_measurement | INFO: Setup time: 55 ms 2025-01-31 10:22:58,450 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.76 seconds 2025-01-31 10:23:01,898 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:23:01,899 | skyrenderer.utils.time_measurement | INFO: Render time: 3.45 seconds 2025-01-31 10:23:01,971 | skyrenderer.utils.time_measurement | INFO: Setup time: 56 ms 2025-01-31 10:23:04,971 | skyrenderer.utils.time_measurement | INFO: Context update time: 3.00 seconds 2025-01-31 10:23:07,654 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms 2025-01-31 10:23:07,655 | skyrenderer.utils.time_measurement | INFO: Render time: 2.68 seconds

Summary

In this section you have learnt:

  • GlassShader has many parameters that affect shader appearance.