• Shader

PBR shader parameters

By: SKY ENGINE AI
scroll down ↓to find out morepbr-shader-parameters_6_resourcesTutorial

PBR Shader Parameters

In this tutorial you will get familiar with PBRShader's parameters. You will see how change of parameter values
affect materials using PBRShader.

Agenda:

  • PBRShader look - basic parameters
  • PBRShader 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 import PBRShader
    from skyrenderer.scene.scene_layout.layout_elements_definitions import MaterialDefinition
/home/ws3h/projects/content-marketing/skyrenderer/skyrenderer/utils/visualization_helper.py:3: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from tqdm.autonotebook import tqdm

    scene_composer = MaterialsSceneComposer(antialiasing_level=32)
    scene_composer.setup_scene()
    pbr_shader = PBRShader(scene_composer.renderer_context)
    material_definition = MaterialDefinition(shader=pbr_shader)
    for shaderball_part in scene_composer.SHADERBALL_PARTS:
        scene_composer.renderer_context.set_material_definition(
            node_name=shaderball_part, material_definition=material_definition
        )
2025-08-07 09:59:51,129 | skyrenderer.scene.renderer_context |  INFO: Root paths:
- root path: /home/ws3h/projects/content-marketing/skyrenderer/skyrenderer
- assets path: /dli/mount/assets
- config path: /home/ws3h/projects/content-marketing/skyrenderer/skyrenderer/config
- gpu sources path: /home/ws3h/projects/content-marketing/skyrenderer/skyrenderer/optix_sources/sources
- cache path: /dli/mount/cache
- ptx cache path: compiled_ptx/ptx
- ocio path: ocio_configs

PBRShader look - basic parameters

In this section we will walk you through changing and setting basic PBRShader parameters:

  • alpha and base color
  • metallic and roughness
  • clearcoat parameters
  • fresnel parameters
  • perlin noise
    During that, we will use update default parameter methodology known from Procedure tutorial.

