GlassShader
In SkyRenderer you can find multiple shaders that are prepared for simulating ray behavior on glass surfaces.
In this tutorial you will get familiar with GlassShader, which is the basic shader for surfaces made from glass.
Agenda:
- GlassShader theory
- GlassShader basic usage
Scene setup
Let's use custom scene composer to set up the scene.
from skyrenderer.cases.utils import MaterialsSceneComposer
scene_composer = MaterialsSceneComposer()
scene_composer.setup_scene(illuminance=10)
2025-01-31 10:22:07,518 | 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 theory
GlassShader simulates the appearance of transparent, refractive materials like glass or water. It focuses on two
key effects: refraction and reflection. When light passes through glass, it bends due to changes in speed between
different mediums, defined by the material index of refraction (IOR). To enhance realism, in this model Fresnel
factor determine how light reflects at different viewing angles.
This model can be used for either one-sided geometries, double-sided thin geometries or geometries with
significant volume. To achieve realistic effects, it is important to correctly choose IOR parameter to each case,
e.g. IOR=1.0 for one-sided glass like windows.
GlassShader basic usage
Let's create a Material Definition using GlassShader and assign this material to the shaderball.
To assign the material we will use RendererContext's set_material_definition() method.
To find out how different parameters affects GlassShader appearance, check out SHADER_GlassShaderParameters
tutorial.
from skyrenderer.scene.scene_layout.layout_elements_definitions import MaterialDefinition
from skyrenderer.basic_types.procedure.shader.basic_shaders.glass_shader import GlassShader
glass_shader = GlassShader(scene_composer.renderer_context)
material_definition = MaterialDefinition(shader=glass_shader)
scene_composer.renderer_context.set_material_definition(
node_name="shaderball_GEO", material_definition=material_definition
)
scene_composer.visualize()
2025-01-31 10:22:08,164 | skyrenderer.utils.time_measurement | INFO: Setup time: 600 ms
2025-01-31 10:22:10,995 | skyrenderer.utils.time_measurement | INFO: Context update time: 2.83 seconds
2025-01-31 10:22:16,429 | skyrenderer.utils.time_measurement | INFO: Key points calculation time: 0 ms
2025-01-31 10:22:16,430 | skyrenderer.utils.time_measurement | INFO: Render time: 5.43 seconds
Summary
In this section you have learnt:
- GlassShader simulation focuses on two effects: reflection and refraction of the material.
- GlassShader is used for variety of surfaces made from glass - glass bottles, windows etc.