Alpha nad base color

    renders = {}
    renders["alpha=1"] = scene_composer.get_render()
    PBRShader.update_default_parameter("alpha", 0.5)
    renders["alpha=0.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("alpha", 0.25)
    renders["alpha=0.25"] = scene_composer.get_render()
    PBRShader.update_default_parameter("alpha", 1)
    PBRShader.update_default_parameter("base_color", (1, 0, 0))
    renders["base_color=(1, 0, 0)"] = scene_composer.get_render()
    PBRShader.update_default_parameter("base_color", (1, 1, 0))
    renders["base_color=(1, 1, 0)"] = scene_composer.get_render()
    PBRShader.update_default_parameter("base_color", (1, 0.7, 0.4))
    renders["base_color=(1, 0.7, 0.4)"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, thickness=2)
pbr-shader-parameters_1_resourcesTutorial
2025-08-07 09:59:51,335 | skyrenderer.utils.time_measurement |  INFO: Setup time: 78 ms

2025-08-07 09:59:52,094 | skyrenderer.utils.time_measurement |  INFO: Context update time: 759 ms

2025-08-07 10:00:04,066 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:00:04,067 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.97 seconds

2025-08-07 10:00:04,208 | skyrenderer.utils.time_measurement |  INFO: Setup time: 64 ms

2025-08-07 10:00:04,932 | skyrenderer.utils.time_measurement |  INFO: Context update time: 724 ms

2025-08-07 10:00:20,866 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:00:20,867 | skyrenderer.utils.time_measurement |  INFO: Render time: 15.93 seconds

2025-08-07 10:00:21,001 | skyrenderer.utils.time_measurement |  INFO: Setup time: 63 ms

2025-08-07 10:00:21,718 | skyrenderer.utils.time_measurement |  INFO: Context update time: 717 ms

2025-08-07 10:00:33,997 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:00:33,998 | skyrenderer.utils.time_measurement |  INFO: Render time: 12.28 seconds

2025-08-07 10:00:34,095 | skyrenderer.utils.time_measurement |  INFO: Setup time: 71 ms

2025-08-07 10:00:34,855 | skyrenderer.utils.time_measurement |  INFO: Context update time: 760 ms

2025-08-07 10:00:46,600 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:00:46,601 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.74 seconds

2025-08-07 10:00:46,700 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:00:47,404 | skyrenderer.utils.time_measurement |  INFO: Context update time: 704 ms

2025-08-07 10:00:59,221 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:00:59,222 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.82 seconds

2025-08-07 10:00:59,322 | skyrenderer.utils.time_measurement |  INFO: Setup time: 68 ms

2025-08-07 10:01:00,080 | skyrenderer.utils.time_measurement |  INFO: Context update time: 757 ms

2025-08-07 10:01:12,030 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:01:12,031 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.95 seconds

Metallic and roughness

    renders = {}
    PBRShader.update_default_parameter("base_color", scene_composer.SKY_ACCENT_COLOUR)
    PBRShader.update_default_parameter("roughness", 0.01)
    renders["roughness=0.01"] = scene_composer.get_render()
    PBRShader.update_default_parameter("roughness", 0.5)
    renders["roughness=0.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("roughness", 1.0)
    renders["roughness=1.0"] = scene_composer.get_render()
    PBRShader.update_default_parameter("roughness", 0.0)
    PBRShader.update_default_parameter("metallic", 0.0)
    renders["roughness=0,metallic=0.0"] = scene_composer.get_render()
    PBRShader.update_default_parameter("metallic", 0.5)
    renders["roughness=0,metallic=0.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("metallic", 1)
    renders["roughness=0,metallic=1"] = scene_composer.get_render()
    PBRShader.update_default_parameter("metallic", 0)
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, thickness=2)
pbr-shader-parameters_2_resourcesTutorial
2025-08-07 10:01:12,388 | skyrenderer.utils.time_measurement |  INFO: Setup time: 66 ms

2025-08-07 10:01:13,102 | skyrenderer.utils.time_measurement |  INFO: Context update time: 712 ms

2025-08-07 10:01:23,883 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:01:23,884 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.78 seconds

2025-08-07 10:01:23,955 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:01:24,653 | skyrenderer.utils.time_measurement |  INFO: Context update time: 697 ms

2025-08-07 10:01:36,290 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:01:36,290 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.64 seconds

2025-08-07 10:01:36,362 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:01:37,065 | skyrenderer.utils.time_measurement |  INFO: Context update time: 701 ms

2025-08-07 10:01:48,691 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:01:48,691 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.63 seconds

2025-08-07 10:01:48,766 | skyrenderer.utils.time_measurement |  INFO: Setup time: 62 ms

2025-08-07 10:01:49,457 | skyrenderer.utils.time_measurement |  INFO: Context update time: 690 ms

2025-08-07 10:02:00,184 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:02:00,185 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.73 seconds

2025-08-07 10:02:00,256 | skyrenderer.utils.time_measurement |  INFO: Setup time: 57 ms

2025-08-07 10:02:00,954 | skyrenderer.utils.time_measurement |  INFO: Context update time: 697 ms

2025-08-07 10:02:12,921 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:02:12,922 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.97 seconds

2025-08-07 10:02:13,002 | skyrenderer.utils.time_measurement |  INFO: Setup time: 62 ms

2025-08-07 10:02:13,697 | skyrenderer.utils.time_measurement |  INFO: Context update time: 695 ms

2025-08-07 10:02:24,444 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:02:24,445 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.75 seconds

Clearcoat parameters

In SkyRenderer's PBR shader there is a clearcoat (thin outer layer) behavior modelled. It is disabled by default,
but can be enabled at any time.

    renders = {}
    PBRShader.update_default_parameter("base_color", (1, 0, 0))
    PBRShader.update_default_parameter("roughness", 1)
    PBRShader.update_default_parameter("metallic", 1)
    PBRShader.update_default_parameter("clearcoat_roughness", 1)
    renders["no clearcoat"] = scene_composer.get_render()
    PBRShader.update_default_parameter("clearcoat_factor", 0.5)
    renders["clearcoat_factor=0.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("clearcoat_factor", 1)
    renders["clearcoat_factor=1"] = scene_composer.get_render()
    PBRShader.update_default_parameter("clearcoat_roughness", 0.0)
    renders["clearcoat_factor=1,roughness=0"] = scene_composer.get_render()
    PBRShader.update_default_parameter("clearcoat_roughness", 0.5)
    renders["clearcoat_factor=1,roughness=0.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("clearcoat_roughness", 1)
    renders["clearcoat_factor=1,roughness=1"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, thickness=2)
    PBRShader.update_default_parameter("clearcoat_factor", 0.0)
pbr-shader-parameters_3_resourcesTutorial
2025-08-07 10:02:24,765 | skyrenderer.utils.time_measurement |  INFO: Setup time: 61 ms

2025-08-07 10:02:25,461 | skyrenderer.utils.time_measurement |  INFO: Context update time: 696 ms

2025-08-07 10:02:36,436 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:02:36,437 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.98 seconds

2025-08-07 10:02:36,515 | skyrenderer.utils.time_measurement |  INFO: Setup time: 65 ms

2025-08-07 10:02:37,212 | skyrenderer.utils.time_measurement |  INFO: Context update time: 697 ms

2025-08-07 10:02:48,034 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:02:48,035 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.82 seconds

2025-08-07 10:02:48,109 | skyrenderer.utils.time_measurement |  INFO: Setup time: 61 ms

2025-08-07 10:02:48,806 | skyrenderer.utils.time_measurement |  INFO: Context update time: 697 ms

2025-08-07 10:02:58,756 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:02:58,757 | skyrenderer.utils.time_measurement |  INFO: Render time: 9.95 seconds

2025-08-07 10:02:58,829 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:02:59,552 | skyrenderer.utils.time_measurement |  INFO: Context update time: 723 ms

2025-08-07 10:03:09,882 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:03:09,883 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.33 seconds

2025-08-07 10:03:09,954 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:03:10,666 | skyrenderer.utils.time_measurement |  INFO: Context update time: 712 ms

2025-08-07 10:03:20,844 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:03:20,845 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.18 seconds

2025-08-07 10:03:20,927 | skyrenderer.utils.time_measurement |  INFO: Setup time: 63 ms

2025-08-07 10:03:21,651 | skyrenderer.utils.time_measurement |  INFO: Context update time: 724 ms

2025-08-07 10:03:31,605 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:03:31,606 | skyrenderer.utils.time_measurement |  INFO: Render time: 9.95 seconds

Fresnel parameters

In Physically-Based Rendering (PBR) shading, Fresnel refers to the way light reflects off a surface at different
angles, particularly how more light is reflected at grazing angles. This effect is modeled using the Fresnel
equation, which describes how reflection intensity changes based on the incident angle and the material's
refractive index. In PBR, the Fresnel term is often incorporated into specular highlights and is crucial for
realistic materials, like metals and dielectrics, as it helps achieve more accurate reflections by blending
between direct reflection at normal incidence and sharper, more intense reflection at glancing angles.

    renders = {}
    PBRShader.update_default_parameter("base_color", (1, 1, 1))
    PBRShader.update_default_parameter("metallic", 0)
    PBRShader.update_default_parameter("roughness", 0)
    PBRShader.update_default_parameter("ior", 1)
    renders["ior=1"] = scene_composer.get_render()
    PBRShader.update_default_parameter("ior", 1.5)
    renders["ior=1.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("ior", 2)
    renders["ior=2"] = scene_composer.get_render()
    PBRShader.update_default_parameter("ior", 1.45)
    PBRShader.update_default_parameter("fresnel_factor", 0)
    renders["fresnel_factor=0"] = scene_composer.get_render()
    PBRShader.update_default_parameter("fresnel_factor", 0.5)
    renders["fresnel_factor=0.5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("fresnel_factor", 1.0)
    renders["fresnel_factor=1"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, thickness=2)
pbr-shader-parameters_4_resourcesTutorial
2025-08-07 10:03:31,914 | skyrenderer.utils.time_measurement |  INFO: Setup time: 70 ms

2025-08-07 10:03:32,611 | skyrenderer.utils.time_measurement |  INFO: Context update time: 696 ms

2025-08-07 10:03:44,320 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:03:44,321 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.71 seconds

2025-08-07 10:03:44,398 | skyrenderer.utils.time_measurement |  INFO: Setup time: 61 ms

2025-08-07 10:03:45,094 | skyrenderer.utils.time_measurement |  INFO: Context update time: 696 ms

2025-08-07 10:03:56,818 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:03:56,818 | skyrenderer.utils.time_measurement |  INFO: Render time: 11.72 seconds

2025-08-07 10:03:57,021 | skyrenderer.utils.time_measurement |  INFO: Setup time: 187 ms

2025-08-07 10:03:57,746 | skyrenderer.utils.time_measurement |  INFO: Context update time: 724 ms

2025-08-07 10:04:08,624 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:04:08,625 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.88 seconds

2025-08-07 10:04:08,725 | skyrenderer.utils.time_measurement |  INFO: Setup time: 73 ms

2025-08-07 10:04:09,535 | skyrenderer.utils.time_measurement |  INFO: Context update time: 809 ms

2025-08-07 10:04:20,122 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:04:20,123 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.59 seconds

2025-08-07 10:04:20,200 | skyrenderer.utils.time_measurement |  INFO: Setup time: 56 ms

2025-08-07 10:04:20,891 | skyrenderer.utils.time_measurement |  INFO: Context update time: 690 ms

2025-08-07 10:04:31,558 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:04:31,559 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.67 seconds

2025-08-07 10:04:31,639 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:04:32,335 | skyrenderer.utils.time_measurement |  INFO: Context update time: 695 ms

2025-08-07 10:04:43,105 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:04:43,106 | skyrenderer.utils.time_measurement |  INFO: Render time: 10.77 seconds

Perlin noise

Perlin noise is a gradient noise that can be applied in various ways to create procedural perturbations
of textures or geometries (see Wikipedia).

SkyRenderer PBR shader has a few built-in ripples based on improved Perlin noise that can be applied to normals.
There are three types of built-in noises:

  • perlin_noise_type=1 Smooth,
  • perlin_noise_type=2 Marbled,
  • perlin_noise_type=3 Crinkled.
    Also, you can control frequency of a noise with perlin_noise_frequency parameter.
    renders = {}
    PBRShader.update_default_parameter("base_color", scene_composer.SKY_ACCENT_COLOUR)
    PBRShader.update_default_parameter("perlin_noise_type", 1)
    renders["perlin_noise_type=1"] = scene_composer.get_render()
    PBRShader.update_default_parameter("perlin_noise_type", 2)
    renders["perlin_noise_type=2"] = scene_composer.get_render()
    PBRShader.update_default_parameter("perlin_noise_type", 3)
    renders["perlin_noise_type=3"] = scene_composer.get_render()
    PBRShader.update_default_parameter("perlin_noise_frequency", 5)
    renders["perlin_noise_frequency=5"] = scene_composer.get_render()
    PBRShader.update_default_parameter("perlin_noise_frequency", 10)
    renders["perlin_noise_frequency=10"] = scene_composer.get_render()
    PBRShader.update_default_parameter("perlin_noise_frequency", 20)
    renders["perlin_noise_frequency=20"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1500), n_cols=3, thickness=2)
pbr-shader-parameters_5_resourcesTutorial
2025-08-07 10:04:43,394 | skyrenderer.utils.time_measurement |  INFO: Setup time: 60 ms

2025-08-07 10:04:44,093 | skyrenderer.utils.time_measurement |  INFO: Context update time: 698 ms

2025-08-07 10:04:56,715 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:04:56,716 | skyrenderer.utils.time_measurement |  INFO: Render time: 12.62 seconds

2025-08-07 10:04:56,788 | skyrenderer.utils.time_measurement |  INFO: Setup time: 57 ms

2025-08-07 10:04:57,492 | skyrenderer.utils.time_measurement |  INFO: Context update time: 703 ms

2025-08-07 10:05:33,935 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:05:33,936 | skyrenderer.utils.time_measurement |  INFO: Render time: 36.44 seconds

2025-08-07 10:05:34,006 | skyrenderer.utils.time_measurement |  INFO: Setup time: 57 ms

2025-08-07 10:05:34,703 | skyrenderer.utils.time_measurement |  INFO: Context update time: 696 ms

2025-08-07 10:06:13,000 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:06:13,001 | skyrenderer.utils.time_measurement |  INFO: Render time: 38.30 seconds

2025-08-07 10:06:13,070 | skyrenderer.utils.time_measurement |  INFO: Setup time: 56 ms

2025-08-07 10:06:13,761 | skyrenderer.utils.time_measurement |  INFO: Context update time: 690 ms

2025-08-07 10:06:50,333 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:06:50,333 | skyrenderer.utils.time_measurement |  INFO: Render time: 36.57 seconds

2025-08-07 10:06:50,404 | skyrenderer.utils.time_measurement |  INFO: Setup time: 58 ms

2025-08-07 10:06:51,102 | skyrenderer.utils.time_measurement |  INFO: Context update time: 697 ms

2025-08-07 10:07:27,383 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:07:27,384 | skyrenderer.utils.time_measurement |  INFO: Render time: 36.28 seconds

2025-08-07 10:07:27,454 | skyrenderer.utils.time_measurement |  INFO: Setup time: 57 ms

2025-08-07 10:07:28,149 | skyrenderer.utils.time_measurement |  INFO: Context update time: 694 ms

2025-08-07 10:08:04,287 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:08:04,287 | skyrenderer.utils.time_measurement |  INFO: Render time: 36.14 seconds

PBRShader - control parameters

These parameters are used to control PBRShader interaction with other parts of SkyRenderer's system. Among many,
there are a few worth mentioning (often used in SkyRenderer's use cases):

  • tex_scale - scale of a texture
  • use_reflections - disabling that parameter will stop ray generation after first hit
    from skyrenderer.basic_types.provider import SubstanceTextureProvider
    from skyrenderer.basic_types.item_component import Background
    from skyrenderer.basic_types.procedure import EnvMapMiss
    from skyrenderer.basic_types.provider import HdrTextureProvider
    for shaderball_part in scene_composer.SHADERBALL_PARTS:
        scene_composer.renderer_context.instancers[shaderball_part].modify_material_definition(
            texture_provider=SubstanceTextureProvider(scene_composer.renderer_context, "scifi_center_split_plate_border_quincunx_vent_metal")
        )
    scene_composer.renderer_context.define_env(
        Background(
            scene_composer.renderer_context,
            EnvMapMiss(scene_composer.renderer_context, "env_miss"),
            HdrTextureProvider(scene_composer.renderer_context, "SELECTED_HDR/industrial_pipe_and_valve"),
        )
    )
    scene_composer.renderer_context.remove_subtree("plane_GEO")
    renders = {}
    PBRShader.update_default_parameter("tex_scale", (1, 1))
    renders["tex_scale=1"] = scene_composer.get_render()
    PBRShader.update_default_parameter("tex_scale", (6, 6))
    renders["tex_scale=6"] = scene_composer.get_render()
    PBRShader.update_default_parameter("use_reflections", True)
    renders["use_reflections=True"] = scene_composer.get_render()
    PBRShader.update_default_parameter("use_reflections", False)
    renders["use_reflections=False"] = scene_composer.get_render()
    scene_composer.visualize_grid_desc(renders, shape=(1000, 1000), n_cols=2, thickness=2)
pbr-shader-parameters_6_resourcesTutorial
2025-08-07 10:08:04,567 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : diffuse_map

2025-08-07 10:08:04,568 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : glossiness_map

2025-08-07 10:08:04,568 | 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:
scifi_center_split_plate_border_quincunx_vent_metal

2025-08-07 10:08:04,583 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : diffuse_map

2025-08-07 10:08:04,584 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : glossiness_map

2025-08-07 10:08:04,584 | 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:
scifi_center_split_plate_border_quincunx_vent_metal

2025-08-07 10:08:04,599 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : diffuse_map

2025-08-07 10:08:04,600 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : glossiness_map

2025-08-07 10:08:04,600 | 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:
scifi_center_split_plate_border_quincunx_vent_metal

2025-08-07 10:08:04,616 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : diffuse_map

2025-08-07 10:08:04,617 | 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']
	See: Texture and substance convention for more details. Remember, purpose mapping is case insensitive. 
	Parsed purpose : glossiness_map

2025-08-07 10:08:04,619 | skyrenderer.basic_types.provider.unit_providers.hdr_texture_provider |  WARNING: Parameter light_adapt provided in HDR json is not supported

2025-08-07 10:08:04,619 | skyrenderer.basic_types.provider.unit_providers.hdr_texture_provider |  WARNING: Parameter color_adapt provided in HDR json is not supported

2025-08-07 10:08:04,620 | skyrenderer.scene.renderer_context |  WARNING: Setting background definition after setup.

2025-08-07 10:08:04,620 | skyrenderer.scene.renderer_context |  WARNING: Setting light after setup. Origin refers to last scene tree set up. Lights are stored in dict - change is visible immediately; Wrong parameter provider possible

2025-08-07 10:08:04,621 | skyrenderer.scene.renderer_context |  WARNING: You are removing subtree after context setup. No changes would be done in current scene.

2025-08-07 10:08:04,685 | skyrenderer.utils.time_measurement |  INFO: Setup time: 64 ms

2025-08-07 10:08:08,555 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.87 seconds

2025-08-07 10:08:45,861 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:08:45,861 | skyrenderer.utils.time_measurement |  INFO: Render time: 37.31 seconds

2025-08-07 10:08:46,057 | skyrenderer.utils.time_measurement |  INFO: Setup time: 183 ms

2025-08-07 10:08:49,480 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.42 seconds

2025-08-07 10:09:28,079 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:09:28,080 | skyrenderer.utils.time_measurement |  INFO: Render time: 38.60 seconds

2025-08-07 10:09:28,270 | skyrenderer.utils.time_measurement |  INFO: Setup time: 177 ms

2025-08-07 10:09:31,694 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.42 seconds

2025-08-07 10:10:08,662 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:10:08,662 | skyrenderer.utils.time_measurement |  INFO: Render time: 36.97 seconds

2025-08-07 10:10:08,864 | skyrenderer.utils.time_measurement |  INFO: Setup time: 180 ms

2025-08-07 10:10:12,315 | skyrenderer.utils.time_measurement |  INFO: Context update time: 3.45 seconds

2025-08-07 10:10:21,063 | skyrenderer.utils.time_measurement |  INFO: Key points calculation time: 0 ms

2025-08-07 10:10:21,063 | skyrenderer.utils.time_measurement |  INFO: Render time: 8.75 seconds

Summary

In this section you have learnt:

  • PBRShader has many parameters that affect shader appearance.