@zephyr3d/scene 0.9.26 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -27
- package/dist/animation/animation_bank.js +634 -0
- package/dist/animation/animation_bank.js.map +1 -0
- package/dist/animation/animation_bank_gpu.js +256 -0
- package/dist/animation/animation_bank_gpu.js.map +1 -0
- package/dist/animation/animationset.js +146 -30
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_component.js +406 -0
- package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
- package/dist/animation/cloth/gpu_cloth_system.js +332 -202
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
- package/dist/animation/gpu_animation_driver.js +289 -0
- package/dist/animation/gpu_animation_driver.js.map +1 -0
- package/dist/animation/joint_dynamics/collision.js +112 -1
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +6 -0
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +50 -12
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/skeleton.js +300 -56
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skin_palette_atlas.js +252 -0
- package/dist/animation/skin_palette_atlas.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +298 -38
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_chain.js +2 -0
- package/dist/animation/spring/spring_chain.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +159 -21
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_particle.js +1 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_solver.js +173 -0
- package/dist/animation/spring/spring_solver.js.map +1 -0
- package/dist/animation/spring/spring_system.js +249 -24
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +32 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/app.js +26 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +86 -15
- package/dist/app/engine.js.map +1 -1
- package/dist/app/gamepad.js +191 -0
- package/dist/app/gamepad.js.map +1 -0
- package/dist/app/inputactions.js +271 -0
- package/dist/app/inputactions.js.map +1 -0
- package/dist/app/inputmgr.js +331 -22
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/loading.js +138 -0
- package/dist/app/loading.js.map +1 -0
- package/dist/app/pipelinecache.js +209 -0
- package/dist/app/pipelinecache.js.map +1 -0
- package/dist/app/runtimescript.js +25 -0
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/scriptingsystem.js +54 -0
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +7 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/asset_manifest.js +59 -0
- package/dist/asset/asset_manifest.js.map +1 -0
- package/dist/asset/asset_preload.js +258 -0
- package/dist/asset/asset_preload.js.map +1 -0
- package/dist/asset/assetmanager.js +117 -65
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/dist/asset/loaders/ktx2/basis_location.js +17 -0
- package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
- package/dist/asset/mesh_lod_builder.js +104 -0
- package/dist/asset/mesh_lod_builder.js.map +1 -0
- package/dist/asset/mesh_settings.js +111 -0
- package/dist/asset/mesh_settings.js.map +1 -0
- package/dist/asset/meshopt_decoder.js +18 -0
- package/dist/asset/meshopt_decoder.js.map +1 -0
- package/dist/asset/meshopt_simplifier.js +26 -0
- package/dist/asset/meshopt_simplifier.js.map +1 -0
- package/dist/asset/model.js +177 -3
- package/dist/asset/model.js.map +1 -1
- package/dist/asset/texture_settings.js +231 -0
- package/dist/asset/texture_settings.js.map +1 -0
- package/dist/asset/zmsh_binary.js +131 -0
- package/dist/asset/zmsh_binary.js.map +1 -0
- package/dist/asset/zsdf_binary.js +111 -0
- package/dist/asset/zsdf_binary.js.map +1 -0
- package/dist/blitter/bilateralblur.js +1 -2
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/gaussianblur.js +1 -6
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +31 -10
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +178 -200
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/follow.js +342 -0
- package/dist/camera/follow.js.map +1 -0
- package/dist/camera/fps.js +9 -7
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +46 -19
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +30475 -19865
- package/dist/index.js +67 -12
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +3 -0
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/eye.js +1 -1
- package/dist/material/eye.js.map +1 -1
- package/dist/material/hair.js +2 -3
- package/dist/material/hair.js.map +1 -1
- package/dist/material/hairstrand.js +235 -235
- package/dist/material/hairstrand.js.map +1 -1
- package/dist/material/lambert.js +4 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +362 -300
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +118 -45
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +223 -83
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +31 -206
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +1 -1
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrmr.js +3 -0
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +3 -0
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/sdf_debug.js +78 -0
- package/dist/material/sdf_debug.js.map +1 -0
- package/dist/material/shader/helper.js +733 -190
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +204 -43
- package/dist/material/shader/terrain_blend.js.map +1 -1
- package/dist/material/skin.js +331 -297
- package/dist/material/skin.js.map +1 -1
- package/dist/material/skinprofile.js +1058 -0
- package/dist/material/skinprofile.js.map +1 -0
- package/dist/material/sss.js +353 -0
- package/dist/material/sss.js.map +1 -0
- package/dist/material/sss_kernel.js +265 -0
- package/dist/material/sss_kernel.js.map +1 -0
- package/dist/material/sssprofile.js +879 -0
- package/dist/material/sssprofile.js.map +1 -0
- package/dist/material/subsurfaceprofile.js +4 -8
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/terrain-cm.js +464 -188
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js +3 -0
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js +2009 -201
- package/dist/material/water.js.map +1 -1
- package/dist/node_modules/meshoptimizer/LICENSE +21 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
- package/dist/physics/character.js +226 -0
- package/dist/physics/character.js.map +1 -0
- package/dist/physics/collider.js +209 -0
- package/dist/physics/collider.js.map +1 -0
- package/dist/physics/events.js +79 -0
- package/dist/physics/events.js.map +1 -0
- package/dist/physics/joint.js +272 -0
- package/dist/physics/joint.js.map +1 -0
- package/dist/physics/node_physics.js +234 -0
- package/dist/physics/node_physics.js.map +1 -0
- package/dist/physics/part.js +91 -0
- package/dist/physics/part.js.map +1 -0
- package/dist/physics/rigid_body.js +379 -0
- package/dist/physics/rigid_body.js.map +1 -0
- package/dist/physics/vehicle.js +335 -0
- package/dist/physics/vehicle.js.map +1 -0
- package/dist/physics/world.js +25 -0
- package/dist/physics/world.js.map +1 -0
- package/dist/posteffect/bloom.js +49 -14
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/motionblur.js +668 -63
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js +12 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/postsss.js +572 -0
- package/dist/posteffect/postsss.js.map +1 -0
- package/dist/posteffect/sao.js +48 -50
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +605 -355
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +91 -162
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -11
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +34 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +1 -0
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +40 -39
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +328 -62
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +958 -224
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +26 -5
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/debug_views.js +37 -0
- package/dist/render/debug_views.js.map +1 -0
- package/dist/render/depthpass.js +5 -1
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +53 -6
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +53 -53
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +196 -113
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +8 -13
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +268 -136
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +113 -28
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/gi/probe_volume.js +1334 -0
- package/dist/render/gi/probe_volume.js.map +1 -0
- package/dist/render/gi/scene_gi.js +282 -0
- package/dist/render/gi/scene_gi.js.map +1 -0
- package/dist/render/gi/voxel_atlas.js +198 -0
- package/dist/render/gi/voxel_atlas.js.map +1 -0
- package/dist/render/gi/voxel_lighting.js +652 -0
- package/dist/render/gi/voxel_lighting.js.map +1 -0
- package/dist/render/gi/voxel_scene.js +642 -0
- package/dist/render/gi/voxel_scene.js.map +1 -0
- package/dist/render/gi/voxelize_pass.js +223 -0
- package/dist/render/gi/voxelize_pass.js.map +1 -0
- package/dist/render/globalbindgroup_allocator.js +3 -2
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/gpu_picking.js +9 -36
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +80 -22
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/instance_culling.js +499 -0
- package/dist/render/instance_culling.js.map +1 -0
- package/dist/render/lightpass.js +23 -9
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/lod.js +46 -0
- package/dist/render/lod.js.map +1 -0
- package/dist/render/oit.js +11 -11
- package/dist/render/oit.js.map +1 -1
- package/dist/render/primitive.js +301 -9
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/primitive_readback.js +209 -0
- package/dist/render/primitive_readback.js.map +1 -0
- package/dist/render/render_queue.js +198 -11
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +14 -7
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +15 -1
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/executor.js +136 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +585 -59
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +8 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +31 -2
- package/dist/render/rendergraph/scene_render_context.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +28 -5
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sdf/box_allocator.js +98 -0
- package/dist/render/sdf/box_allocator.js.map +1 -0
- package/dist/render/sdf/global_sdf.js +865 -0
- package/dist/render/sdf/global_sdf.js.map +1 -0
- package/dist/render/sdf/scene_sdf.js +562 -0
- package/dist/render/sdf/scene_sdf.js.map +1 -0
- package/dist/render/sdf/sdf_atlas.js +227 -0
- package/dist/render/sdf/sdf_atlas.js.map +1 -0
- package/dist/render/sdf/sdf_programs.js +42 -0
- package/dist/render/sdf/sdf_programs.js.map +1 -0
- package/dist/render/sdf/sdf_view.js +199 -0
- package/dist/render/sdf/sdf_view.js.map +1 -0
- package/dist/render/sdf/waterline.js +610 -0
- package/dist/render/sdf/waterline.js.map +1 -0
- package/dist/render/shadow_mask_pass.js +142 -25
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/shore_wave_generator.js +1193 -0
- package/dist/render/shore_wave_generator.js.map +1 -0
- package/dist/render/sky.js +516 -86
- package/dist/render/sky.js.map +1 -1
- package/dist/render/transmission_thickness_pass.js +477 -0
- package/dist/render/transmission_thickness_pass.js.map +1 -0
- package/dist/render/underwater.js +524 -0
- package/dist/render/underwater.js.map +1 -0
- package/dist/render/virtualtexture/virtual_texture.js +1214 -0
- package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_common.js +472 -0
- package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
- package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
- package/dist/render/volumetric_cloud/debug_view.js +131 -0
- package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
- package/dist/render/volumetric_cloud/resources.js +380 -0
- package/dist/render/volumetric_cloud/resources.js.map +1 -0
- package/dist/render/volumetric_cloud/sky_cache.js +380 -0
- package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
- package/dist/render/water_caustics.js +1195 -0
- package/dist/render/water_caustics.js.map +1 -0
- package/dist/render/water_foam.js +627 -0
- package/dist/render/water_foam.js.map +1 -0
- package/dist/render/water_interaction.js +1795 -0
- package/dist/render/water_interaction.js.map +1 -0
- package/dist/render/weightedblended_oit.js +36 -36
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +9 -4
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +108 -12
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +28 -7
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/foliage.js +1020 -0
- package/dist/scene/foliage.js.map +1 -0
- package/dist/scene/foliage_buckets.js +147 -0
- package/dist/scene/foliage_buckets.js.map +1 -0
- package/dist/scene/foliage_mask.js +358 -0
- package/dist/scene/foliage_mask.js.map +1 -0
- package/dist/scene/hair.js +15 -4
- package/dist/scene/hair.js.map +1 -1
- package/dist/scene/light.js +179 -13
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +327 -45
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +9 -3
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +9 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +8 -2
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/physics_settings.js +157 -0
- package/dist/scene/physics_settings.js.map +1 -0
- package/dist/scene/scene.js +190 -44
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +147 -6
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
- package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +881 -42
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grass_gpu.js +929 -0
- package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
- package/dist/scene/terrain-cm/grassmaterial.js +180 -9
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +465 -36
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
- package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
- package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
- package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
- package/dist/scene/update_queue.js +54 -0
- package/dist/scene/update_queue.js.map +1 -0
- package/dist/scene/water.js +997 -96
- package/dist/scene/water.js.map +1 -1
- package/dist/scene/water_surface_sampler.js +324 -0
- package/dist/scene/water_surface_sampler.js.map +1 -0
- package/dist/scene/wind.js +317 -0
- package/dist/scene/wind.js.map +1 -0
- package/dist/shaders/atmosphere.js +388 -166
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +100 -32
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/gi.js +365 -0
- package/dist/shaders/gi.js.map +1 -0
- package/dist/shaders/ltc_rect.js +202 -0
- package/dist/shaders/ltc_rect.js.map +1 -0
- package/dist/shaders/misc.js +1 -10
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +5 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/probes.js +309 -0
- package/dist/shaders/probes.js.map +1 -0
- package/dist/shaders/sdf.js +537 -0
- package/dist/shaders/sdf.js.map +1 -0
- package/dist/shaders/shadow.js +104 -70
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/skin_brdf.js +243 -0
- package/dist/shaders/skin_brdf.js.map +1 -0
- package/dist/shaders/ssr.js +6 -159
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js +38 -27
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js +40 -87
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +42 -0
- package/dist/shaders/water_medium.js.map +1 -0
- package/dist/shadow/dom.js +110 -19
- package/dist/shadow/dom.js.map +1 -1
- package/dist/shadow/esm.js +3 -3
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -48
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +15 -53
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +34 -9
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +3 -8
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +87 -49
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +93 -53
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +18 -72
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +3 -3
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/shape.js +44 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/utility/buoyancy.js +287 -0
- package/dist/utility/buoyancy.js.map +1 -0
- package/dist/utility/physical.js +10 -1
- package/dist/utility/physical.js.map +1 -1
- package/dist/utility/pmrem.js +17 -43
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/sdf/bake.js +435 -0
- package/dist/utility/sdf/bake.js.map +1 -0
- package/dist/utility/sdf/bvh.js +576 -0
- package/dist/utility/sdf/bvh.js.map +1 -0
- package/dist/utility/serialization/manager.js +36 -6
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +77 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +11 -4
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +140 -279
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/cloth.js +25 -0
- package/dist/utility/serialization/scene/cloth.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +14 -6
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/foliage.js +821 -0
- package/dist/utility/serialization/scene/foliage.js.map +1 -0
- package/dist/utility/serialization/scene/hair.js +11 -4
- package/dist/utility/serialization/scene/hair.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +115 -7
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +388 -220
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +69 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +140 -5
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/node_physics.js +1318 -0
- package/dist/utility/serialization/scene/node_physics.js.map +1 -0
- package/dist/utility/serialization/scene/particle.js +11 -4
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/physics.js +120 -0
- package/dist/utility/serialization/scene/physics.js.map +1 -0
- package/dist/utility/serialization/scene/primitive.js +124 -10
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +1687 -51
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +11 -4
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +163 -33
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +11 -4
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +2473 -114
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +97 -109
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/foam.js +170 -0
- package/dist/utility/textures/foam.js.map +1 -0
- package/dist/utility/textures/ggxlut.js +17 -43
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +4 -4
- package/dist/utility/textures/ltcdata.js.map +1 -1
- package/dist/utility/textures/ltclut.js +16 -6
- package/dist/utility/textures/ltclut.js.map +1 -1
- package/dist/utility/unsupported.js +24 -0
- package/dist/utility/unsupported.js.map +1 -0
- package/dist/values.js +13 -1
- package/dist/values.js.map +1 -1
- package/package.json +25 -12
- package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/src/asset/meshoptimizer/LICENSE +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sss.js","sources":["../../src/posteffect/sss.ts"],"sourcesContent":["import {\r\n DEPTH_COMPARE_FARTHER,\r\n DEPTH_FARTHEST,\r\n Matrix4x4,\r\n Vector2,\r\n Vector4,\r\n type Nullable\r\n} from '@zephyr3d/base';\r\nimport type { BindGroup, FrameBuffer, GPUProgram, Texture2D } from '@zephyr3d/device';\r\nimport type { SSSResolvedSettings } from '../camera';\r\nimport type { DrawContext } from '../render';\r\nimport { ShaderHelper } from '../material';\r\nimport { SubsurfaceProfile } from '../material/subsurfaceprofile';\r\nimport type { PunctualLight } from '../scene';\r\nimport { LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT } from '../values';\r\nimport { linearToGamma } from '../shaders/misc';\r\nimport { fetchSampler } from '../utility/misc';\r\nimport { AbstractPostEffect, PostEffectLayer } from './posteffect';\r\n\r\n/**\r\n * Screen-space subsurface scattering post effect.\r\n *\r\n * @remarks\r\n * Uses a depth/normal-aware separable blur driven by per-pixel SSS profiles\r\n * written by skin materials during the main shading pass.\r\n *\r\n * @internal\r\n */\r\nexport class SSS extends AbstractPostEffect {\r\n private static readonly _profileLUTWidth = 256;\r\n private static readonly _profileLUTHeight = 8;\r\n private static readonly _profileRadiusEncodeMax = 8;\r\n private static readonly _profileWorldScaleEncodeMax = 4;\r\n private static readonly _profileNormalScaleEncodeMax = 2;\r\n private static readonly _profileExtinctionEncodeMax = 4;\r\n private static readonly _profileSpecularRadiusEncodeMax = 4;\r\n private static readonly _debugViewMap: Record<string, number> = {\r\n none: 0,\r\n scatter_mask: 1,\r\n scatter_softness: 2,\r\n scatter_radius: 3,\r\n scatter_falloff: 4,\r\n profile_energy: 5,\r\n profile_transmission: 6,\r\n profile_boundary: 7,\r\n diffuse: 8,\r\n blur: 9,\r\n screen_thinness: 10,\r\n thin_transmission_mask: 11,\r\n thin_lighting: 12,\r\n transmission_shadow: 13\r\n };\r\n private static _blurPrograms: Record<string, GPUProgram> = {};\r\n private static _combinePrograms: Record<string, GPUProgram> = {};\r\n private static _profileLUT: Nullable<Texture2D> = null;\r\n private static _profileLUTVersion = -1;\r\n private _blurBindGroups: Record<string, BindGroup>;\r\n private _combineBindGroups: Record<string, BindGroup>;\r\n\r\n constructor() {\r\n super();\r\n this._layer = PostEffectLayer.opaque;\r\n this._blurBindGroups = {};\r\n this._combineBindGroups = {};\r\n }\r\n\r\n private static profileRowV(row: number) {\r\n return (row + 0.5) / SSS._profileLUTHeight;\r\n }\r\n\r\n private getCombineShadowLight(ctx: DrawContext): Nullable<PunctualLight> {\r\n const shadowMapInfo = ctx.shadowMapInfo;\r\n if (!shadowMapInfo) {\r\n return null;\r\n }\r\n const mainDirectionalLight = ctx.sunLight ?? ctx.primaryDirectionalLight;\r\n if (mainDirectionalLight && shadowMapInfo.has(mainDirectionalLight)) {\r\n return mainDirectionalLight;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Whether the combine pass should read the screen-space shadow mask for the\r\n * combine light instead of recomputing its shadow. Enabled when the camera\r\n * renders the mask and the combine light was actually written into it: the\r\n * mask already holds the identical shadow — same shadow impl (PCSS/VSM/…),\r\n * distance fade and shadowStrength — so this skips a full redundant per-pixel\r\n * shadow evaluation. Shadow mode is irrelevant: the mask is rendered with the\r\n * light's own impl. Falls back to the inline path when the light is not in the\r\n * mask (e.g. it overflows {@link MAX_SHADOW_MASK_LIGHTS}).\r\n *\r\n * Only valid at execute time, after the ShadowMaps and ShadowMask passes have\r\n * populated shadowMapInfo / maskOrdinal.\r\n */\r\n private useCombineShadowMask(ctx: DrawContext, shadowLight: Nullable<PunctualLight>): boolean {\r\n if (!shadowLight || !ctx.screenSpaceShadowMask) {\r\n return false;\r\n }\r\n const shadowMapParams = ctx.shadowMapInfo?.get(shadowLight);\r\n return !!(shadowMapParams?.shadowMap && shadowMapParams.impl && shadowMapParams.maskOrdinal != null);\r\n }\r\n\r\n private getCombineProgramKey(ctx: DrawContext, shadowLight: Nullable<PunctualLight>) {\r\n const shadowMapParams = shadowLight ? ctx.shadowMapInfo?.get(shadowLight) : null;\r\n if (!shadowMapParams?.shaderHash) {\r\n return 'default';\r\n }\r\n // The mask-sampling shader is independent of the PCSS impl hash.\r\n return this.useCombineShadowMask(ctx, shadowLight)\r\n ? 'shadowMask'\r\n : `shadow:${shadowMapParams.shaderHash}`;\r\n }\r\n\r\n requireLinearDepthTexture() {\r\n return true;\r\n }\r\n\r\n requireDepthAttachment() {\r\n return true;\r\n }\r\n\r\n requireSceneNormalTexture() {\r\n return true;\r\n }\r\n\r\n requireShadowMask(ctx: DrawContext) {\r\n // Runs at graph-build time, before shadowMapInfo is populated (that happens\r\n // during the ShadowMaps pass execute), so it cannot inspect the combine\r\n // light. Keep the mask alive whenever the camera renders it; combine()\r\n // decides at execute time whether to sample it, and _setupFromApply only\r\n // reads the handle when the mask was actually produced this frame.\r\n return !!ctx.screenSpaceShadowMask;\r\n }\r\n\r\n apply(ctx: DrawContext, inputColorTexture: Texture2D, sceneDepthTexture: Texture2D, srgbOutput: boolean) {\r\n const device = ctx.device;\r\n const outputFramebuffer = device.getFramebuffer();\r\n const sssSettings = ctx.camera.sssResolvedSettings;\r\n if (\r\n !ctx.SSS ||\r\n !ctx.SSSProfileTexture ||\r\n !ctx.SSSParamTexture ||\r\n ctx.camera.sssStrength <= 0 ||\r\n (ctx.camera.sssBlurScale <= 0 && ctx.camera.sssTransmissionStrength <= 0)\r\n ) {\r\n this.passThrough(ctx, inputColorTexture, srgbOutput);\r\n return;\r\n }\r\n const kernelRadius = (Math.max(1, sssSettings.blurKernelSize >> 0) - 1) >> 1;\r\n const blurEnabled = ctx.camera.sssBlurScale > 0 && kernelRadius > 0;\r\n const profileLUT = this.ensureProfileLUT(ctx);\r\n const inputScatterTexture = ctx.SSSDiffuseTexture ?? inputColorTexture;\r\n const blurWidth =\r\n blurEnabled && sssSettings.halfRes\r\n ? Math.max(1, Math.ceil(inputScatterTexture.width * 0.5))\r\n : inputScatterTexture.width;\r\n const blurHeight =\r\n blurEnabled && sssSettings.halfRes\r\n ? Math.max(1, Math.ceil(inputScatterTexture.height * 0.5))\r\n : inputScatterTexture.height;\r\n let blurredTexture = inputScatterTexture;\r\n let blurFramebufferH: Nullable<FrameBuffer> = null;\r\n let blurFramebufferV: Nullable<FrameBuffer> = null;\r\n if (blurEnabled) {\r\n blurFramebufferH = device.pool.fetchTemporalFramebuffer(\r\n false,\r\n blurWidth,\r\n blurHeight,\r\n inputScatterTexture.format,\r\n null,\r\n false\r\n );\r\n blurFramebufferV = device.pool.fetchTemporalFramebuffer(\r\n false,\r\n blurWidth,\r\n blurHeight,\r\n inputScatterTexture.format,\r\n null,\r\n false\r\n );\r\n device.setFramebuffer(blurFramebufferH);\r\n this.blur(\r\n ctx,\r\n inputScatterTexture,\r\n sceneDepthTexture,\r\n profileLUT,\r\n blurWidth,\r\n blurHeight,\r\n kernelRadius,\r\n true,\r\n sssSettings\r\n );\r\n device.setFramebuffer(blurFramebufferV);\r\n this.blur(\r\n ctx,\r\n blurFramebufferH.getColorAttachments()[0] as Texture2D,\r\n sceneDepthTexture,\r\n profileLUT,\r\n blurWidth,\r\n blurHeight,\r\n kernelRadius,\r\n false,\r\n sssSettings\r\n );\r\n blurredTexture = blurFramebufferV.getColorAttachments()[0] as Texture2D;\r\n }\r\n device.setFramebuffer(outputFramebuffer);\r\n // The SSS combine pass only rewrites pixels that pass the foreground depth test.\r\n // Preserve the current scene color first so sky/image backgrounds are not left\r\n // uninitialized when no geometry-backed pixel is written by the combine pass.\r\n this.passThrough(ctx, inputColorTexture, srgbOutput);\r\n this.combine(ctx, inputColorTexture, blurredTexture, sceneDepthTexture, profileLUT, srgbOutput);\r\n if (blurFramebufferH) {\r\n device.pool.releaseFrameBuffer(blurFramebufferH);\r\n }\r\n if (blurFramebufferV) {\r\n device.pool.releaseFrameBuffer(blurFramebufferV);\r\n }\r\n }\r\n\r\n private blur(\r\n ctx: DrawContext,\r\n inputColorTexture: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n profileLUT: Texture2D,\r\n targetWidth: number,\r\n targetHeight: number,\r\n kernelRadius: number,\r\n horizontal: boolean,\r\n sssSettings: Readonly<SSSResolvedSettings>\r\n ) {\r\n const device = ctx.device;\r\n const sssNormalTexture = ctx.SceneNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasNormalTexture = !!ctx.SceneNormalTexture;\r\n const key = `${horizontal ? 'h' : 'v'}:${kernelRadius}`;\r\n let program = SSS._blurPrograms[key];\r\n if (!program) {\r\n program = this.createBlurProgram(ctx, kernelRadius, horizontal);\r\n SSS._blurPrograms[key] = program;\r\n }\r\n let bindGroup = this._blurBindGroups[key];\r\n if (!bindGroup) {\r\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n this._blurBindGroups[key] = bindGroup;\r\n }\r\n bindGroup.setTexture('colorTex', inputColorTexture, fetchSampler('clamp_linear'));\r\n bindGroup.setTexture('profileTex', ctx.SSSProfileTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('paramTex', ctx.SSSParamTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('profileLUTTex', profileLUT, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('normalTex', sssNormalTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('depthTex', sceneDepthTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\r\n bindGroup.setValue('targetSize', new Vector4(targetWidth, targetHeight, targetWidth, targetHeight));\r\n bindGroup.setValue('sampleOffsets', this.createSampleOffsets(kernelRadius));\r\n bindGroup.setValue('blurScale', ctx.camera.sssBlurScale);\r\n bindGroup.setValue('sssStrength', ctx.camera.sssStrength);\r\n bindGroup.setValue('blurStdDev', sssSettings.blurStdDev);\r\n bindGroup.setValue('depthCutoff', sssSettings.blurDepthCutoff);\r\n bindGroup.setValue('normalCutoff', sssSettings.normalCutoff);\r\n bindGroup.setValue('hasNormalTex', hasNormalTexture ? 1 : 0);\r\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad();\r\n }\r\n\r\n private combine(\r\n ctx: DrawContext,\r\n inputColorTexture: Texture2D,\r\n blurredTexture: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n profileLUT: Texture2D,\r\n srgbOutput: boolean\r\n ) {\r\n const device = ctx.device;\r\n const sssRoughnessTexture = ctx.SceneRoughnessTexture ?? ctx.SSSParamTexture!;\r\n const sssNormalTexture = ctx.SceneNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasRoughnessTexture = !!ctx.SceneRoughnessTexture;\r\n const hasNormalTexture = !!ctx.SceneNormalTexture;\r\n const shadowLight = this.getCombineShadowLight(ctx);\r\n const programKey = this.getCombineProgramKey(ctx, shadowLight);\r\n let program = SSS._combinePrograms[programKey];\r\n if (!program) {\r\n program = this.createCombineProgram(ctx, shadowLight);\r\n SSS._combinePrograms[programKey] = program;\r\n }\r\n let bindGroup = this._combineBindGroups[programKey];\r\n if (!bindGroup) {\r\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n this._combineBindGroups[programKey] = bindGroup;\r\n }\r\n const mainDirectionalLight = ctx.sunLight ?? ctx.primaryDirectionalLight;\r\n const mainTransmissionLight = mainDirectionalLight ?? ctx.primaryTransmissionLight;\r\n const sunDir = mainDirectionalLight\r\n ? mainDirectionalLight.directionAndCutoff.xyz().scaleBy(-1)\r\n : mainTransmissionLight\r\n ? mainTransmissionLight.directionAndCutoff.xyz()\r\n : { x: 0, y: 0, z: 1 };\r\n const sunColorIntensity = mainTransmissionLight\r\n ? ShaderHelper.getPreExposedColorIntensity(mainTransmissionLight, ctx)\r\n : { x: 1, y: 1, z: 1, w: 0 };\r\n const mainLightPosRange = mainTransmissionLight\r\n ? mainTransmissionLight.positionAndRange\r\n : { x: 0, y: 0, z: 0, w: 1 };\r\n const mainLightDirCutoff = mainTransmissionLight\r\n ? mainTransmissionLight.directionAndCutoff\r\n : { x: 0, y: 0, z: -1, w: 0 };\r\n const mainLightType = mainTransmissionLight\r\n ? mainTransmissionLight.isDirectionLight()\r\n ? LIGHT_TYPE_DIRECTIONAL\r\n : mainTransmissionLight.isPointLight()\r\n ? LIGHT_TYPE_POINT\r\n : mainTransmissionLight.isSpotLight()\r\n ? LIGHT_TYPE_SPOT\r\n : LIGHT_TYPE_RECT\r\n : LIGHT_TYPE_DIRECTIONAL;\r\n bindGroup.setTexture('colorTex', inputColorTexture, fetchSampler('clamp_linear'));\r\n bindGroup.setTexture(\r\n 'diffuseTex',\r\n ctx.SSSDiffuseTexture ?? inputColorTexture,\r\n fetchSampler('clamp_linear')\r\n );\r\n bindGroup.setTexture('blurTex', blurredTexture, fetchSampler('clamp_linear'));\r\n bindGroup.setTexture(\r\n 'transmissionTex',\r\n ctx.SSSTransmissionTexture ?? ctx.SSSDiffuseTexture ?? inputColorTexture,\r\n fetchSampler('clamp_linear')\r\n );\r\n bindGroup.setTexture('profileTex', ctx.SSSProfileTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('paramTex', ctx.SSSParamTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('profileLUTTex', profileLUT, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('roughnessTex', sssRoughnessTexture, fetchSampler('clamp_linear_nomip'));\r\n bindGroup.setTexture('normalTex', sssNormalTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('depthTex', sceneDepthTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\r\n bindGroup.setValue(\r\n 'targetSize',\r\n new Vector4(\r\n inputColorTexture.width,\r\n inputColorTexture.height,\r\n inputColorTexture.width,\r\n inputColorTexture.height\r\n )\r\n );\r\n bindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\r\n bindGroup.setValue('invViewMatrix', ctx.camera.worldMatrix);\r\n bindGroup.setValue('sunDir', new Float32Array([sunDir.x, sunDir.y, sunDir.z]));\r\n bindGroup.setValue(\r\n 'mainLightPosRange',\r\n new Float32Array([mainLightPosRange.x, mainLightPosRange.y, mainLightPosRange.z, mainLightPosRange.w])\r\n );\r\n bindGroup.setValue(\r\n 'mainLightDirCutoff',\r\n new Float32Array([\r\n mainLightDirCutoff.x,\r\n mainLightDirCutoff.y,\r\n mainLightDirCutoff.z,\r\n mainLightDirCutoff.w\r\n ])\r\n );\r\n bindGroup.setValue('mainLightType', mainLightType);\r\n bindGroup.setValue(\r\n 'sunColorIntensity',\r\n new Float32Array([sunColorIntensity.x, sunColorIntensity.y, sunColorIntensity.z, sunColorIntensity.w])\r\n );\r\n bindGroup.setValue('sssStrength', ctx.camera.sssStrength);\r\n bindGroup.setValue('transmissionStrength', ctx.camera.sssTransmissionStrength);\r\n bindGroup.setValue('transmissionPower', ctx.camera.sssTransmissionPower);\r\n bindGroup.setValue('multiScatter', ctx.camera.sssMultiScatter);\r\n bindGroup.setValue('hasDiffuseTex', ctx.SSSDiffuseTexture ? 1 : 0);\r\n bindGroup.setValue('hasTransmissionTex', ctx.SSSTransmissionTexture ? 1 : 0);\r\n bindGroup.setValue('hasRoughnessTex', hasRoughnessTexture ? 1 : 0);\r\n bindGroup.setValue('hasNormalTex', hasNormalTexture ? 1 : 0);\r\n bindGroup.setValue('debugView', SSS._debugViewMap[ctx.camera.sssDebugView] ?? 0);\r\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n bindGroup.setValue('srgbOut', srgbOutput ? 1 : 0);\r\n if (shadowLight) {\r\n const shadowMapParams = ctx.shadowMapInfo!.get(shadowLight)!;\r\n if (this.useCombineShadowMask(ctx, shadowLight)) {\r\n // Screen-space shadow mask path: bind the mask array and select this\r\n // light's layer/channel from its recorded ordinal (layer = s>>2,\r\n // channel = s&3). A missing mask falls back to the fully-lit dummy.\r\n const ordinal = shadowMapParams.maskOrdinal ?? 0;\r\n const layer = ordinal >> 2;\r\n const channel = ordinal & 3;\r\n bindGroup.setValue('shadowMaskLayer', layer);\r\n bindGroup.setValue(\r\n 'shadowMaskChannel',\r\n new Float32Array([\r\n channel === 0 ? 1 : 0,\r\n channel === 1 ? 1 : 0,\r\n channel === 2 ? 1 : 0,\r\n channel === 3 ? 1 : 0\r\n ])\r\n );\r\n bindGroup.setTexture(\r\n 'Z_UniformShadowMask',\r\n ctx.shadowMaskTexture ?? ShaderHelper.getDummyShadowMask(device),\r\n fetchSampler('clamp_nearest')\r\n );\r\n } else {\r\n const cameraPos = ctx.camera.getWorldPosition();\r\n bindGroup.setValue('camera', {\r\n position: new Vector4(cameraPos.x, cameraPos.y, cameraPos.z, 0),\r\n params: new Vector4(ctx.camera.getNearPlane(), ctx.camera.getFarPlane(), 1, 1),\r\n shadowDebugCascades: ctx.camera.shadowDebugCascades ? 1 : 0,\r\n framestamp: ctx.device.frameInfo.frameCounter\r\n });\r\n bindGroup.setValue('light', {\r\n sunDir: new Float32Array([sunDir.x, sunDir.y, sunDir.z]),\r\n envLightStrength: ShaderHelper.getEnvLightLuminance(ctx),\r\n envLightSpecularStrength: ctx.env?.light.specularStrength ?? 1,\r\n shadowStrength: shadowLight.shadow.shadowStrength,\r\n shadowCascades: shadowMapParams.numShadowCascades,\r\n positionAndRange: shadowLight.positionAndRange,\r\n directionAndCutoff: shadowLight.directionAndCutoff,\r\n diffuseAndIntensity: ShaderHelper.getPreExposedColorIntensity(shadowLight, ctx),\r\n extraParams: shadowLight.extraParams,\r\n implParams: shadowMapParams.impl!.getParams(),\r\n cascadeDistances: shadowMapParams.cascadeDistances,\r\n depthBiasValues: shadowMapParams.depthBiasValues[0],\r\n shadowCameraParams: shadowMapParams.cameraParams,\r\n depthBiasScales: shadowMapParams.depthBiasScales,\r\n shadowMatrices: new Float32Array(shadowMapParams.shadowMatrices)\r\n });\r\n bindGroup.setTexture(\r\n 'Z_UniformShadowMap',\r\n shadowMapParams.shadowMap!,\r\n shadowMapParams.shadowMapSampler\r\n );\r\n }\r\n }\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, DEPTH_COMPARE_FARTHER));\r\n }\r\n\r\n private createBlurProgram(ctx: DrawContext, kernelRadius: number, horizontal: boolean) {\r\n const sampleCount = Math.max(1, Math.ceil(kernelRadius / 2));\r\n const program = ctx.device.buildRenderProgram({\r\n vertex(pb) {\r\n this.flip = pb.int().uniform(0);\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, DEPTH_FARTHEST, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n this.$if(pb.notEqual(this.flip, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n });\r\n },\r\n fragment(pb) {\r\n this.colorTex = pb.tex2D().uniform(0);\r\n this.profileTex = pb.tex2D().uniform(0);\r\n this.paramTex = pb.tex2D().uniform(0);\r\n this.profileLUTTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n this.sampleOffsets = pb.vec4[sampleCount + 1]().uniform(0);\r\n this.blurScale = pb.float().uniform(0);\r\n this.sssStrength = pb.float().uniform(0);\r\n this.blurStdDev = pb.float().uniform(0);\r\n this.depthCutoff = pb.float().uniform(0);\r\n this.normalCutoff = pb.float().uniform(0);\r\n this.hasNormalTex = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('max3', [pb.vec3('value')], function () {\r\n this.$return(pb.max(this.value.x, pb.max(this.value.y, this.value.z)));\r\n });\r\n pb.func('readProfileRadius', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(0));\r\n this.$return(\r\n pb.mul(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb, SSS._profileRadiusEncodeMax)\r\n );\r\n });\r\n pb.func('readProfileFalloff', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(1));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfileSettingsA', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(4));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileWorldScaleEncodeMax),\r\n this.raw.y,\r\n pb.mul(this.raw.z, SSS._profileNormalScaleEncodeMax),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func('readProfileSettingsB', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(6));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileExtinctionEncodeMax),\r\n pb.mul(this.raw.y, SSS._profileWorldScaleEncodeMax),\r\n pb.mul(this.raw.z, 2),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'burleyKernel1',\r\n [\r\n pb.float('distance'),\r\n pb.float('radius'),\r\n pb.float('falloff'),\r\n pb.float('distribution'),\r\n pb.float('scatterScale')\r\n ],\r\n function () {\r\n this.$l.safeRadius = pb.max(this.radius, 0.045);\r\n this.$l.safeDistribution = pb.clamp(this.distribution, 0, 1);\r\n this.$l.safeScatterScale = pb.clamp(\r\n pb.div(this.scatterScale, SSS._profileWorldScaleEncodeMax),\r\n 0.05,\r\n 1\r\n );\r\n this.$l.falloffShape = pb.mix(0.72, 1.46, pb.clamp(this.falloff, 0.05, 1));\r\n this.$l.distributionShape = pb.mix(0.82, 1.38, this.safeDistribution);\r\n this.$l.scatterShape = pb.mix(0.84, 1.28, this.safeScatterScale);\r\n this.$l.diffusionDistance = pb.max(\r\n pb.mul(\r\n this.blurStdDev,\r\n this.safeRadius,\r\n this.falloffShape,\r\n this.distributionShape,\r\n this.scatterShape\r\n ),\r\n 0.16\r\n );\r\n this.$l.dr = pb.div(pb.abs(this.distance), this.diffusionDistance);\r\n this.$return(\r\n pb.div(\r\n pb.add(pb.exp(pb.neg(this.dr)), pb.exp(pb.neg(pb.div(this.dr, 3)))),\r\n pb.max(pb.mul(8, this.diffusionDistance), 1e-4)\r\n )\r\n );\r\n }\r\n );\r\n pb.func(\r\n 'computeKernelWeight',\r\n [\r\n pb.float('distance'),\r\n pb.vec3('relativeRadius'),\r\n pb.vec3('falloff'),\r\n pb.float('distribution'),\r\n pb.float('scatterScale'),\r\n pb.float('strengthScale')\r\n ],\r\n function () {\r\n this.$l.safeDistribution = pb.clamp(this.distribution, 0, 1);\r\n this.$l.safeStrengthScale = pb.clamp(pb.mul(this.strengthScale, 0.5), 0.05, 1);\r\n this.$l.burleyWeight = pb.vec3(\r\n this.burleyKernel1(\r\n this.distance,\r\n this.relativeRadius.x,\r\n this.falloff.x,\r\n this.safeDistribution,\r\n this.scatterScale\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n this.relativeRadius.y,\r\n this.falloff.y,\r\n this.safeDistribution,\r\n this.scatterScale\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n this.relativeRadius.z,\r\n this.falloff.z,\r\n this.safeDistribution,\r\n this.scatterScale\r\n )\r\n );\r\n this.$l.forwardScatter = pb.vec3(\r\n this.burleyKernel1(\r\n this.distance,\r\n pb.max(pb.mul(this.relativeRadius.x, 0.58), 0.03),\r\n pb.mix(this.falloff.x, 1, 0.3),\r\n pb.mix(this.safeDistribution, 1, 0.18),\r\n pb.mul(this.scatterScale, 0.92)\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n pb.max(pb.mul(this.relativeRadius.y, 0.58), 0.03),\r\n pb.mix(this.falloff.y, 1, 0.3),\r\n pb.mix(this.safeDistribution, 1, 0.18),\r\n pb.mul(this.scatterScale, 0.92)\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n pb.max(pb.mul(this.relativeRadius.z, 0.58), 0.03),\r\n pb.mix(this.falloff.z, 1, 0.3),\r\n pb.mix(this.safeDistribution, 1, 0.18),\r\n pb.mul(this.scatterScale, 0.92)\r\n )\r\n );\r\n this.$l.forwardWeight = pb.mix(0.08, 0.28, this.safeStrengthScale);\r\n this.$return(\r\n pb.add(\r\n pb.mul(this.burleyWeight, pb.sub(1, this.forwardWeight)),\r\n pb.mul(this.forwardScatter, this.forwardWeight)\r\n )\r\n );\r\n }\r\n );\r\n pb.func('decodeNormal', [pb.vec2('uv')], function () {\r\n this.$if(pb.equal(this.hasNormalTex, 0), function () {\r\n this.$return(pb.vec3(0, 0, 1));\r\n });\r\n this.$l.n = pb.sub(pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2), pb.vec3(1));\r\n this.$return(pb.normalize(this.n));\r\n });\r\n pb.func('readDepth01', [pb.vec2('uv')], function () {\r\n this.$return(ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0));\r\n });\r\n pb.func('sampleColor', [pb.vec2('uv')], function () {\r\n this.$return(pb.textureSampleLevel(this.colorTex, this.uv, 0));\r\n });\r\n pb.func('readProfileSlot', [pb.vec4('param')], function () {\r\n this.$return(pb.floor(pb.add(pb.mul(this.param.r, 255), 0.5)));\r\n });\r\n pb.main(function () {\r\n this.$l.uv = this.$inputs.uv;\r\n this.$l.centerColor = pb.textureSampleLevel(this.colorTex, this.uv, 0);\r\n this.$l.centerProfile = pb.textureSampleLevel(this.profileTex, this.uv, 0);\r\n this.$l.centerParam = pb.textureSampleLevel(this.paramTex, this.uv, 0);\r\n this.$l.centerActive = pb.greaterThan(this.centerParam.a, 0.5);\r\n this.$l.centerStrength = this.max3(this.centerProfile.rgb);\r\n this.$l.centerSlot = this.readProfileSlot(this.centerParam);\r\n this.$l.centerDepth01 = this.readDepth01(this.uv);\r\n this.$if(\r\n pb.or(\r\n pb.or(\r\n pb.or(pb.lessThanEqual(this.centerStrength, 1e-4), pb.lessThanEqual(this.centerSlot, 0)),\r\n pb.not(this.centerActive)\r\n ),\r\n pb.greaterThanEqual(this.centerDepth01, 1)\r\n ),\r\n function () {\r\n this.$outputs.outColor = this.centerColor;\r\n }\r\n ).$else(function () {\r\n this.$l.widthStrength = pb.clamp(this.centerParam.g, 0, 0.999);\r\n this.$l.centerDepth = pb.mul(this.centerDepth01, this.cameraNearFar.y);\r\n this.$l.centerLogDepth = pb.log(pb.add(this.centerDepth, 1));\r\n this.$l.profileSettingsA = this.readProfileSettingsA(this.centerSlot);\r\n this.$l.profileSettingsB = this.readProfileSettingsB(this.centerSlot);\r\n this.$l.profileWorldScale = pb.clamp(\r\n this.profileSettingsA.x,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileBoundaryBleed = pb.clamp(this.profileSettingsA.y, 0, 1);\r\n this.$l.profileNormalScale = pb.clamp(\r\n this.profileSettingsA.z,\r\n 0,\r\n SSS._profileNormalScaleEncodeMax\r\n );\r\n this.$l.profileDistribution = pb.clamp(this.profileSettingsA.w, 0, 1);\r\n this.$l.profileScatterScale = pb.clamp(\r\n this.profileSettingsB.y,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileStrengthScale = pb.clamp(this.profileSettingsB.z, 0.05, 2);\r\n this.$l.profileWorldScaleNorm = pb.clamp(\r\n pb.div(this.profileWorldScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileScatterScaleNorm = pb.clamp(\r\n pb.div(this.profileScatterScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileStrengthNorm = pb.clamp(pb.mul(this.profileStrengthScale, 0.5), 0, 1);\r\n this.$l.depthThreshold = pb.div(\r\n pb.mul(\r\n this.depthCutoff,\r\n pb.add(0.45, pb.mul(this.widthStrength, 0.42)),\r\n pb.mix(0.88, 1.16, this.profileWorldScaleNorm)\r\n ),\r\n pb.max(\r\n pb.sub(pb.log(pb.add(this.cameraNearFar.y, 1)), pb.log(pb.add(this.cameraNearFar.x, 1))),\r\n 1e-4\r\n )\r\n );\r\n this.$l.normalDetailSoftening = pb.mul(\r\n pb.clamp(this.sssStrength, 0, 1),\r\n pb.add(0.14, pb.mul(this.widthStrength, 0.1))\r\n );\r\n this.$l.normalThreshold = pb.clamp(\r\n pb.add(\r\n pb.max(\r\n pb.sub(\r\n this.normalCutoff,\r\n pb.add(this.normalDetailSoftening, pb.mul(this.widthStrength, 0.12))\r\n ),\r\n 0.48\r\n ),\r\n pb.sub(pb.mul(this.profileNormalScale, 0.08), 0.08),\r\n pb.neg(pb.mul(this.profileBoundaryBleed, 0.04))\r\n ),\r\n 0.44,\r\n 0.92\r\n );\r\n this.$l.centerNormal = this.decodeNormal(this.uv);\r\n this.$l.profileRadius = pb.mul(\r\n this.readProfileRadius(this.centerSlot),\r\n this.profileWorldScale,\r\n pb.mix(0.76, 1.44, this.profileScatterScaleNorm),\r\n pb.mix(0.92, 1.08, this.profileStrengthNorm)\r\n );\r\n this.$l.profileFalloff = this.readProfileFalloff(this.centerSlot);\r\n this.$l.maxProfileRadius = pb.max(this.max3(this.profileRadius), 1e-4);\r\n this.$l.relativeRadius = pb.div(this.profileRadius, this.maxProfileRadius);\r\n this.$l.profileSpread = pb.clamp(\r\n pb.div(this.maxProfileRadius, pb.add(this.maxProfileRadius, 0.65)),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileDiffusionSoftness = pb.clamp(\r\n pb.add(\r\n pb.add(0.34, pb.mul(this.profileSpread, 0.34)),\r\n pb.add(pb.mul(this.profileDistribution, 0.18), pb.mul(this.profileStrengthNorm, 0.18))\r\n ),\r\n 0.2,\r\n 1\r\n );\r\n this.$l.radius = pb.max(\r\n pb.mul(\r\n pb.add(0.18, pb.mul(this.widthStrength, 1.9), pb.mul(this.profileSpread, 0.85)),\r\n this.blurScale,\r\n pb.add(0.18, pb.mul(this.maxProfileRadius, 0.82)),\r\n pb.mix(0.86, 1.22, this.profileStrengthNorm),\r\n pb.mix(0.9, 1.14, this.profileDiffusionSoftness),\r\n 0.23\r\n ),\r\n 1\r\n );\r\n this.$l.centerKernel = this.computeKernelWeight(\r\n 0,\r\n this.relativeRadius,\r\n this.profileFalloff,\r\n this.profileDistribution,\r\n this.profileScatterScale,\r\n this.profileStrengthScale\r\n );\r\n this.$l.centerWeight = pb.max(\r\n pb.mul(\r\n this.centerProfile.rgb,\r\n pb.mix(0.92, 1.18, this.profileStrengthNorm),\r\n pb.mix(0.94, 1.08, this.profileDiffusionSoftness)\r\n ),\r\n pb.vec3(pb.mul(this.widthStrength, 0.05))\r\n );\r\n this.$l.centerSample = this.sampleColor(this.uv).rgb;\r\n this.$l.colorSum = pb.mul(this.centerSample, this.centerWeight, this.centerKernel);\r\n this.$l.weightSum = pb.max(pb.mul(this.centerWeight, this.centerKernel), pb.vec3(1e-4));\r\n this.$for(pb.int('i'), 1, sampleCount, function () {\r\n this.$l.data = this.sampleOffsets.at(this.i);\r\n this.$l.axisOffset = pb.mul(this.data.x, this.radius);\r\n this.$l.offset = pb.div(\r\n horizontal ? pb.vec2(this.axisOffset, 0) : pb.vec2(0, this.axisOffset),\r\n this.targetSize.xy\r\n );\r\n this.$l.kernelWeight = this.computeKernelWeight(\r\n this.data.x,\r\n this.relativeRadius,\r\n this.profileFalloff,\r\n this.profileDistribution,\r\n this.profileScatterScale,\r\n this.profileStrengthScale\r\n );\r\n this.$for(pb.int('side'), 0, 2, function () {\r\n this.$l.sampleUV = this.$choice(\r\n pb.equal(this.side, 0),\r\n pb.add(this.uv, this.offset),\r\n pb.sub(this.uv, this.offset)\r\n );\r\n this.$l.sampleProfile = pb.textureSampleLevel(this.profileTex, this.sampleUV, 0);\r\n this.$l.sampleParam = pb.textureSampleLevel(this.paramTex, this.sampleUV, 0);\r\n this.$l.sampleStrength = this.max3(this.sampleProfile.rgb);\r\n this.$l.sampleActive = pb.greaterThan(this.sampleParam.a, 0.5);\r\n this.$l.sampleWidthStrength = pb.clamp(this.sampleParam.g, 0, 0.999);\r\n this.$l.sampleWeight = pb.max(\r\n this.sampleProfile.rgb,\r\n pb.vec3(pb.mul(this.sampleWidthStrength, 0.05))\r\n );\r\n this.$if(pb.and(this.sampleActive, pb.greaterThan(this.sampleStrength, 1e-4)), function () {\r\n this.$l.depth01Sample = this.readDepth01(this.sampleUV);\r\n this.$if(pb.lessThan(this.depth01Sample, 1), function () {\r\n this.$l.sampleDepth = pb.mul(this.depth01Sample, this.cameraNearFar.y);\r\n this.$l.sampleLogDepth = pb.log(pb.add(this.sampleDepth, 1));\r\n this.$if(\r\n pb.lessThan(\r\n pb.abs(pb.sub(this.sampleLogDepth, this.centerLogDepth)),\r\n this.depthThreshold\r\n ),\r\n function () {\r\n this.$l.sampleNormal = this.decodeNormal(this.sampleUV);\r\n this.$if(\r\n pb.greaterThan(pb.dot(this.sampleNormal, this.centerNormal), this.normalThreshold),\r\n function () {\r\n this.$l.sampleColor = this.sampleColor(this.sampleUV).rgb;\r\n this.$l.w = pb.mul(this.kernelWeight, this.sampleWeight);\r\n this.colorSum = pb.add(this.colorSum, pb.mul(this.sampleColor, this.w));\r\n this.weightSum = pb.add(this.weightSum, this.w);\r\n }\r\n );\r\n }\r\n );\r\n });\r\n });\r\n });\r\n });\r\n this.$outputs.outColor = pb.vec4(\r\n pb.div(this.colorSum, pb.max(this.weightSum, pb.vec3(1e-4))),\r\n this.centerColor.a\r\n );\r\n });\r\n });\r\n }\r\n })!;\r\n program.name = horizontal ? '@SSS_Blur_H' : '@SSS_Blur_V';\r\n return program;\r\n }\r\n\r\n private createCombineProgram(ctx: DrawContext, shadowLight: Nullable<PunctualLight>) {\r\n const shadowMapParams = shadowLight ? ctx.shadowMapInfo?.get(shadowLight) : null;\r\n const shadowEnabled = !!(shadowLight && shadowMapParams?.shadowMap && shadowMapParams.impl);\r\n // When the screen-space shadow mask is available for the combine light,\r\n // sample it instead of recomputing PCSS (which also avoids the dpdx-in-\r\n // non-uniform-control-flow constraint entirely on this path).\r\n const useShadowMask = this.useCombineShadowMask(ctx, shadowLight);\r\n const pcssEnabled = shadowEnabled && !useShadowMask;\r\n const program = ctx.device.buildRenderProgram({\r\n vertex(pb) {\r\n this.flip = pb.int().uniform(0);\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, DEPTH_FARTHEST, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n this.$if(pb.notEqual(this.flip, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n });\r\n },\r\n fragment(pb) {\r\n if (pcssEnabled) {\r\n const cameraStruct = pb.defineStruct([\r\n pb.vec4('position'),\r\n pb.vec4('params'),\r\n pb.float('shadowDebugCascades'),\r\n pb.int('framestamp')\r\n ]);\r\n const lightStruct = pb.defineStruct([\r\n pb.vec3('sunDir'),\r\n pb.float('envLightStrength'),\r\n pb.float('envLightSpecularStrength'),\r\n pb.float('shadowStrength'),\r\n pb.int('shadowCascades'),\r\n pb.vec4('positionAndRange'),\r\n pb.vec4('directionAndCutoff'),\r\n pb.vec4('diffuseAndIntensity'),\r\n pb.vec4('extraParams'),\r\n pb.vec4('cascadeDistances'),\r\n pb.vec4('depthBiasValues'),\r\n pb.vec4('implParams'),\r\n pb.vec4('shadowCameraParams'),\r\n pb.vec4('depthBiasScales'),\r\n pb.vec4[16]('shadowMatrices')\r\n ]);\r\n this.camera = cameraStruct().uniform(0);\r\n this.light = lightStruct().uniform(0);\r\n const shadowMap = shadowMapParams!.shadowMap!;\r\n const shadowTex = shadowMap.isTextureCube()\r\n ? shadowMap.isDepth()\r\n ? pb.texCubeShadow()\r\n : pb.texCube()\r\n : shadowMap.isTexture2D()\r\n ? shadowMap.isDepth()\r\n ? pb.tex2DShadow()\r\n : pb.tex2D()\r\n : shadowMap.isDepth()\r\n ? pb.tex2DArrayShadow()\r\n : pb.tex2DArray();\r\n if (\r\n !shadowMap.isDepth() &&\r\n !ctx.device.getDeviceCaps().textureCaps.getTextureFormatInfo(shadowMap.format).filterable\r\n ) {\r\n shadowTex.sampleType('unfilterable-float');\r\n }\r\n this.Z_UniformShadowMap = shadowTex.uniform(0);\r\n }\r\n if (useShadowMask) {\r\n // Screen-space shadow mask: one RGBA8 array layer per 4 lights. The\r\n // combine light's visibility is one channel of one layer, selected via\r\n // the layer index and a one-hot channel selector bound at draw time.\r\n this.Z_UniformShadowMask = pb.tex2DArray().uniform(0);\r\n this.shadowMaskLayer = pb.int().uniform(0);\r\n this.shadowMaskChannel = pb.vec4().uniform(0);\r\n }\r\n this.colorTex = pb.tex2D().uniform(0);\r\n this.diffuseTex = pb.tex2D().uniform(0);\r\n this.blurTex = pb.tex2D().uniform(0);\r\n this.transmissionTex = pb.tex2D().uniform(0);\r\n this.profileTex = pb.tex2D().uniform(0);\r\n this.paramTex = pb.tex2D().uniform(0);\r\n this.profileLUTTex = pb.tex2D().uniform(0);\r\n this.roughnessTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n this.invProjMatrix = pb.mat4().uniform(0);\r\n this.invViewMatrix = pb.mat4().uniform(0);\r\n this.sunDir = pb.vec3().uniform(0);\r\n this.mainLightPosRange = pb.vec4().uniform(0);\r\n this.mainLightDirCutoff = pb.vec4().uniform(0);\r\n this.mainLightType = pb.int().uniform(0);\r\n this.sunColorIntensity = pb.vec4().uniform(0);\r\n this.sssStrength = pb.float().uniform(0);\r\n this.transmissionStrength = pb.float().uniform(0);\r\n this.transmissionPower = pb.float().uniform(0);\r\n this.multiScatter = pb.float().uniform(0);\r\n this.hasDiffuseTex = pb.int().uniform(0);\r\n this.hasTransmissionTex = pb.int().uniform(0);\r\n this.hasRoughnessTex = pb.int().uniform(0);\r\n this.hasNormalTex = pb.int().uniform(0);\r\n this.debugView = pb.int().uniform(0);\r\n this.srgbOut = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('max3', [pb.vec3('value')], function () {\r\n this.$return(pb.max(this.value.x, pb.max(this.value.y, this.value.z)));\r\n });\r\n pb.func('readProfileRadius', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(0));\r\n this.$return(\r\n pb.mul(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb, SSS._profileRadiusEncodeMax)\r\n );\r\n });\r\n pb.func('readProfileFalloff', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(1));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfileTintBias', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(2));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfilePresetResponse', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(3));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n this.raw.x,\r\n this.raw.y,\r\n pb.sub(pb.mul(this.raw.z, 0.75), 0.25),\r\n pb.sub(pb.mul(this.raw.w, 0.75), 0.25)\r\n )\r\n );\r\n });\r\n pb.func('readProfileSettingsA', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(4));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileWorldScaleEncodeMax),\r\n this.raw.y,\r\n pb.mul(this.raw.z, SSS._profileNormalScaleEncodeMax),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func('readProfileTransmissionTint', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(5));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfileSettingsB', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(6));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileExtinctionEncodeMax),\r\n pb.mul(this.raw.y, SSS._profileWorldScaleEncodeMax),\r\n pb.mul(this.raw.z, 2),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func('readProfileSpecularSettings', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(7));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(pb.vec2(this.raw.x, pb.mul(this.raw.y, SSS._profileSpecularRadiusEncodeMax)));\r\n });\r\n pb.func('readProfileSlot', [pb.vec4('param')], function () {\r\n this.$return(pb.floor(pb.add(pb.mul(this.param.r, 255), 0.5)));\r\n });\r\n pb.func('decodeNormal', [pb.vec2('uv')], function () {\r\n this.$if(pb.equal(this.hasNormalTex, 0), function () {\r\n this.$return(pb.vec3(0, 0, 1));\r\n });\r\n this.$l.n = pb.sub(pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2), pb.vec3(1));\r\n this.$return(pb.normalize(this.n));\r\n });\r\n pb.func('readDepth01', [pb.vec2('uv')], function () {\r\n this.$return(ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0));\r\n });\r\n pb.func(\r\n 'sampleCompatibleSpecular',\r\n [pb.vec2('uv'), pb.float('profileSlot'), pb.float('centerLogDepth')],\r\n function () {\r\n this.$l.sampleUV = pb.clamp(this.uv, pb.vec2(0), pb.vec2(1));\r\n this.$l.sampleParam = pb.textureSampleLevel(this.paramTex, this.sampleUV, 0);\r\n this.$l.sampleSlot = this.readProfileSlot(this.sampleParam);\r\n this.$l.sampleDepth01 = this.readDepth01(this.sampleUV);\r\n this.$if(\r\n pb.or(\r\n pb.or(\r\n pb.lessThanEqual(this.sampleParam.a, 0.5),\r\n pb.notEqual(this.sampleSlot, this.profileSlot)\r\n ),\r\n pb.greaterThanEqual(this.sampleDepth01, 1)\r\n ),\r\n function () {\r\n this.$return(pb.vec4(0));\r\n }\r\n );\r\n this.$l.sampleLogDepth = pb.log(pb.add(pb.mul(this.sampleDepth01, this.cameraNearFar.y), 1));\r\n this.$if(\r\n pb.greaterThan(pb.abs(pb.sub(this.sampleLogDepth, this.centerLogDepth)), 0.022),\r\n function () {\r\n this.$return(pb.vec4(0));\r\n }\r\n );\r\n this.$l.sampleScene = pb.textureSampleLevel(this.colorTex, this.sampleUV, 0).rgb;\r\n this.$l.sampleDiffuse = pb.textureSampleLevel(this.diffuseTex, this.sampleUV, 0).rgb;\r\n this.$return(pb.vec4(pb.max(pb.sub(this.sampleScene, this.sampleDiffuse), pb.vec3(0)), 1));\r\n }\r\n );\r\n pb.func(\r\n 'estimateScreenThinnessComponents',\r\n [pb.vec2('uv'), pb.float('depth01'), pb.vec3('normalWS'), pb.float('radiusScale')],\r\n function () {\r\n this.$l.pixelStep = pb.div(\r\n pb.add(pb.vec2(1.2), pb.mul(pb.vec2(2.4), this.radiusScale)),\r\n this.targetSize.xy\r\n );\r\n this.$l.depthAccum = pb.float(0);\r\n this.$l.normalAccum = pb.float(0);\r\n this.$l.sampleCount = pb.float(0);\r\n const sampleAt = (offsetX: number, offsetY: number) => {\r\n this.$l.sampleUV = pb.clamp(\r\n pb.add(this.uv, pb.mul(this.pixelStep, pb.vec2(offsetX, offsetY))),\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.sampleDepth01 = this.readDepth01(this.sampleUV);\r\n this.depthAccum = pb.add(this.depthAccum, pb.abs(pb.sub(this.sampleDepth01, this.depth01)));\r\n this.$if(pb.notEqual(this.hasNormalTex, 0), function () {\r\n this.normalAccum = pb.add(\r\n this.normalAccum,\r\n pb.clamp(pb.sub(1, pb.dot(this.decodeNormal(this.sampleUV), this.normalWS)), 0, 1)\r\n );\r\n });\r\n this.sampleCount = pb.add(this.sampleCount, 1);\r\n };\r\n sampleAt(1, 0);\r\n sampleAt(-1, 0);\r\n sampleAt(0, 1);\r\n sampleAt(0, -1);\r\n sampleAt(1, 1);\r\n sampleAt(-1, -1);\r\n this.$l.depthMean = pb.div(this.depthAccum, pb.max(this.sampleCount, 1));\r\n this.$l.normalMean = pb.div(this.normalAccum, pb.max(this.sampleCount, 1));\r\n this.$l.depthThin = pb.clamp(\r\n pb.mul(this.depthMean, pb.add(52, pb.mul(this.radiusScale, 18))),\r\n 0,\r\n 1\r\n );\r\n this.$l.normalThin = pb.clamp(\r\n pb.mul(this.normalMean, pb.add(1.4, pb.mul(this.radiusScale, 0.5))),\r\n 0,\r\n 1\r\n );\r\n this.$l.combinedThin = pb.clamp(\r\n pb.add(pb.mul(this.depthThin, 0.72), pb.mul(this.normalThin, 0.52)),\r\n 0,\r\n 1\r\n );\r\n this.$return(pb.vec3(this.depthThin, this.normalThin, this.combinedThin));\r\n }\r\n );\r\n pb.func('reconstructViewPos', [pb.vec2('uv'), pb.float('linearDepth')], function () {\r\n this.$l.viewDepth = pb.max(pb.mul(this.linearDepth, this.cameraNearFar.y), 1e-5);\r\n this.$l.nonLinearDepth = ShaderHelper.linearDepthToNonLinear(\r\n this,\r\n this.viewDepth,\r\n this.cameraNearFar\r\n );\r\n this.$l.clipPos = pb.vec4(\r\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\r\n ShaderHelper.deviceDepthToClipZ(this, pb.clamp(this.nonLinearDepth, 0, 1)),\r\n 1\r\n );\r\n this.$l.viewPos = pb.mul(this.invProjMatrix, this.clipPos);\r\n this.$return(pb.div(this.viewPos.xyz, pb.max(this.viewPos.w, 1e-5)));\r\n });\r\n pb.func(\r\n 'calculateMainLightDirection',\r\n [\r\n pb.vec3('worldPos'),\r\n pb.int('lightType'),\r\n pb.vec4('posRange'),\r\n pb.vec4('dirCutoff'),\r\n pb.vec3('fallbackDir')\r\n ],\r\n function () {\r\n this.$return(\r\n this.$choice(\r\n pb.equal(this.lightType, LIGHT_TYPE_DIRECTIONAL),\r\n pb.normalize(this.fallbackDir),\r\n pb.normalize(pb.sub(this.posRange.xyz, this.worldPos))\r\n )\r\n );\r\n }\r\n );\r\n pb.func(\r\n 'calculateMainLightAttenuation',\r\n [pb.vec3('worldPos'), pb.int('lightType'), pb.vec4('posRange'), pb.vec4('dirCutoff')],\r\n function () {\r\n this.$if(pb.equal(this.lightType, LIGHT_TYPE_DIRECTIONAL), function () {\r\n this.$return(pb.float(1));\r\n });\r\n this.$l.dist = pb.distance(this.posRange.xyz, this.worldPos);\r\n this.$l.falloff = pb.max(0, pb.sub(1, pb.div(this.dist, pb.max(this.posRange.w, 1e-4))));\r\n this.$if(\r\n pb.or(pb.equal(this.lightType, LIGHT_TYPE_POINT), pb.equal(this.lightType, LIGHT_TYPE_RECT)),\r\n function () {\r\n this.$return(pb.mul(this.falloff, this.falloff));\r\n }\r\n );\r\n this.$l.spotFactor = pb.dot(\r\n pb.normalize(pb.sub(this.worldPos, this.posRange.xyz)),\r\n this.dirCutoff.xyz\r\n );\r\n this.spotFactor = pb.smoothStep(\r\n this.dirCutoff.w,\r\n pb.mix(this.dirCutoff.w, 1, 0.5),\r\n this.spotFactor\r\n );\r\n this.$return(pb.mul(this.spotFactor, this.falloff, this.falloff));\r\n }\r\n );\r\n if (pcssEnabled) {\r\n pb.func(\r\n 'calculateTransmissionShadow',\r\n [pb.vec3('worldPos'), pb.float('depth01'), pb.float('NoL')],\r\n function () {\r\n if (shadowMapParams!.numShadowCascades > 1) {\r\n this.$l.linearDepth = pb.mul(this.depth01, this.camera.params.y);\r\n this.$l.splitDistances = this.light.cascadeDistances;\r\n this.$l.comparison = pb.vec4(pb.greaterThan(pb.vec4(this.linearDepth), this.splitDistances));\r\n this.$l.cascadeFlags = pb.vec4(\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 0)),\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 1)),\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 2)),\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 3))\r\n );\r\n this.$l.split = pb.int(pb.dot(this.comparison, this.cascadeFlags));\r\n if (ctx.device.type === 'webgl') {\r\n this.$l.shadowVertex = pb.vec4();\r\n this.$for(pb.int('cascade'), 0, 4, function () {\r\n this.$if(pb.equal(this.cascade, this.split), function () {\r\n this.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(\r\n this,\r\n pb.vec4(this.worldPos, 1),\r\n this.cascade\r\n );\r\n this.$break();\r\n });\r\n });\r\n } else {\r\n this.$l.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(\r\n this,\r\n pb.vec4(this.worldPos, 1),\r\n this.split\r\n );\r\n }\r\n this.$l.shadow = shadowMapParams!.impl!.computeShadowCSM(\r\n shadowMapParams!,\r\n this,\r\n this.shadowVertex,\r\n this.NoL,\r\n this.split\r\n );\r\n this.$l.shadowDistance = this.light.shadowCameraParams.w;\r\n this.shadow = pb.mix(\r\n this.shadow,\r\n 1,\r\n pb.smoothStep(\r\n pb.mul(this.shadowDistance, 0.8),\r\n this.shadowDistance,\r\n pb.distance(this.camera.position.xyz, this.worldPos)\r\n )\r\n );\r\n this.shadow = pb.mix(1, this.shadow, this.light.shadowStrength);\r\n this.shadow = pb.clamp(this.shadow, 0, 1);\r\n this.$return(this.shadow);\r\n } else {\r\n this.$l.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(\r\n this,\r\n pb.vec4(this.worldPos, 1)\r\n );\r\n this.$l.shadow = shadowMapParams!.impl!.computeShadow(\r\n shadowMapParams!,\r\n this,\r\n this.shadowVertex,\r\n this.NoL\r\n );\r\n this.$l.shadowDistance = this.light.shadowCameraParams.w;\r\n this.shadow = pb.mix(\r\n this.shadow,\r\n 1,\r\n pb.smoothStep(\r\n pb.mul(this.shadowDistance, 0.8),\r\n this.shadowDistance,\r\n pb.distance(this.camera.position.xyz, this.worldPos)\r\n )\r\n );\r\n this.shadow = pb.mix(1, this.shadow, this.light.shadowStrength);\r\n this.shadow = pb.clamp(this.shadow, 0, 1);\r\n this.$return(this.shadow);\r\n }\r\n }\r\n );\r\n }\r\n pb.main(function () {\r\n this.$l.uv = this.$inputs.uv;\r\n this.$l.baseColor = pb.textureSampleLevel(this.colorTex, this.uv, 0);\r\n this.$l.baseDiffuseColor = pb.textureSampleLevel(this.diffuseTex, this.uv, 0).rgb;\r\n this.$l.baseTransmissionColor = pb.vec3(0);\r\n this.$l.debugThinness = pb.float(0);\r\n this.$l.debugThinnessLayers = pb.vec3(0);\r\n this.$l.debugTransmissionMask = pb.float(0);\r\n this.$l.debugThinLighting = pb.vec3(0);\r\n this.$l.debugProfileEnergy = pb.vec3(0);\r\n this.$l.debugProfileTransmission = pb.vec3(0);\r\n this.$l.debugProfileBoundary = pb.vec3(0);\r\n this.$l.debugTransmissionShadow = pb.float(0);\r\n this.$if(pb.notEqual(this.hasTransmissionTex, 0), function () {\r\n this.baseTransmissionColor = pb.textureSampleLevel(this.transmissionTex, this.uv, 0).rgb;\r\n });\r\n this.$l.profile = pb.textureSampleLevel(this.profileTex, this.uv, 0);\r\n this.$l.param = pb.textureSampleLevel(this.paramTex, this.uv, 0);\r\n this.$l.profileActive = pb.greaterThan(this.param.a, 0.5);\r\n this.$l.scatterSoftnessAuthor = pb.clamp(pb.mul(pb.sub(this.param.a, 0.75), 4), 0, 1);\r\n this.$l.roughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.uv, 0);\r\n this.$l.profileStrength = this.max3(this.profile.rgb);\r\n this.$l.automaticTransmission = pb.lessThan(this.profile.a, 0);\r\n this.$l.materialTransmissionMask = pb.clamp(this.profile.a, 0, 1);\r\n this.$l.profileSlot = this.readProfileSlot(this.param);\r\n this.$l.depth01 = this.readDepth01(this.uv);\r\n this.$l.result = this.baseColor.rgb;\r\n // Transmission shadow. On the PCSS path the shadow uses implicit\r\n // derivatives (dpdx) inside the impl; WGSL requires those in uniform\r\n // control flow, so it is computed here rather than inside the\r\n // profile-active branch below (a per-pixel, non-uniform branch). On the\r\n // shadow-mask path the value is a single texture fetch (no PCSS).\r\n this.$l.transmissionShadowRaw = pb.float(1);\r\n this.$l.transmissionShadow = pb.float(1);\r\n if (pcssEnabled) {\r\n this.$l.shadowNormalWS = this.decodeNormal(this.uv);\r\n this.$l.shadowViewPos = this.reconstructViewPos(this.uv, this.depth01);\r\n this.$l.shadowWorldPos = pb.mul(this.invViewMatrix, pb.vec4(this.shadowViewPos, 1)).xyz;\r\n this.$l.shadowSunDirWS = this.calculateMainLightDirection(\r\n this.shadowWorldPos,\r\n this.mainLightType,\r\n this.mainLightPosRange,\r\n this.mainLightDirCutoff,\r\n this.sunDir\r\n );\r\n this.transmissionShadowRaw = this.calculateTransmissionShadow(\r\n this.shadowWorldPos,\r\n this.depth01,\r\n pb.clamp(pb.abs(pb.dot(this.shadowNormalWS, this.shadowSunDirWS)), 0, 1)\r\n );\r\n this.transmissionShadow = this.transmissionShadowRaw;\r\n } else if (useShadowMask) {\r\n // The mask already holds the identical shadow (same PCSS + distance\r\n // fade + shadowStrength) rendered by the ShadowMaskPass; read the\r\n // combine light's channel. Sample by screen UV, matching how the\r\n // other screen-space inputs (color/depth) are sampled above.\r\n this.transmissionShadowRaw = pb.dot(\r\n pb.textureArraySampleLevel(this.Z_UniformShadowMask, this.uv, this.shadowMaskLayer, 0),\r\n this.shadowMaskChannel\r\n );\r\n this.transmissionShadow = this.transmissionShadowRaw;\r\n }\r\n this.$if(\r\n pb.and(\r\n pb.and(\r\n pb.and(pb.greaterThan(this.profileStrength, 1e-4), pb.greaterThan(this.profileSlot, 0)),\r\n this.profileActive\r\n ),\r\n pb.lessThan(this.depth01, 1)\r\n ),\r\n function () {\r\n this.$l.widthStrength = pb.clamp(this.param.g, 0, 0.999);\r\n this.$l.profileSettingsA = this.readProfileSettingsA(this.profileSlot);\r\n this.$l.profileTransmissionTint = this.readProfileTransmissionTint(this.profileSlot);\r\n this.$l.profileSettingsB = this.readProfileSettingsB(this.profileSlot);\r\n this.$l.profileSpecularSettings = this.readProfileSpecularSettings(this.profileSlot);\r\n this.$l.profileWorldScale = pb.clamp(\r\n this.profileSettingsA.x,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileBoundaryBleed = pb.clamp(this.profileSettingsA.y, 0, 1);\r\n this.$l.profileNormalScale = pb.clamp(\r\n this.profileSettingsA.z,\r\n 0,\r\n SSS._profileNormalScaleEncodeMax\r\n );\r\n this.$l.profileDistribution = pb.clamp(this.profileSettingsA.w, 0, 1);\r\n this.$l.profileExtinctionScale = pb.clamp(\r\n this.profileSettingsB.x,\r\n 0,\r\n SSS._profileExtinctionEncodeMax\r\n );\r\n this.$l.profileScatterScale = pb.clamp(\r\n this.profileSettingsB.y,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileStrengthScale = pb.clamp(this.profileSettingsB.z, 0.05, 2);\r\n this.$l.profileSpecularSoftness = pb.clamp(this.profileSpecularSettings.x, 0, 1);\r\n this.$l.profileSpecularRadius = pb.clamp(\r\n this.profileSpecularSettings.y,\r\n 0,\r\n SSS._profileSpecularRadiusEncodeMax\r\n );\r\n this.$l.profileWorldScaleNorm = pb.clamp(\r\n pb.div(this.profileWorldScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileScatterScaleNorm = pb.clamp(\r\n pb.div(this.profileScatterScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileStrengthNorm = pb.clamp(pb.mul(this.profileStrengthScale, 0.5), 0, 1);\r\n this.$l.extinctionNorm = pb.clamp(\r\n pb.div(this.profileExtinctionScale, SSS._profileExtinctionEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileRadius = pb.mul(\r\n this.readProfileRadius(this.profileSlot),\r\n this.profileWorldScale,\r\n pb.mix(0.78, 1.42, this.profileScatterScaleNorm),\r\n pb.mix(0.92, 1.08, this.profileStrengthNorm)\r\n );\r\n this.$l.profileFalloff = this.readProfileFalloff(this.profileSlot);\r\n this.$l.maxProfileRadius = pb.max(this.max3(this.profileRadius), 1e-4);\r\n this.$l.radiusTint = pb.div(this.profileRadius, this.maxProfileRadius);\r\n this.$l.avgFalloff = pb.mul(\r\n pb.add(this.profileFalloff.x, pb.add(this.profileFalloff.y, this.profileFalloff.z)),\r\n 0.3333333\r\n );\r\n this.$l.profileSpread = pb.clamp(\r\n pb.div(this.maxProfileRadius, pb.add(this.maxProfileRadius, 0.65)),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileDiffusionSoftness = pb.clamp(\r\n pb.add(\r\n pb.add(0.32, pb.mul(this.profileSpread, 0.34)),\r\n pb.add(pb.mul(this.profileDistribution, 0.18), pb.mul(this.profileStrengthNorm, 0.2))\r\n ),\r\n 0.18,\r\n 1\r\n );\r\n this.$l.profileEnergyScale = pb.clamp(\r\n pb.mul(\r\n pb.add(\r\n pb.add(0.52, pb.mul(this.profileScatterScaleNorm, 0.42)),\r\n pb.mul(this.profileStrengthNorm, 0.28)\r\n ),\r\n pb.add(0.9, pb.mul(this.profileWorldScaleNorm, 0.16))\r\n ),\r\n 0.45,\r\n 1.55\r\n );\r\n this.$l.profileTransmissionScale = pb.clamp(\r\n pb.mul(\r\n pb.add(\r\n pb.add(0.44, pb.mul(this.profileScatterScaleNorm, 0.36)),\r\n pb.add(pb.mul(this.profileStrengthNorm, 0.26), pb.mul(this.profileBoundaryBleed, 0.08))\r\n ),\r\n pb.mix(1.1, 0.72, this.extinctionNorm)\r\n ),\r\n 0.28,\r\n 1.35\r\n );\r\n this.$l.profileTintBase = pb.div(\r\n pb.max(\r\n pb.mul(\r\n pb.pow(this.profileFalloff, pb.vec3(0.8)),\r\n pb.mix(pb.vec3(0.72), pb.vec3(1.35), this.radiusTint)\r\n ),\r\n pb.vec3(1e-4)\r\n ),\r\n pb.max(\r\n this.max3(\r\n pb.mul(\r\n pb.pow(this.profileFalloff, pb.vec3(0.8)),\r\n pb.mix(pb.vec3(0.72), pb.vec3(1.35), this.radiusTint)\r\n )\r\n ),\r\n 1e-4\r\n )\r\n );\r\n this.$l.presetTintBias = this.readProfileTintBias(this.profileSlot);\r\n this.$l.presetResponse = this.readProfilePresetResponse(this.profileSlot);\r\n this.$l.presetFrontScatter = this.presetResponse.x;\r\n this.$l.presetSoftness = this.presetResponse.y;\r\n this.$l.presetTransmissionBoost = this.presetResponse.w;\r\n this.$l.presetTint = pb.mul(\r\n this.profileTintBase,\r\n this.presetTintBias,\r\n pb.mix(pb.vec3(1), this.profileTransmissionTint, pb.mul(this.profileBoundaryBleed, 0.22))\r\n );\r\n this.$l.tint = pb.div(\r\n pb.max(this.presetTint, pb.vec3(1e-4)),\r\n pb.max(this.max3(this.presetTint), 1e-4)\r\n );\r\n this.$l.baseLuma = pb.dot(this.baseColor.rgb, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.shadowMask = pb.clamp(pb.sub(0.82, this.baseLuma), 0, 1);\r\n this.$l.radiusResponse = pb.clamp(\r\n pb.add(\r\n pb.mul(this.widthStrength, 0.9),\r\n pb.mul(this.profileSpread, 0.62),\r\n pb.add(\r\n pb.mul(this.profileDiffusionSoftness, 0.18),\r\n pb.add(pb.mul(this.avgFalloff, 0.16), pb.mul(this.profileEnergyScale, 0.08))\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.normalWS = this.decodeNormal(this.uv);\r\n this.$l.viewPos = this.reconstructViewPos(this.uv, this.depth01);\r\n this.$l.worldPos = pb.mul(this.invViewMatrix, pb.vec4(this.viewPos, 1)).xyz;\r\n this.$l.sunDirWS = this.calculateMainLightDirection(\r\n this.worldPos,\r\n this.mainLightType,\r\n this.mainLightPosRange,\r\n this.mainLightDirCutoff,\r\n this.sunDir\r\n );\r\n this.$l.mainLightAttenuation = this.calculateMainLightAttenuation(\r\n this.worldPos,\r\n this.mainLightType,\r\n this.mainLightPosRange,\r\n this.mainLightDirCutoff\r\n );\r\n this.$l.frontLit = pb.mul(pb.dot(this.normalWS, this.sunDirWS), this.mainLightAttenuation);\r\n // transmissionShadowRaw/transmissionShadow were computed in uniform\r\n // control flow at the top of main (PCSS sampling uses dpdx, which\r\n // WGSL forbids inside this non-uniform branch); reuse them here.\r\n this.transmissionShadow = this.transmissionShadowRaw;\r\n this.$l.transmissionLightAttenuation = pb.mul(\r\n this.mainLightAttenuation,\r\n this.transmissionShadow\r\n );\r\n this.$l.thinnessComponents = this.estimateScreenThinnessComponents(\r\n this.uv,\r\n this.depth01,\r\n this.normalWS,\r\n this.radiusResponse\r\n );\r\n this.$l.depthThinness = this.thinnessComponents.x;\r\n this.$l.curvatureThinness = this.thinnessComponents.y;\r\n this.$l.screenThinness = this.thinnessComponents.z;\r\n this.$l.backLightFacing = pb.clamp(pb.dot(pb.neg(this.normalWS), this.sunDirWS), 0, 1);\r\n this.$l.backLightGate = pb.pow(this.backLightFacing, pb.max(this.transmissionPower, 0.1));\r\n this.$l.automaticThinMask = pb.mul(\r\n pb.smoothStep(0.24, 0.72, this.screenThinness),\r\n pb.mix(0.58, 1, this.backLightGate)\r\n );\r\n this.materialTransmissionMask = this.$choice(\r\n this.automaticTransmission,\r\n this.automaticThinMask,\r\n this.materialTransmissionMask\r\n );\r\n this.debugTransmissionMask = this.materialTransmissionMask;\r\n this.debugThinness = this.screenThinness;\r\n this.debugThinnessLayers = pb.vec3(this.depthThinness, this.curvatureThinness, 0);\r\n this.$l.wrappedFront = pb.smoothStep(\r\n pb.add(-0.32, pb.mul(this.profileSpread, 0.08)),\r\n pb.add(0.42, pb.mul(this.radiusResponse, 0.16)),\r\n pb.add(this.frontLit, pb.mul(this.radiusResponse, 0.18))\r\n );\r\n this.$l.terminatorWrap = pb.clamp(\r\n pb.mul(\r\n pb.max(pb.sub(this.wrappedFront, pb.clamp(this.frontLit, 0, 1)), 0),\r\n pb.add(0.85, pb.mul(this.avgFalloff, 0.3), pb.mul(this.profileSpread, 0.22))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.surfaceScatterMask = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.shadowMask, 0.58), pb.mul(this.terminatorWrap, 0.82)),\r\n pb.add(\r\n pb.add(\r\n pb.mul(pb.clamp(pb.sub(1, pb.max(this.frontLit, 0)), 0, 1), 0.12),\r\n pb.mul(this.profileSpread, 0.06)\r\n ),\r\n pb.mul(\r\n this.screenThinness,\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.profileSpread, 0.08)),\r\n pb.mul(this.profileBoundaryBleed, 0.08)\r\n )\r\n )\r\n )\r\n ),\r\n 0.05,\r\n 1\r\n );\r\n this.$l.materialScatterBoost = pb.clamp(\r\n pb.add(\r\n pb.mul(pb.max(pb.sub(this.profileStrength, 0.9), 0), 0.72),\r\n pb.add(\r\n pb.mul(pb.max(pb.sub(this.widthStrength, 0.55), 0), 1.45),\r\n pb.add(\r\n pb.mul(pb.max(pb.sub(this.profileSpread, 0.58), 0), 0.42),\r\n pb.add(\r\n pb.mul(pb.sub(this.profileDistribution, 0.5), 0.28),\r\n pb.mul(this.profileStrengthNorm, 0.18)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.materialTransmissionResponse = pb.clamp(\r\n pb.mul(\r\n this.materialTransmissionMask,\r\n pb.add(\r\n pb.add(0.7, pb.mul(this.profileSpread, 0.14)),\r\n pb.add(\r\n pb.add(pb.mul(this.presetTransmissionBoost, 0.52), pb.mul(this.presetSoftness, 0.22)),\r\n pb.add(\r\n pb.mul(this.profileBoundaryBleed, 0.08),\r\n pb.add(\r\n pb.mul(pb.sub(1, this.extinctionNorm), 0.1),\r\n pb.mul(this.profileTransmissionScale, 0.14)\r\n )\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.materialTransmissionSoftness = pb.clamp(\r\n pb.add(\r\n pb.mul(this.materialTransmissionResponse, 0.42),\r\n pb.add(pb.mul(this.widthStrength, 0.08), pb.mul(this.profileSpread, 0.06))\r\n ),\r\n 0,\r\n 0.65\r\n );\r\n this.$l.materialThicknessField = pb.clamp(\r\n pb.add(\r\n pb.add(\r\n pb.mul(this.materialTransmissionResponse, 0.82),\r\n pb.mul(this.materialTransmissionSoftness, 0.28)\r\n ),\r\n pb.add(pb.mul(this.widthStrength, 0.06), pb.mul(this.profileSpread, 0.08))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.debugProfileEnergy = pb.clamp(\r\n pb.vec3(\r\n this.profileStrengthNorm,\r\n pb.div(this.profileEnergyScale, 1.55),\r\n this.materialScatterBoost\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.debugProfileTransmission = pb.clamp(\r\n pb.vec3(\r\n pb.div(this.profileTransmissionScale, 1.35),\r\n this.materialTransmissionResponse,\r\n this.materialThicknessField\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.debugProfileBoundary = pb.clamp(\r\n pb.vec3(\r\n this.profileBoundaryBleed,\r\n this.profileDiffusionSoftness,\r\n this.materialTransmissionSoftness\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.$l.edgeThinBoost = pb.clamp(\r\n pb.mul(this.screenThinness, pb.add(0.14, pb.mul(this.materialThicknessField, 0.22))),\r\n 0,\r\n 0.32\r\n );\r\n this.$l.curvatureThinBoost = pb.clamp(\r\n pb.mul(\r\n this.curvatureThinness,\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.materialThicknessField, 0.12)),\r\n pb.mul(pb.sub(this.profileNormalScale, 1), 0.08)\r\n )\r\n ),\r\n 0,\r\n 0.18\r\n );\r\n this.$l.scatterMask = pb.clamp(\r\n pb.add(\r\n this.surfaceScatterMask,\r\n pb.add(\r\n pb.add(pb.mul(this.materialScatterBoost, 0.28), this.presetFrontScatter),\r\n pb.add(\r\n pb.mul(\r\n pb.clamp(pb.sub(1, pb.max(this.frontLit, 0)), 0, 1),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.22), pb.mul(this.presetFrontScatter, 0.7))\r\n ),\r\n pb.mul(\r\n this.screenThinness,\r\n pb.add(0.12, pb.mul(this.presetSoftness, 0.08), pb.mul(this.presetFrontScatter, 0.08))\r\n ),\r\n pb.mul(this.materialTransmissionSoftness, 0.1)\r\n )\r\n )\r\n ),\r\n pb.add(\r\n pb.add(0.05, pb.mul(this.materialScatterBoost, 0.12)),\r\n pb.mul(this.presetFrontScatter, 0.3)\r\n ),\r\n 1\r\n );\r\n this.$l.scatterStrength = pb.clamp(\r\n pb.mul(\r\n pb.max(\r\n pb.mul(this.profileStrength, pb.mix(0.88, 1.24, this.profileStrengthNorm)),\r\n pb.mul(this.widthStrength, 0.45)\r\n ),\r\n this.sssStrength,\r\n this.profileEnergyScale,\r\n pb.add(\r\n pb.add(0.62, pb.mul(this.avgFalloff, 0.56)),\r\n pb.add(\r\n pb.add(pb.mul(this.profileSpread, 0.28), pb.mul(this.screenThinness, 0.18)),\r\n pb.add(\r\n pb.add(pb.mul(this.materialScatterBoost, 0.42), pb.mul(this.presetSoftness, 0.5)),\r\n pb.mul(this.materialTransmissionSoftness, 0.22)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n pb.add(\r\n pb.add(\r\n pb.add(1.05, pb.mul(this.materialScatterBoost, 1.1)),\r\n pb.add(pb.mul(this.presetSoftness, 0.8), pb.mul(this.profileEnergyScale, 0.24))\r\n ),\r\n pb.mul(this.screenThinness, 0.22)\r\n )\r\n );\r\n this.$l.blurred = pb.textureSampleLevel(this.blurTex, this.uv, 0).rgb;\r\n this.$l.roughness = pb.float(1);\r\n this.$l.specMask = pb.float(0.12);\r\n this.$if(pb.notEqual(this.hasRoughnessTex, 0), function () {\r\n this.roughness = this.roughnessInfo.a;\r\n this.specMask = pb.clamp(\r\n pb.mul(\r\n this.max3(this.roughnessInfo.rgb),\r\n pb.add(0.45, pb.mul(pb.sub(1, this.roughness), 0.75))\r\n ),\r\n 0,\r\n 1\r\n );\r\n });\r\n this.$if(pb.equal(this.hasDiffuseTex, 0), function () {\r\n this.$l.specularFallback = pb.mul(\r\n this.baseColor.rgb,\r\n pb.clamp(\r\n pb.add(\r\n pb.mul(this.specMask, pb.add(0.12, pb.mul(pb.sub(1, this.roughness), 0.28))),\r\n pb.mul(this.profileStrength, 0.06)\r\n ),\r\n 0,\r\n 0.5\r\n )\r\n );\r\n this.baseDiffuseColor = pb.max(pb.sub(this.baseColor.rgb, this.specularFallback), pb.vec3(0));\r\n });\r\n this.$l.baseDiffuseSafe = pb.max(this.baseDiffuseColor, pb.vec3(1e-4));\r\n this.$l.baseDiffuseLuma = pb.dot(this.baseDiffuseSafe, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.epidermalMix = pb.clamp(\r\n pb.add(\r\n pb.add(0.24, pb.mul(this.avgFalloff, 0.08)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.1), pb.mul(this.presetSoftness, 0.08))\r\n ),\r\n 0.18,\r\n 0.48\r\n );\r\n this.$l.deepMix = pb.clamp(\r\n pb.add(\r\n pb.add(0.52, pb.mul(this.profileSpread, 0.08)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.12), pb.mul(this.presetTransmissionBoost, 0.08))\r\n ),\r\n 0.42,\r\n 0.72\r\n );\r\n this.$l.skinTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n this.baseDiffuseSafe,\r\n pb.mul(\r\n this.baseDiffuseSafe,\r\n pb.mix(this.tint, this.profileTransmissionTint, pb.mul(this.profileBoundaryBleed, 0.2))\r\n ),\r\n this.epidermalMix\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.deepTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n this.skinTint,\r\n pb.mul(\r\n this.tint,\r\n pb.mix(\r\n pb.vec3(1),\r\n this.profileTransmissionTint,\r\n pb.clamp(\r\n pb.add(\r\n pb.mul(this.profileBoundaryBleed, 0.35),\r\n pb.mul(\r\n pb.sub(\r\n 1,\r\n pb.clamp(\r\n pb.div(this.profileExtinctionScale, SSS._profileExtinctionEncodeMax),\r\n 0,\r\n 1\r\n )\r\n ),\r\n 0.28\r\n )\r\n ),\r\n 0,\r\n 0.8\r\n )\r\n )\r\n ),\r\n this.deepMix\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.baseSpecular = pb.max(pb.sub(this.baseColor.rgb, this.baseDiffuseColor), pb.vec3(0));\r\n this.$l.softenedSpecular = this.baseSpecular;\r\n this.$if(pb.notEqual(this.hasDiffuseTex, 0), function () {\r\n // The wide SSS pass contains diffuse lighting only. Preserve broad\r\n // highlights, but diffuse the pixel-scale normal detail that would\r\n // otherwise be added back unchanged with the specular component.\r\n this.$l.specularRadius = pb.clamp(\r\n pb.mul(this.profileSpecularRadius, pb.mix(0.9, 1.1, this.radiusResponse)),\r\n 0,\r\n pb.mul(SSS._profileSpecularRadiusEncodeMax, 1.1)\r\n );\r\n this.$l.specularTexel = pb.div(pb.vec2(this.specularRadius), this.targetSize.xy);\r\n this.$l.centerLogDepth = pb.log(pb.add(pb.mul(this.depth01, this.cameraNearFar.y), 1));\r\n this.$l.specularSum = this.baseSpecular;\r\n this.$l.specularWeight = pb.float(1);\r\n const sampleSpecularAt = (offsetX: number, offsetY: number) => {\r\n this.$l.specularNeighbor = this.sampleCompatibleSpecular(\r\n pb.add(this.uv, pb.mul(this.specularTexel, pb.vec2(offsetX, offsetY))),\r\n this.profileSlot,\r\n this.centerLogDepth\r\n );\r\n this.specularSum = pb.add(\r\n this.specularSum,\r\n pb.mul(this.specularNeighbor.rgb, this.specularNeighbor.a, 0.72)\r\n );\r\n this.specularWeight = pb.add(this.specularWeight, pb.mul(this.specularNeighbor.a, 0.72));\r\n };\r\n sampleSpecularAt(1, 0);\r\n sampleSpecularAt(-1, 0);\r\n sampleSpecularAt(0, 1);\r\n sampleSpecularAt(0, -1);\r\n this.$l.filteredSpecular = pb.div(this.specularSum, pb.max(this.specularWeight, 1));\r\n this.$l.specularSoftnessBase = pb.clamp(\r\n pb.mul(this.profileSpecularSoftness, this.profileStrength, this.sssStrength),\r\n 0,\r\n 0.95\r\n );\r\n this.$l.specularSoftness = pb.sub(\r\n 1,\r\n pb.mul(pb.sub(1, this.specularSoftnessBase), pb.sub(1, this.specularSoftnessBase))\r\n );\r\n this.softenedSpecular = pb.mix(\r\n this.baseSpecular,\r\n this.filteredSpecular,\r\n this.specularSoftness\r\n );\r\n });\r\n this.$l.scatterBlendBase = pb.clamp(\r\n pb.mul(\r\n this.profileStrength,\r\n this.sssStrength,\r\n pb.add(0.28, pb.add(pb.mul(this.radiusResponse, 0.42), pb.mul(this.widthStrength, 0.3))),\r\n pb.mix(0.72, 1, this.scatterMask)\r\n ),\r\n 0,\r\n 0.92\r\n );\r\n // Diffusion should visibly suppress high-frequency normal lighting.\r\n // A squared complement keeps low strengths controllable while making\r\n // a fully enabled skin profile approach the blurred diffuse result.\r\n this.$l.scatterBlend = pb.clamp(\r\n pb.sub(1, pb.mul(pb.sub(1, this.scatterBlendBase), pb.sub(1, this.scatterBlendBase))),\r\n 0,\r\n 0.97\r\n );\r\n this.$l.blurredLuma = pb.dot(this.blurred, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.profileBlurred = this.blurred;\r\n this.$l.blurredClamped = this.profileBlurred;\r\n this.$l.scattered = pb.mix(this.baseDiffuseColor, this.blurredClamped, this.scatterBlend);\r\n this.$l.multiScatterLift = pb.mul(\r\n pb.max(pb.sub(this.blurredClamped, this.baseDiffuseColor), pb.vec3(0)),\r\n this.scatterStrength,\r\n this.multiScatter,\r\n this.scatterMask,\r\n pb.add(\r\n 0.08,\r\n pb.mul(\r\n this.radiusResponse,\r\n pb.add(\r\n pb.add(0.09, pb.mul(this.materialScatterBoost, 0.08)),\r\n pb.add(\r\n pb.mul(this.presetSoftness, 0.06),\r\n pb.add(\r\n pb.mul(pb.sub(this.profileScatterScale, 1), 0.04),\r\n pb.mul(this.profileDiffusionSoftness, 0.03)\r\n )\r\n )\r\n )\r\n )\r\n )\r\n );\r\n this.$l.scatteredDiffuse = pb.add(this.scattered, this.multiScatterLift);\r\n this.$l.transmissionBudget = pb.mul(\r\n this.deepTint,\r\n this.scatterStrength,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.profileTransmissionScale,\r\n pb.add(\r\n pb.add(\r\n pb.add(0.12, pb.mul(this.radiusResponse, 0.2)),\r\n pb.mul(this.materialTransmissionSoftness, 0.2)\r\n ),\r\n pb.add(\r\n pb.mul(this.avgFalloff, 0.12),\r\n pb.add(\r\n pb.mul(this.profileSpread, 0.12),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.12),\r\n pb.mul(this.presetTransmissionBoost, 0.22)\r\n )\r\n )\r\n )\r\n ),\r\n pb.mix(0.82, 1.18, this.profileScatterScaleNorm)\r\n );\r\n this.$l.diffuseHeadroom = pb.mul(\r\n this.transmissionBudget,\r\n pb.add(\r\n pb.add(1.65, pb.mul(this.materialTransmissionResponse, 0.9)),\r\n pb.add(\r\n pb.add(pb.mul(this.materialTransmissionSoftness, 0.55), pb.mul(this.profileSpread, 0.2)),\r\n pb.mul(this.profileTransmissionScale, 0.22)\r\n )\r\n )\r\n );\r\n this.result = pb.add(this.softenedSpecular, this.scatteredDiffuse);\r\n this.$if(pb.greaterThan(this.transmissionStrength, 0), function () {\r\n this.$l.viewDirVS = pb.normalize(pb.neg(this.viewPos));\r\n this.$l.viewDirWS = pb.normalize(pb.mul(this.invViewMatrix, pb.vec4(this.viewDirVS, 0)).xyz);\r\n this.$l.rim = pb.pow(\r\n pb.clamp(pb.sub(1, pb.abs(pb.dot(this.normalWS, this.viewDirWS))), 0, 1),\r\n pb.max(this.transmissionPower, 0.1)\r\n );\r\n this.$l.transmissionShadowSoftness = pb.clamp(\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.profileDiffusionSoftness, 0.18)),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.18),\r\n pb.add(pb.mul(this.screenThinness, 0.12), pb.mul(this.profileBoundaryBleed, 0.08))\r\n )\r\n ),\r\n 0,\r\n 0.6\r\n );\r\n this.$l.transmissionShadowFloor = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.06), pb.mul(this.edgeThinBoost, 0.48)),\r\n pb.add(\r\n pb.mul(this.curvatureThinBoost, 0.32),\r\n pb.add(\r\n pb.mul(this.profileBoundaryBleed, 0.06),\r\n pb.mul(this.profileTransmissionScale, 0.08)\r\n )\r\n )\r\n ),\r\n 0,\r\n 0.34\r\n );\r\n this.transmissionShadow = pb.clamp(\r\n pb.max(\r\n pb.mix(\r\n this.transmissionShadowRaw,\r\n pb.pow(pb.clamp(this.transmissionShadowRaw, 1e-4, 1), 0.7),\r\n this.transmissionShadowSoftness\r\n ),\r\n this.transmissionShadowFloor\r\n ),\r\n 0.04,\r\n 1\r\n );\r\n this.transmissionLightAttenuation = pb.mul(\r\n this.mainLightAttenuation,\r\n this.transmissionShadow\r\n );\r\n this.debugTransmissionShadow = this.transmissionShadow;\r\n this.debugProfileBoundary = pb.clamp(\r\n pb.vec3(\r\n this.profileBoundaryBleed,\r\n this.transmissionShadowSoftness,\r\n this.transmissionShadowFloor\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.debugProfileTransmission = pb.clamp(\r\n pb.vec3(\r\n pb.div(this.profileTransmissionScale, 1.35),\r\n this.materialTransmissionResponse,\r\n this.transmissionShadow\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n // Keep warm thin-shell lighting on the back-facing side of the surface.\r\n this.$l.backLit = pb.mul(this.backLightGate, this.transmissionLightAttenuation);\r\n this.$l.thicknessBackScatter = pb.clamp(\r\n pb.mul(this.backLit, pb.add(0.82, pb.mul(this.rim, 0.18))),\r\n 0,\r\n 1\r\n );\r\n this.$l.thinPotential = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.78), this.edgeThinBoost),\r\n pb.add(\r\n this.curvatureThinBoost,\r\n pb.mul(\r\n pb.sqrt(pb.max(pb.mul(this.depthThinness, this.curvatureThinness), 0)),\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.profileSpread, 0.06)),\r\n pb.mul(pb.sub(this.profileDistribution, 0.5), 0.06)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.transmissionFocus = pb.clamp(\r\n pb.mul(\r\n pb.add(pb.mul(this.materialThicknessField, 0.72), pb.mul(this.thinPotential, 0.38)),\r\n pb.add(pb.add(0.22, pb.mul(this.thicknessBackScatter, 0.72)), pb.mul(this.backLit, 0.08))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.thinRegion = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.86), pb.mul(this.transmissionFocus, 0.74)),\r\n pb.add(\r\n pb.add(pb.mul(this.edgeThinBoost, 0.9), pb.mul(this.curvatureThinBoost, 0.5)),\r\n pb.add(pb.mul(this.backLit, 0.1), pb.mul(this.profileSpread, 0.05))\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.debugBlueSeed = pb.clamp(\r\n pb.mul(\r\n this.materialThicknessField,\r\n pb.max(\r\n pb.mul(this.thinRegion, pb.add(0.72, pb.mul(this.backLit, 0.18))),\r\n pb.mul(this.curvatureThinness, pb.add(0.34, pb.mul(this.materialThicknessField, 0.22)))\r\n ),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(pb.add(0.16, pb.mul(this.backLit, 0.26)), pb.mul(this.edgeThinBoost, 0.85)),\r\n pb.add(\r\n pb.mul(this.curvatureThinBoost, 0.4),\r\n pb.mul(pb.sub(1, this.depthThinness), 0.18)\r\n )\r\n ),\r\n 0,\r\n 1\r\n ),\r\n pb.add(0.72, pb.mul(this.profileSpread, 0.08))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.debugBlueDisplay = pb.pow(\r\n pb.clamp(pb.mul(pb.clamp(pb.sub(this.debugBlueSeed, 0.015), 0, 1), 2.15), 0, 1),\r\n 0.72\r\n );\r\n this.$l.debugGreenDisplay = pb.clamp(\r\n pb.mul(\r\n this.curvatureThinness,\r\n pb.sub(1, pb.mul(this.depthThinness, 0.78)),\r\n pb.sub(1, pb.mul(this.debugBlueDisplay, 0.26))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.debugThinnessLayers = pb.vec3(\r\n pb.clamp(\r\n pb.mul(\r\n pb.clamp(pb.sub(this.depthThinness, pb.mul(this.curvatureThinness, 0.16)), 0, 1),\r\n pb.sub(1, pb.mul(this.debugBlueDisplay, 0.98))\r\n ),\r\n 0,\r\n 1\r\n ),\r\n this.debugGreenDisplay,\r\n this.debugBlueDisplay\r\n );\r\n this.$l.sunColor = pb.min(\r\n pb.mul(\r\n this.sunColorIntensity.rgb,\r\n this.sunColorIntensity.a,\r\n this.transmissionLightAttenuation\r\n ),\r\n pb.vec3(4)\r\n );\r\n this.$l.capturedTransmission = pb.mul(\r\n pb.mix(\r\n this.baseTransmissionColor,\r\n pb.mul(this.baseTransmissionColor, this.deepTint, this.profileTransmissionTint),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.16, pb.mul(this.avgFalloff, 0.12)),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.1),\r\n pb.mul(this.presetTransmissionBoost, 0.18)\r\n )\r\n ),\r\n 0,\r\n 0.45\r\n )\r\n ),\r\n pb.mix(1.08, 0.64, this.extinctionNorm),\r\n this.materialTransmissionResponse,\r\n pb.sub(1, pb.mul(this.specMask, 0.18))\r\n );\r\n this.$l.capturedTransmissionStrength = this.max3(this.capturedTransmission);\r\n this.$l.profileTransmission = pb.mul(\r\n this.capturedTransmission,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(0.88, pb.mul(this.radiusResponse, 0.18)),\r\n pb.add(\r\n pb.add(pb.mul(this.profileSpread, 0.08), pb.mul(this.thinRegion, 0.12)),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.12),\r\n pb.mul(this.presetTransmissionBoost, 0.18)\r\n )\r\n )\r\n ),\r\n pb.add(\r\n pb.add(0.26, pb.mul(this.thicknessBackScatter, 0.48)),\r\n pb.add(pb.mul(this.materialThicknessField, 0.22), pb.mul(this.thinRegion, 0.08))\r\n )\r\n );\r\n this.$l.backScatterCore = pb.mul(\r\n this.deepTint,\r\n pb.max(this.blurredLuma, pb.mul(this.baseDiffuseLuma, 0.3)),\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(\r\n pb.add(\r\n pb.add(0.12, pb.mul(this.thicknessBackScatter, 0.34)),\r\n pb.add(pb.mul(this.materialThicknessField, 0.22), pb.mul(this.thinRegion, 0.12))\r\n ),\r\n pb.mul(this.materialTransmissionSoftness, 0.14)\r\n ),\r\n pb.add(pb.mul(this.radiusResponse, 0.08), pb.mul(this.presetTransmissionBoost, 0.12))\r\n ),\r\n pb.add(\r\n pb.add(0.26, pb.mul(this.thicknessBackScatter, 0.52)),\r\n pb.add(pb.mul(this.materialThicknessField, 0.22), pb.mul(this.thinRegion, 0.12))\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.35))\r\n );\r\n this.$l.rimFallback = pb.mul(\r\n this.rim,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n this.radiusResponse,\r\n pb.add(\r\n pb.add(\r\n pb.add(0.028, pb.mul(this.avgFalloff, 0.04)),\r\n pb.mul(this.materialTransmissionSoftness, 0.03)\r\n ),\r\n pb.add(\r\n pb.mul(this.profileSpread, 0.03),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.04),\r\n pb.mul(this.presetTransmissionBoost, 0.06)\r\n )\r\n )\r\n )\r\n );\r\n this.$l.warmTransmissionTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n pb.mix(this.deepTint, this.profileTransmissionTint, 0.35),\r\n pb.mul(this.profileTransmissionTint, pb.vec3(1.0, 0.36, 0.24)),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.18, pb.mul(this.presetTransmissionBoost, 0.26)),\r\n pb.add(\r\n pb.mul(this.materialThicknessField, 0.24),\r\n pb.mul(this.thicknessBackScatter, 0.22)\r\n )\r\n ),\r\n 0,\r\n 0.72\r\n )\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.warmTransmissionStrength = pb.clamp(\r\n pb.mul(\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.materialThicknessField, 0.2)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.26),\r\n pb.mul(this.presetTransmissionBoost, 0.12)\r\n )\r\n ),\r\n pb.mix(1.06, 0.72, this.extinctionNorm)\r\n ),\r\n 0.06,\r\n 0.48\r\n );\r\n this.$l.broadTransmission = pb.mul(\r\n this.warmTransmissionTint,\r\n this.sunColor,\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n pb.add(\r\n pb.add(0.1, pb.mul(this.thicknessBackScatter, 0.42)),\r\n pb.add(pb.mul(this.materialTransmissionSoftness, 0.12), pb.mul(this.thinRegion, 0.08))\r\n ),\r\n pb.add(\r\n pb.add(0.24, pb.mul(this.materialThicknessField, 0.26)),\r\n pb.mul(this.profileSpread, 0.08)\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.3))\r\n );\r\n this.$l.subdermalTransmission = pb.mul(\r\n this.warmTransmissionTint,\r\n pb.max(this.baseDiffuseLuma, pb.mul(this.blurredLuma, 0.8)),\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n this.warmTransmissionStrength,\r\n pb.add(\r\n pb.add(0.18, pb.mul(this.thicknessBackScatter, 0.38)),\r\n pb.add(pb.mul(this.thinRegion, 0.12), pb.mul(this.materialTransmissionSoftness, 0.08))\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.28))\r\n );\r\n this.$l.thin = pb.mul(\r\n this.thicknessBackScatter,\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n pb.add(\r\n this.thicknessBackScatter,\r\n pb.add(\r\n pb.mul(this.thinRegion, pb.add(0.18, pb.mul(this.presetTransmissionBoost, 0.16))),\r\n pb.mul(\r\n this.widthStrength,\r\n pb.add(\r\n pb.add(0.14, pb.mul(this.materialScatterBoost, 0.08)),\r\n pb.mul(this.presetTransmissionBoost, 0.08)\r\n )\r\n ),\r\n pb.mul(\r\n this.profileSpread,\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.materialScatterBoost, 0.06)),\r\n pb.mul(this.presetTransmissionBoost, 0.08)\r\n )\r\n )\r\n )\r\n ),\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(0.16, pb.mul(this.avgFalloff, 0.34)),\r\n pb.add(\r\n pb.add(pb.mul(this.profileSpread, 0.18), pb.mul(this.thinRegion, 0.22)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.12), this.presetTransmissionBoost)\r\n )\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.42))\r\n );\r\n this.$l.transmissionColor = pb.add(\r\n pb.add(\r\n pb.add(pb.add(this.profileTransmission, this.backScatterCore), this.broadTransmission),\r\n this.subdermalTransmission\r\n ),\r\n pb.mul(\r\n pb.add(\r\n pb.mul(this.warmTransmissionTint, this.sunColor, this.thin),\r\n pb.mul(this.skinTint, this.rimFallback)\r\n ),\r\n this.$choice(\r\n pb.equal(this.hasTransmissionTex, 0),\r\n 1,\r\n pb.clamp(\r\n pb.add(\r\n 0.08,\r\n pb.mul(\r\n pb.clamp(pb.sub(1, pb.mul(this.capturedTransmissionStrength, 2.4)), 0, 1),\r\n 0.22\r\n )\r\n ),\r\n 0.08,\r\n 0.3\r\n )\r\n )\r\n )\r\n );\r\n this.$l.transmissionHeadroom = pb.add(\r\n this.diffuseHeadroom,\r\n pb.mul(\r\n this.warmTransmissionTint,\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n pb.add(\r\n pb.add(0.04, pb.mul(this.thicknessBackScatter, 0.12)),\r\n pb.mul(this.thinRegion, 0.06)\r\n )\r\n )\r\n );\r\n this.$l.transmittedDiffuse = pb.min(this.transmissionColor, this.transmissionHeadroom);\r\n this.$l.transmittedDiffuseLuma = pb.dot(\r\n this.transmittedDiffuse,\r\n pb.vec3(0.2126, 0.7152, 0.0722)\r\n );\r\n this.$l.visibleTransmissionMask = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.72), pb.mul(this.thinRegion, 0.34)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.28),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.08),\r\n pb.add(\r\n pb.mul(this.profileTransmissionScale, 0.12),\r\n pb.mul(this.profileDiffusionSoftness, 0.06)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.visibleTransmissionChroma = pb.clamp(\r\n pb.add(\r\n pb.add(0.66, pb.mul(this.visibleTransmissionMask, 0.32)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.24),\r\n pb.mul(this.presetTransmissionBoost, 0.14)\r\n )\r\n ),\r\n 0.52,\r\n 1\r\n );\r\n this.$l.visibleTransmissionTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n this.warmTransmissionTint,\r\n this.profileTransmissionTint,\r\n pb.clamp(\r\n pb.add(\r\n pb.mul(this.visibleTransmissionMask, 0.24),\r\n pb.mul(this.thicknessBackScatter, 0.2)\r\n ),\r\n 0,\r\n 0.6\r\n )\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.visibleTransmissionWarm = pb.mix(\r\n this.transmittedDiffuse,\r\n pb.mul(this.visibleTransmissionTint, this.transmittedDiffuseLuma),\r\n this.visibleTransmissionChroma\r\n );\r\n this.$l.visibleTransmissionGain = pb.clamp(\r\n pb.add(\r\n pb.add(0.78, pb.mul(this.visibleTransmissionMask, 0.72)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.48),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.18),\r\n pb.mul(this.profileTransmissionScale, 0.24)\r\n )\r\n )\r\n ),\r\n 0.7,\r\n 2.4\r\n );\r\n this.$l.visibleTransmissionHeadroom = pb.add(\r\n pb.mul(\r\n this.transmissionHeadroom,\r\n pb.add(\r\n pb.add(2.15, pb.mul(this.visibleTransmissionMask, 1.1)),\r\n pb.mul(this.thicknessBackScatter, 0.72)\r\n )\r\n ),\r\n pb.mul(\r\n this.visibleTransmissionTint,\r\n this.visibleTransmissionMask,\r\n this.transmittedDiffuseLuma,\r\n pb.add(\r\n pb.add(0.12, pb.mul(this.thicknessBackScatter, 0.18)),\r\n pb.mul(this.materialThicknessField, 0.14)\r\n )\r\n )\r\n );\r\n this.$l.visibleTransmission = pb.min(\r\n pb.mul(\r\n this.visibleTransmissionWarm,\r\n this.visibleTransmissionGain,\r\n this.transmissionShadow,\r\n this.backLightGate\r\n ),\r\n this.visibleTransmissionHeadroom\r\n );\r\n this.debugThinLighting = this.visibleTransmission;\r\n this.result = pb.add(this.result, this.visibleTransmission);\r\n });\r\n }\r\n );\r\n this.$if(pb.notEqual(this.debugView, 0), function () {\r\n this.$if(pb.lessThan(this.depth01, 1), function () {\r\n this.$if(pb.equal(this.debugView, 1), function () {\r\n this.result = this.$choice(this.profileActive, pb.vec3(this.profileStrength), pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 2), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.vec3(this.scatterSoftnessAuthor),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 3), function () {\r\n this.$l.debugSlot = this.readProfileSlot(this.param);\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.clamp(\r\n pb.div(this.readProfileRadius(this.debugSlot), pb.vec3(8)),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n ),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 4), function () {\r\n this.$l.debugSlot = this.readProfileSlot(this.param);\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.clamp(this.readProfileFalloff(this.debugSlot), pb.vec3(0), pb.vec3(1)),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 5), function () {\r\n this.result = this.$choice(this.profileActive, this.debugProfileEnergy, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 6), function () {\r\n this.result = this.$choice(this.profileActive, this.debugProfileTransmission, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 7), function () {\r\n this.result = this.$choice(this.profileActive, this.debugProfileBoundary, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 8), function () {\r\n this.result = this.baseDiffuseColor;\r\n })\r\n .$elseif(pb.equal(this.debugView, 9), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.textureSampleLevel(this.blurTex, this.uv, 0).rgb,\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 10), function () {\r\n this.result = this.$choice(this.profileActive, this.debugThinnessLayers, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 11), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.vec3(\r\n this.debugTransmissionMask,\r\n this.debugTransmissionMask,\r\n this.debugTransmissionMask\r\n ),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 12), function () {\r\n this.result = this.$choice(this.profileActive, this.debugThinLighting, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 13), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.vec3(\r\n this.debugTransmissionShadow,\r\n this.debugTransmissionShadow,\r\n this.debugTransmissionShadow\r\n ),\r\n pb.vec3(0)\r\n );\r\n });\r\n }).$else(function () {\r\n this.result = pb.vec3(0);\r\n });\r\n });\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.result, this.baseColor.a);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.result), this.baseColor.a);\r\n });\r\n });\r\n }\r\n })!;\r\n program.name = '@SSS_Combine';\r\n return program;\r\n }\r\n\r\n private createSampleOffsets(kernelRadius: number) {\r\n const sampleCount = Math.max(1, Math.ceil(kernelRadius / 2));\r\n const data = new Float32Array(4 * (sampleCount + 1));\r\n for (let i = 1; i <= sampleCount; i++) {\r\n const tap0 = i * 2 - 1;\r\n const tap1 = Math.min(i * 2, kernelRadius);\r\n data[i * 4 + 0] = tap1 !== tap0 ? (tap0 + tap1) * 0.5 : tap0;\r\n }\r\n return data;\r\n }\r\n\r\n private ensureProfileLUT(ctx: DrawContext): Texture2D {\r\n const device = ctx.device;\r\n if (\r\n !SSS._profileLUT ||\r\n SSS._profileLUT.device !== device ||\r\n SSS._profileLUT.width !== SSS._profileLUTWidth ||\r\n SSS._profileLUT.height !== SSS._profileLUTHeight\r\n ) {\r\n SSS._profileLUT?.dispose();\r\n SSS._profileLUT = device.createTexture2D('rgba8unorm', SSS._profileLUTWidth, SSS._profileLUTHeight, {\r\n mipmapping: false\r\n })!;\r\n SSS._profileLUTVersion = -1;\r\n }\r\n if (SSS._profileLUTVersion !== SubsurfaceProfile.version) {\r\n const data = new Uint8Array(SSS._profileLUTWidth * SSS._profileLUTHeight * 4);\r\n const encodeUnit = (value: number) => Math.max(0, Math.min(255, Math.round(value * 255)));\r\n const encodeScaled = (value: number, maxValue: number) =>\r\n Math.max(0, Math.min(255, Math.round((Math.max(0, Math.min(maxValue, value)) / maxValue) * 255)));\r\n for (let slot = 1; slot < SSS._profileLUTWidth; slot++) {\r\n const profile = SubsurfaceProfile.getProfileBySlot(slot);\r\n if (!profile) {\r\n continue;\r\n }\r\n const presetTintBias = profile.getDerivedTintBias();\r\n const presetResponse = profile.getDerivedTransmissionResponse();\r\n const radiusOffset = slot * 4;\r\n data[radiusOffset + 0] = encodeScaled(profile.scatterRadius.x, SSS._profileRadiusEncodeMax);\r\n data[radiusOffset + 1] = encodeScaled(profile.scatterRadius.y, SSS._profileRadiusEncodeMax);\r\n data[radiusOffset + 2] = encodeScaled(profile.scatterRadius.z, SSS._profileRadiusEncodeMax);\r\n data[radiusOffset + 3] = 255;\r\n const falloffOffset = (SSS._profileLUTWidth + slot) * 4;\r\n data[falloffOffset + 0] = encodeUnit(profile.falloffColor.x);\r\n data[falloffOffset + 1] = encodeUnit(profile.falloffColor.y);\r\n data[falloffOffset + 2] = encodeUnit(profile.falloffColor.z);\r\n data[falloffOffset + 3] = 255;\r\n const tintBiasOffset = (SSS._profileLUTWidth * 2 + slot) * 4;\r\n data[tintBiasOffset + 0] = encodeUnit(presetTintBias[0]);\r\n data[tintBiasOffset + 1] = encodeUnit(presetTintBias[1]);\r\n data[tintBiasOffset + 2] = encodeUnit(presetTintBias[2]);\r\n data[tintBiasOffset + 3] = 255;\r\n const responseOffset = (SSS._profileLUTWidth * 3 + slot) * 4;\r\n data[responseOffset + 0] = encodeUnit(presetResponse[0]);\r\n data[responseOffset + 1] = encodeUnit(presetResponse[1]);\r\n data[responseOffset + 2] = encodeUnit((presetResponse[2] + 0.25) / 0.75);\r\n data[responseOffset + 3] = encodeUnit((presetResponse[3] + 0.25) / 0.75);\r\n const settingsAOffset = (SSS._profileLUTWidth * 4 + slot) * 4;\r\n data[settingsAOffset + 0] = encodeScaled(profile.worldUnitScale, SSS._profileWorldScaleEncodeMax);\r\n data[settingsAOffset + 1] = encodeUnit(profile.boundaryColorBleed);\r\n data[settingsAOffset + 2] = encodeScaled(profile.normalScale, SSS._profileNormalScaleEncodeMax);\r\n data[settingsAOffset + 3] = encodeUnit(profile.scatteringDistribution);\r\n const tintOffset = (SSS._profileLUTWidth * 5 + slot) * 4;\r\n data[tintOffset + 0] = encodeUnit(profile.transmissionTintColor.x);\r\n data[tintOffset + 1] = encodeUnit(profile.transmissionTintColor.y);\r\n data[tintOffset + 2] = encodeUnit(profile.transmissionTintColor.z);\r\n data[tintOffset + 3] = 255;\r\n const settingsBOffset = (SSS._profileLUTWidth * 6 + slot) * 4;\r\n data[settingsBOffset + 0] = encodeScaled(profile.extinctionScale, SSS._profileExtinctionEncodeMax);\r\n data[settingsBOffset + 1] = encodeScaled(profile.scale, SSS._profileWorldScaleEncodeMax);\r\n data[settingsBOffset + 2] = encodeUnit(profile.strength / 2);\r\n data[settingsBOffset + 3] = 255;\r\n const specularSettingsOffset = (SSS._profileLUTWidth * 7 + slot) * 4;\r\n data[specularSettingsOffset + 0] = encodeUnit(profile.specularDetailSoftness);\r\n data[specularSettingsOffset + 1] = encodeScaled(\r\n profile.specularDetailRadius,\r\n SSS._profileSpecularRadiusEncodeMax\r\n );\r\n data[specularSettingsOffset + 2] = 0;\r\n data[specularSettingsOffset + 3] = 255;\r\n }\r\n SSS._profileLUT!.update(data, 0, 0, SSS._profileLUTWidth, SSS._profileLUTHeight);\r\n SSS._profileLUTVersion = SubsurfaceProfile.version;\r\n }\r\n return SSS._profileLUT!;\r\n }\r\n}\r\n"],"names":["SSS","AbstractPostEffect","_profileLUTWidth","_profileLUTHeight","_profileRadiusEncodeMax","_profileWorldScaleEncodeMax","_profileNormalScaleEncodeMax","_profileExtinctionEncodeMax","_profileSpecularRadiusEncodeMax","_debugViewMap","none","scatter_mask","scatter_softness","scatter_radius","scatter_falloff","profile_energy","profile_transmission","profile_boundary","diffuse","blur","screen_thinness","thin_transmission_mask","thin_lighting","transmission_shadow","_blurPrograms","_combinePrograms","_profileLUT","_profileLUTVersion","_blurBindGroups","_combineBindGroups","_layer","PostEffectLayer","opaque","profileRowV","row","getCombineShadowLight","ctx","shadowMapInfo","mainDirectionalLight","sunLight","primaryDirectionalLight","has","useCombineShadowMask","shadowLight","screenSpaceShadowMask","shadowMapParams","get","shadowMap","impl","maskOrdinal","getCombineProgramKey","shaderHash","requireLinearDepthTexture","requireDepthAttachment","requireSceneNormalTexture","requireShadowMask","apply","inputColorTexture","sceneDepthTexture","srgbOutput","device","outputFramebuffer","getFramebuffer","sssSettings","camera","sssResolvedSettings","SSSProfileTexture","SSSParamTexture","sssStrength","sssBlurScale","sssTransmissionStrength","passThrough","kernelRadius","Math","max","blurKernelSize","blurEnabled","profileLUT","ensureProfileLUT","inputScatterTexture","SSSDiffuseTexture","blurWidth","halfRes","ceil","width","blurHeight","height","blurredTexture","blurFramebufferH","blurFramebufferV","pool","fetchTemporalFramebuffer","format","setFramebuffer","getColorAttachments","combine","releaseFrameBuffer","targetWidth","targetHeight","horizontal","sssNormalTexture","SceneNormalTexture","hasNormalTexture","key","program","createBlurProgram","bindGroup","createBindGroup","bindGroupLayouts","setTexture","fetchSampler","setValue","Vector2","getNearPlane","getFarPlane","Vector4","createSampleOffsets","blurStdDev","blurDepthCutoff","normalCutoff","needFlip","setProgram","setBindGroup","drawFullscreenQuad","sssRoughnessTexture","SceneRoughnessTexture","hasRoughnessTexture","programKey","createCombineProgram","mainTransmissionLight","primaryTransmissionLight","sunDir","directionAndCutoff","xyz","scaleBy","x","y","z","sunColorIntensity","ShaderHelper","getPreExposedColorIntensity","w","mainLightPosRange","positionAndRange","mainLightDirCutoff","mainLightType","isDirectionLight","LIGHT_TYPE_DIRECTIONAL","isPointLight","LIGHT_TYPE_POINT","isSpotLight","LIGHT_TYPE_SPOT","LIGHT_TYPE_RECT","SSSTransmissionTexture","Matrix4x4","invert","getProjectionMatrix","worldMatrix","Float32Array","sssTransmissionPower","sssMultiScatter","sssDebugView","ordinal","layer","channel","shadowMaskTexture","getDummyShadowMask","cameraPos","getWorldPosition","position","params","shadowDebugCascades","framestamp","frameInfo","frameCounter","envLightStrength","getEnvLightLuminance","envLightSpecularStrength","env","light","specularStrength","shadowStrength","shadow","shadowCascades","numShadowCascades","diffuseAndIntensity","extraParams","implParams","getParams","cascadeDistances","depthBiasValues","shadowCameraParams","cameraParams","depthBiasScales","shadowMatrices","shadowMapSampler","getDefaultRenderState","DEPTH_COMPARE_FARTHER","sampleCount","buildRenderProgram","vertex","pb","flip","int","uniform","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","vec4","DEPTH_FARTHEST","add","mul","xy","$if","notEqual","neg","fragment","colorTex","tex2D","profileTex","paramTex","profileLUTTex","normalTex","depthTex","cameraNearFar","targetSize","sampleOffsets","blurScale","float","depthCutoff","hasNormalTex","outColor","func","vec3","$return","value","$l","div","slot","textureSampleLevel","rgb","raw","safeRadius","radius","safeDistribution","clamp","distribution","safeScatterScale","scatterScale","falloffShape","mix","falloff","distributionShape","scatterShape","diffusionDistance","dr","abs","distance","exp","safeStrengthScale","strengthScale","burleyWeight","burleyKernel1","relativeRadius","forwardScatter","forwardWeight","sub","equal","n","normalize","sampleLinearDepth","floor","param","r","centerColor","centerProfile","centerParam","centerActive","greaterThan","a","centerStrength","max3","centerSlot","readProfileSlot","centerDepth01","readDepth01","or","lessThanEqual","not","greaterThanEqual","$else","widthStrength","g","centerDepth","centerLogDepth","log","profileSettingsA","readProfileSettingsA","profileSettingsB","readProfileSettingsB","profileWorldScale","profileBoundaryBleed","profileNormalScale","profileDistribution","profileScatterScale","profileStrengthScale","profileWorldScaleNorm","profileScatterScaleNorm","profileStrengthNorm","depthThreshold","normalDetailSoftening","normalThreshold","centerNormal","decodeNormal","profileRadius","readProfileRadius","profileFalloff","readProfileFalloff","maxProfileRadius","profileSpread","profileDiffusionSoftness","centerKernel","computeKernelWeight","centerWeight","centerSample","sampleColor","colorSum","weightSum","$for","data","at","i","axisOffset","offset","kernelWeight","sampleUV","$choice","side","sampleProfile","sampleParam","sampleStrength","sampleActive","sampleWidthStrength","sampleWeight","and","depth01Sample","lessThan","sampleDepth","sampleLogDepth","sampleNormal","dot","name","shadowEnabled","useShadowMask","pcssEnabled","cameraStruct","defineStruct","lightStruct","shadowTex","isTextureCube","isDepth","texCubeShadow","texCube","isTexture2D","tex2DShadow","tex2DArrayShadow","tex2DArray","getDeviceCaps","textureCaps","getTextureFormatInfo","filterable","sampleType","Z_UniformShadowMap","Z_UniformShadowMask","shadowMaskLayer","shadowMaskChannel","diffuseTex","blurTex","transmissionTex","roughnessTex","invProjMatrix","mat4","invViewMatrix","transmissionStrength","transmissionPower","multiScatter","hasDiffuseTex","hasTransmissionTex","hasRoughnessTex","debugView","srgbOut","sampleSlot","sampleDepth01","profileSlot","sampleScene","sampleDiffuse","pixelStep","radiusScale","depthAccum","normalAccum","sampleAt","offsetX","offsetY","depth01","normalWS","depthMean","normalMean","depthThin","normalThin","combinedThin","viewDepth","linearDepth","nonLinearDepth","linearDepthToNonLinear","clipPos","deviceDepthToClipZ","viewPos","lightType","fallbackDir","posRange","worldPos","dist","spotFactor","dirCutoff","smoothStep","splitDistances","comparison","cascadeFlags","split","type","shadowVertex","cascade","calculateShadowSpaceVertex","$break","computeShadowCSM","NoL","shadowDistance","computeShadow","baseColor","baseDiffuseColor","baseTransmissionColor","debugThinness","debugThinnessLayers","debugTransmissionMask","debugThinLighting","debugProfileEnergy","debugProfileTransmission","debugProfileBoundary","debugTransmissionShadow","profile","profileActive","scatterSoftnessAuthor","roughnessInfo","profileStrength","automaticTransmission","materialTransmissionMask","result","transmissionShadowRaw","transmissionShadow","shadowNormalWS","shadowViewPos","reconstructViewPos","shadowWorldPos","shadowSunDirWS","calculateMainLightDirection","calculateTransmissionShadow","textureArraySampleLevel","profileTransmissionTint","readProfileTransmissionTint","profileSpecularSettings","readProfileSpecularSettings","profileExtinctionScale","profileSpecularSoftness","profileSpecularRadius","extinctionNorm","radiusTint","avgFalloff","profileEnergyScale","profileTransmissionScale","profileTintBase","pow","presetTintBias","readProfileTintBias","presetResponse","readProfilePresetResponse","presetFrontScatter","presetSoftness","presetTransmissionBoost","presetTint","tint","baseLuma","shadowMask","radiusResponse","sunDirWS","mainLightAttenuation","calculateMainLightAttenuation","frontLit","transmissionLightAttenuation","thinnessComponents","estimateScreenThinnessComponents","depthThinness","curvatureThinness","screenThinness","backLightFacing","backLightGate","automaticThinMask","wrappedFront","terminatorWrap","surfaceScatterMask","materialScatterBoost","materialTransmissionResponse","materialTransmissionSoftness","materialThicknessField","edgeThinBoost","curvatureThinBoost","scatterMask","scatterStrength","blurred","roughness","specMask","specularFallback","baseDiffuseSafe","baseDiffuseLuma","epidermalMix","deepMix","skinTint","deepTint","baseSpecular","softenedSpecular","specularRadius","specularTexel","specularSum","specularWeight","sampleSpecularAt","specularNeighbor","sampleCompatibleSpecular","filteredSpecular","specularSoftnessBase","specularSoftness","scatterBlendBase","scatterBlend","blurredLuma","profileBlurred","blurredClamped","scattered","multiScatterLift","scatteredDiffuse","transmissionBudget","diffuseHeadroom","viewDirVS","viewDirWS","rim","transmissionShadowSoftness","transmissionShadowFloor","backLit","thicknessBackScatter","thinPotential","sqrt","transmissionFocus","thinRegion","debugBlueSeed","debugBlueDisplay","debugGreenDisplay","sunColor","min","capturedTransmission","capturedTransmissionStrength","profileTransmission","backScatterCore","rimFallback","warmTransmissionTint","warmTransmissionStrength","broadTransmission","subdermalTransmission","thin","transmissionColor","transmissionHeadroom","transmittedDiffuse","transmittedDiffuseLuma","visibleTransmissionMask","visibleTransmissionChroma","visibleTransmissionTint","visibleTransmissionWarm","visibleTransmissionGain","visibleTransmissionHeadroom","visibleTransmission","$elseif","debugSlot","linearToGamma","tap0","tap1","dispose","createTexture2D","mipmapping","SubsurfaceProfile","version","Uint8Array","encodeUnit","round","encodeScaled","maxValue","getProfileBySlot","getDerivedTintBias","getDerivedTransmissionResponse","radiusOffset","scatterRadius","falloffOffset","falloffColor","tintBiasOffset","responseOffset","settingsAOffset","worldUnitScale","boundaryColorBleed","normalScale","scatteringDistribution","tintOffset","transmissionTintColor","settingsBOffset","extinctionScale","scale","strength","specularSettingsOffset","specularDetailSoftness","specularDetailRadius","update"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sss.js","sources":["../../src/posteffect/sss.ts"],"sourcesContent":["import {\r\n DEPTH_COMPARE_FARTHER,\r\n DEPTH_FARTHEST,\r\n Matrix4x4,\r\n Vector2,\r\n Vector4,\r\n type Nullable\r\n} from '@zephyr3d/base';\r\nimport type { BindGroup, FrameBuffer, GPUProgram, Texture2D } from '@zephyr3d/device';\r\nimport type { SSSResolvedSettings } from '../camera';\r\nimport type { DrawContext } from '../render';\r\nimport { ShaderHelper } from '../material';\r\nimport { SubsurfaceProfile } from '../material/subsurfaceprofile';\r\nimport type { PunctualLight } from '../scene';\r\nimport { LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT } from '../values';\r\nimport { linearToGamma } from '../shaders/misc';\r\nimport { fetchSampler } from '../utility/misc';\r\nimport { AbstractPostEffect, PostEffectLayer } from './posteffect';\r\n\r\n/**\r\n * Screen-space subsurface scattering post effect.\r\n *\r\n * @remarks\r\n * Uses a depth/normal-aware separable blur driven by per-pixel SSS profiles\r\n * written by skin materials during the main shading pass.\r\n *\r\n * @internal\r\n */\r\nexport class SSS extends AbstractPostEffect {\r\n private static readonly _profileLUTWidth = 256;\r\n private static readonly _profileLUTHeight = 8;\r\n private static readonly _profileRadiusEncodeMax = 8;\r\n private static readonly _profileWorldScaleEncodeMax = 4;\r\n private static readonly _profileNormalScaleEncodeMax = 2;\r\n private static readonly _profileExtinctionEncodeMax = 4;\r\n private static readonly _profileSpecularRadiusEncodeMax = 4;\r\n private static readonly _debugViewMap: Record<string, number> = {\r\n none: 0,\r\n scatter_mask: 1,\r\n scatter_softness: 2,\r\n scatter_radius: 3,\r\n scatter_falloff: 4,\r\n profile_energy: 5,\r\n profile_transmission: 6,\r\n profile_boundary: 7,\r\n diffuse: 8,\r\n blur: 9,\r\n screen_thinness: 10,\r\n thin_transmission_mask: 11,\r\n thin_lighting: 12,\r\n transmission_shadow: 13\r\n };\r\n private static _blurPrograms: Record<string, GPUProgram> = {};\r\n private static _combinePrograms: Record<string, GPUProgram> = {};\r\n private static _profileLUT: Nullable<Texture2D> = null;\r\n private static _profileLUTVersion = -1;\r\n private _blurBindGroups: Record<string, BindGroup>;\r\n private _combineBindGroups: Record<string, BindGroup>;\r\n\r\n constructor() {\r\n super();\r\n this._layer = PostEffectLayer.opaque;\r\n this._blurBindGroups = {};\r\n this._combineBindGroups = {};\r\n }\r\n\r\n private static profileRowV(row: number) {\r\n return (row + 0.5) / SSS._profileLUTHeight;\r\n }\r\n\r\n private getCombineShadowLight(ctx: DrawContext): Nullable<PunctualLight> {\r\n const shadowMapInfo = ctx.shadowMapInfo;\r\n if (!shadowMapInfo) {\r\n return null;\r\n }\r\n const mainDirectionalLight = ctx.sunLight ?? ctx.primaryDirectionalLight;\r\n if (mainDirectionalLight && shadowMapInfo.has(mainDirectionalLight)) {\r\n return mainDirectionalLight;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Whether the combine pass should read the screen-space shadow mask for the\r\n * combine light instead of recomputing its shadow. Enabled when the camera\r\n * renders the mask and the combine light was actually written into it: the\r\n * mask already holds the identical shadow — same shadow impl (PCSS/VSM/…),\r\n * distance fade and shadowStrength — so this skips a full redundant per-pixel\r\n * shadow evaluation. Shadow mode is irrelevant: the mask is rendered with the\r\n * light's own impl. Falls back to the inline path when the light is not in the\r\n * mask (e.g. it overflows {@link MAX_SHADOW_MASK_LIGHTS}).\r\n *\r\n * Only valid at execute time, after the ShadowMaps and ShadowMask passes have\r\n * populated shadowMapInfo / maskOrdinal.\r\n */\r\n private useCombineShadowMask(ctx: DrawContext, shadowLight: Nullable<PunctualLight>): boolean {\r\n if (!shadowLight || !ctx.screenSpaceShadowMask) {\r\n return false;\r\n }\r\n const shadowMapParams = ctx.shadowMapInfo?.get(shadowLight);\r\n return !!(shadowMapParams?.shadowMap && shadowMapParams.impl && shadowMapParams.maskOrdinal != null);\r\n }\r\n\r\n private getCombineProgramKey(ctx: DrawContext, shadowLight: Nullable<PunctualLight>) {\r\n const shadowMapParams = shadowLight ? ctx.shadowMapInfo?.get(shadowLight) : null;\r\n if (!shadowMapParams?.shaderHash) {\r\n return 'default';\r\n }\r\n // The mask-sampling shader is independent of the PCSS impl hash.\r\n return this.useCombineShadowMask(ctx, shadowLight)\r\n ? 'shadowMask'\r\n : `shadow:${shadowMapParams.shaderHash}`;\r\n }\r\n\r\n requireLinearDepthTexture() {\r\n return true;\r\n }\r\n\r\n requireDepthAttachment() {\r\n return true;\r\n }\r\n\r\n requireSceneNormalTexture() {\r\n return true;\r\n }\r\n\r\n requireShadowMask(ctx: DrawContext) {\r\n // Runs at graph-build time, before shadowMapInfo is populated (that happens\r\n // during the ShadowMaps pass execute), so it cannot inspect the combine\r\n // light. Keep the mask alive whenever the camera renders it; combine()\r\n // decides at execute time whether to sample it, and _setupFromApply only\r\n // reads the handle when the mask was actually produced this frame.\r\n return !!ctx.screenSpaceShadowMask;\r\n }\r\n\r\n apply(ctx: DrawContext, inputColorTexture: Texture2D, sceneDepthTexture: Texture2D, srgbOutput: boolean) {\r\n const device = ctx.device;\r\n const outputFramebuffer = device.getFramebuffer();\r\n const sssSettings = ctx.camera.sssResolvedSettings;\r\n if (\r\n !ctx.SSS ||\r\n !ctx.SSSProfileTexture ||\r\n !ctx.SSSParamTexture ||\r\n ctx.camera.sssStrength <= 0 ||\r\n (ctx.camera.sssBlurScale <= 0 && ctx.camera.sssTransmissionStrength <= 0)\r\n ) {\r\n this.passThrough(ctx, inputColorTexture, srgbOutput);\r\n return;\r\n }\r\n const kernelRadius = (Math.max(1, sssSettings.blurKernelSize >> 0) - 1) >> 1;\r\n const blurEnabled = ctx.camera.sssBlurScale > 0 && kernelRadius > 0;\r\n const profileLUT = this.ensureProfileLUT(ctx);\r\n const inputScatterTexture = ctx.SSSDiffuseTexture ?? inputColorTexture;\r\n const blurWidth =\r\n blurEnabled && sssSettings.halfRes\r\n ? Math.max(1, Math.ceil(inputScatterTexture.width * 0.5))\r\n : inputScatterTexture.width;\r\n const blurHeight =\r\n blurEnabled && sssSettings.halfRes\r\n ? Math.max(1, Math.ceil(inputScatterTexture.height * 0.5))\r\n : inputScatterTexture.height;\r\n let blurredTexture = inputScatterTexture;\r\n let blurFramebufferH: Nullable<FrameBuffer> = null;\r\n let blurFramebufferV: Nullable<FrameBuffer> = null;\r\n if (blurEnabled) {\r\n blurFramebufferH = device.pool.fetchTemporalFramebuffer(\r\n false,\r\n blurWidth,\r\n blurHeight,\r\n inputScatterTexture.format,\r\n null,\r\n false\r\n );\r\n blurFramebufferV = device.pool.fetchTemporalFramebuffer(\r\n false,\r\n blurWidth,\r\n blurHeight,\r\n inputScatterTexture.format,\r\n null,\r\n false\r\n );\r\n device.setFramebuffer(blurFramebufferH);\r\n this.blur(\r\n ctx,\r\n inputScatterTexture,\r\n sceneDepthTexture,\r\n profileLUT,\r\n blurWidth,\r\n blurHeight,\r\n kernelRadius,\r\n true,\r\n sssSettings\r\n );\r\n device.setFramebuffer(blurFramebufferV);\r\n this.blur(\r\n ctx,\r\n blurFramebufferH.getColorAttachments()[0] as Texture2D,\r\n sceneDepthTexture,\r\n profileLUT,\r\n blurWidth,\r\n blurHeight,\r\n kernelRadius,\r\n false,\r\n sssSettings\r\n );\r\n blurredTexture = blurFramebufferV.getColorAttachments()[0] as Texture2D;\r\n }\r\n device.setFramebuffer(outputFramebuffer);\r\n // The SSS combine pass only rewrites pixels that pass the foreground depth test.\r\n // Preserve the current scene color first so sky/image backgrounds are not left\r\n // uninitialized when no geometry-backed pixel is written by the combine pass.\r\n this.passThrough(ctx, inputColorTexture, srgbOutput);\r\n this.combine(ctx, inputColorTexture, blurredTexture, sceneDepthTexture, profileLUT, srgbOutput);\r\n if (blurFramebufferH) {\r\n device.pool.releaseFrameBuffer(blurFramebufferH);\r\n }\r\n if (blurFramebufferV) {\r\n device.pool.releaseFrameBuffer(blurFramebufferV);\r\n }\r\n }\r\n\r\n private blur(\r\n ctx: DrawContext,\r\n inputColorTexture: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n profileLUT: Texture2D,\r\n targetWidth: number,\r\n targetHeight: number,\r\n kernelRadius: number,\r\n horizontal: boolean,\r\n sssSettings: Readonly<SSSResolvedSettings>\r\n ) {\r\n const device = ctx.device;\r\n const sssNormalTexture = ctx.SceneNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasNormalTexture = !!ctx.SceneNormalTexture;\r\n const key = `${horizontal ? 'h' : 'v'}:${kernelRadius}`;\r\n let program = SSS._blurPrograms[key];\r\n if (!program) {\r\n program = this.createBlurProgram(ctx, kernelRadius, horizontal);\r\n SSS._blurPrograms[key] = program;\r\n }\r\n let bindGroup = this._blurBindGroups[key];\r\n if (!bindGroup) {\r\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n this._blurBindGroups[key] = bindGroup;\r\n }\r\n bindGroup.setTexture('colorTex', inputColorTexture, fetchSampler('clamp_linear'));\r\n bindGroup.setTexture('profileTex', ctx.SSSProfileTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('paramTex', ctx.SSSParamTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('profileLUTTex', profileLUT, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('normalTex', sssNormalTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('depthTex', sceneDepthTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\r\n bindGroup.setValue('targetSize', new Vector4(targetWidth, targetHeight, targetWidth, targetHeight));\r\n bindGroup.setValue('sampleOffsets', this.createSampleOffsets(kernelRadius));\r\n bindGroup.setValue('blurScale', ctx.camera.sssBlurScale);\r\n bindGroup.setValue('sssStrength', ctx.camera.sssStrength);\r\n bindGroup.setValue('blurStdDev', sssSettings.blurStdDev);\r\n bindGroup.setValue('depthCutoff', sssSettings.blurDepthCutoff);\r\n bindGroup.setValue('normalCutoff', sssSettings.normalCutoff);\r\n bindGroup.setValue('hasNormalTex', hasNormalTexture ? 1 : 0);\r\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad();\r\n }\r\n\r\n private combine(\r\n ctx: DrawContext,\r\n inputColorTexture: Texture2D,\r\n blurredTexture: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n profileLUT: Texture2D,\r\n srgbOutput: boolean\r\n ) {\r\n const device = ctx.device;\r\n const sssRoughnessTexture = ctx.SceneRoughnessTexture ?? ctx.SSSParamTexture!;\r\n const sssNormalTexture = ctx.SceneNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasRoughnessTexture = !!ctx.SceneRoughnessTexture;\r\n const hasNormalTexture = !!ctx.SceneNormalTexture;\r\n const shadowLight = this.getCombineShadowLight(ctx);\r\n const programKey = this.getCombineProgramKey(ctx, shadowLight);\r\n let program = SSS._combinePrograms[programKey];\r\n if (!program) {\r\n program = this.createCombineProgram(ctx, shadowLight);\r\n SSS._combinePrograms[programKey] = program;\r\n }\r\n let bindGroup = this._combineBindGroups[programKey];\r\n if (!bindGroup) {\r\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n this._combineBindGroups[programKey] = bindGroup;\r\n }\r\n const mainDirectionalLight = ctx.sunLight ?? ctx.primaryDirectionalLight;\r\n const mainTransmissionLight = mainDirectionalLight ?? ctx.primaryTransmissionLight;\r\n const sunDir = mainDirectionalLight\r\n ? mainDirectionalLight.directionAndCutoff.xyz().scaleBy(-1)\r\n : mainTransmissionLight\r\n ? mainTransmissionLight.directionAndCutoff.xyz()\r\n : { x: 0, y: 0, z: 1 };\r\n const sunColorIntensity = mainTransmissionLight\r\n ? ShaderHelper.getPreExposedColorIntensity(mainTransmissionLight, ctx)\r\n : { x: 1, y: 1, z: 1, w: 0 };\r\n const mainLightPosRange = mainTransmissionLight\r\n ? mainTransmissionLight.positionAndRange\r\n : { x: 0, y: 0, z: 0, w: 1 };\r\n const mainLightDirCutoff = mainTransmissionLight\r\n ? mainTransmissionLight.directionAndCutoff\r\n : { x: 0, y: 0, z: -1, w: 0 };\r\n const mainLightType = mainTransmissionLight\r\n ? mainTransmissionLight.isDirectionLight()\r\n ? LIGHT_TYPE_DIRECTIONAL\r\n : mainTransmissionLight.isPointLight()\r\n ? LIGHT_TYPE_POINT\r\n : mainTransmissionLight.isSpotLight()\r\n ? LIGHT_TYPE_SPOT\r\n : LIGHT_TYPE_RECT\r\n : LIGHT_TYPE_DIRECTIONAL;\r\n bindGroup.setTexture('colorTex', inputColorTexture, fetchSampler('clamp_linear'));\r\n bindGroup.setTexture(\r\n 'diffuseTex',\r\n ctx.SSSDiffuseTexture ?? inputColorTexture,\r\n fetchSampler('clamp_linear')\r\n );\r\n bindGroup.setTexture('blurTex', blurredTexture, fetchSampler('clamp_linear'));\r\n bindGroup.setTexture(\r\n 'transmissionTex',\r\n ctx.SSSTransmissionTexture ?? ctx.SSSDiffuseTexture ?? inputColorTexture,\r\n fetchSampler('clamp_linear')\r\n );\r\n bindGroup.setTexture('profileTex', ctx.SSSProfileTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('paramTex', ctx.SSSParamTexture!, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('profileLUTTex', profileLUT, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('roughnessTex', sssRoughnessTexture, fetchSampler('clamp_linear_nomip'));\r\n bindGroup.setTexture('normalTex', sssNormalTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setTexture('depthTex', sceneDepthTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\r\n bindGroup.setValue(\r\n 'targetSize',\r\n new Vector4(\r\n inputColorTexture.width,\r\n inputColorTexture.height,\r\n inputColorTexture.width,\r\n inputColorTexture.height\r\n )\r\n );\r\n bindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\r\n bindGroup.setValue('invViewMatrix', ctx.camera.worldMatrix);\r\n bindGroup.setValue('sunDir', new Float32Array([sunDir.x, sunDir.y, sunDir.z]));\r\n bindGroup.setValue(\r\n 'mainLightPosRange',\r\n new Float32Array([mainLightPosRange.x, mainLightPosRange.y, mainLightPosRange.z, mainLightPosRange.w])\r\n );\r\n bindGroup.setValue(\r\n 'mainLightDirCutoff',\r\n new Float32Array([\r\n mainLightDirCutoff.x,\r\n mainLightDirCutoff.y,\r\n mainLightDirCutoff.z,\r\n mainLightDirCutoff.w\r\n ])\r\n );\r\n bindGroup.setValue('mainLightType', mainLightType);\r\n bindGroup.setValue(\r\n 'sunColorIntensity',\r\n new Float32Array([sunColorIntensity.x, sunColorIntensity.y, sunColorIntensity.z, sunColorIntensity.w])\r\n );\r\n bindGroup.setValue('sssStrength', ctx.camera.sssStrength);\r\n bindGroup.setValue('transmissionStrength', ctx.camera.sssTransmissionStrength);\r\n bindGroup.setValue('transmissionPower', ctx.camera.sssTransmissionPower);\r\n bindGroup.setValue('multiScatter', ctx.camera.sssMultiScatter);\r\n bindGroup.setValue('hasDiffuseTex', ctx.SSSDiffuseTexture ? 1 : 0);\r\n bindGroup.setValue('hasTransmissionTex', ctx.SSSTransmissionTexture ? 1 : 0);\r\n bindGroup.setValue('hasRoughnessTex', hasRoughnessTexture ? 1 : 0);\r\n bindGroup.setValue('hasNormalTex', hasNormalTexture ? 1 : 0);\r\n bindGroup.setValue('debugView', SSS._debugViewMap[ctx.camera.sssDebugView] ?? 0);\r\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n bindGroup.setValue('srgbOut', srgbOutput ? 1 : 0);\r\n if (shadowLight) {\r\n const shadowMapParams = ctx.shadowMapInfo!.get(shadowLight)!;\r\n if (this.useCombineShadowMask(ctx, shadowLight)) {\r\n // Screen-space shadow mask path: bind the mask array and select this\r\n // light's layer/channel from its recorded ordinal (layer = s>>2,\r\n // channel = s&3). A missing mask falls back to the fully-lit dummy.\r\n const ordinal = shadowMapParams.maskOrdinal ?? 0;\r\n const layer = ordinal >> 2;\r\n const channel = ordinal & 3;\r\n bindGroup.setValue('shadowMaskLayer', layer);\r\n bindGroup.setValue(\r\n 'shadowMaskChannel',\r\n new Float32Array([\r\n channel === 0 ? 1 : 0,\r\n channel === 1 ? 1 : 0,\r\n channel === 2 ? 1 : 0,\r\n channel === 3 ? 1 : 0\r\n ])\r\n );\r\n bindGroup.setTexture(\r\n 'Z_UniformShadowMask',\r\n ctx.shadowMaskTexture ?? ShaderHelper.getDummyShadowMask(device),\r\n fetchSampler('clamp_nearest')\r\n );\r\n } else {\r\n const cameraPos = ctx.camera.getWorldPosition();\r\n bindGroup.setValue('camera', {\r\n position: new Vector4(cameraPos.x, cameraPos.y, cameraPos.z, 0),\r\n params: new Vector4(ctx.camera.getNearPlane(), ctx.camera.getFarPlane(), 1, 1),\r\n shadowDebugCascades: ctx.camera.shadowDebugCascades ? 1 : 0,\r\n framestamp: ctx.device.frameInfo.frameCounter\r\n });\r\n bindGroup.setValue('light', {\r\n sunDir: new Float32Array([sunDir.x, sunDir.y, sunDir.z]),\r\n envLightStrength: ShaderHelper.getEnvLightLuminance(ctx),\r\n envLightSpecularStrength: ctx.env?.light.specularStrength ?? 1,\r\n shadowStrength: shadowLight.shadow.shadowStrength,\r\n shadowCascades: shadowMapParams.numShadowCascades,\r\n positionAndRange: shadowLight.positionAndRange,\r\n directionAndCutoff: shadowLight.directionAndCutoff,\r\n diffuseAndIntensity: ShaderHelper.getPreExposedColorIntensity(shadowLight, ctx),\r\n extraParams: shadowLight.extraParams,\r\n implParams: shadowMapParams.impl!.getParams(),\r\n cascadeDistances: shadowMapParams.cascadeDistances,\r\n depthBiasValues: shadowMapParams.depthBiasValues[0],\r\n shadowCameraParams: shadowMapParams.cameraParams,\r\n depthBiasScales: shadowMapParams.depthBiasScales,\r\n shadowMatrices: new Float32Array(shadowMapParams.shadowMatrices)\r\n });\r\n bindGroup.setTexture(\r\n 'Z_UniformShadowMap',\r\n shadowMapParams.shadowMap!,\r\n shadowMapParams.shadowMapSampler\r\n );\r\n }\r\n }\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, DEPTH_COMPARE_FARTHER));\r\n }\r\n\r\n private createBlurProgram(ctx: DrawContext, kernelRadius: number, horizontal: boolean) {\r\n const sampleCount = Math.max(1, Math.ceil(kernelRadius / 2));\r\n const program = ctx.device.buildRenderProgram({\r\n vertex(pb) {\r\n this.flip = pb.int().uniform(0);\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, DEPTH_FARTHEST, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n this.$if(pb.notEqual(this.flip, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n });\r\n },\r\n fragment(pb) {\r\n this.colorTex = pb.tex2D().uniform(0);\r\n this.profileTex = pb.tex2D().uniform(0);\r\n this.paramTex = pb.tex2D().uniform(0);\r\n this.profileLUTTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n this.sampleOffsets = pb.vec4[sampleCount + 1]().uniform(0);\r\n this.blurScale = pb.float().uniform(0);\r\n this.sssStrength = pb.float().uniform(0);\r\n this.blurStdDev = pb.float().uniform(0);\r\n this.depthCutoff = pb.float().uniform(0);\r\n this.normalCutoff = pb.float().uniform(0);\r\n this.hasNormalTex = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('max3', [pb.vec3('value')], function () {\r\n this.$return(pb.max(this.value.x, pb.max(this.value.y, this.value.z)));\r\n });\r\n pb.func('readProfileRadius', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(0));\r\n this.$return(\r\n pb.mul(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb, SSS._profileRadiusEncodeMax)\r\n );\r\n });\r\n pb.func('readProfileFalloff', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(1));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfileSettingsA', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(4));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileWorldScaleEncodeMax),\r\n this.raw.y,\r\n pb.mul(this.raw.z, SSS._profileNormalScaleEncodeMax),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func('readProfileSettingsB', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(6));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileExtinctionEncodeMax),\r\n pb.mul(this.raw.y, SSS._profileWorldScaleEncodeMax),\r\n pb.mul(this.raw.z, 2),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'burleyKernel1',\r\n [\r\n pb.float('distance'),\r\n pb.float('radius'),\r\n pb.float('falloff'),\r\n pb.float('distribution'),\r\n pb.float('scatterScale')\r\n ],\r\n function () {\r\n this.$l.safeRadius = pb.max(this.radius, 0.045);\r\n this.$l.safeDistribution = pb.clamp(this.distribution, 0, 1);\r\n this.$l.safeScatterScale = pb.clamp(\r\n pb.div(this.scatterScale, SSS._profileWorldScaleEncodeMax),\r\n 0.05,\r\n 1\r\n );\r\n this.$l.falloffShape = pb.mix(0.72, 1.46, pb.clamp(this.falloff, 0.05, 1));\r\n this.$l.distributionShape = pb.mix(0.82, 1.38, this.safeDistribution);\r\n this.$l.scatterShape = pb.mix(0.84, 1.28, this.safeScatterScale);\r\n this.$l.diffusionDistance = pb.max(\r\n pb.mul(\r\n this.blurStdDev,\r\n this.safeRadius,\r\n this.falloffShape,\r\n this.distributionShape,\r\n this.scatterShape\r\n ),\r\n 0.16\r\n );\r\n this.$l.dr = pb.div(pb.abs(this.distance), this.diffusionDistance);\r\n this.$return(\r\n pb.div(\r\n pb.add(pb.exp(pb.neg(this.dr)), pb.exp(pb.neg(pb.div(this.dr, 3)))),\r\n pb.max(pb.mul(8, this.diffusionDistance), 1e-4)\r\n )\r\n );\r\n }\r\n );\r\n pb.func(\r\n 'computeKernelWeight',\r\n [\r\n pb.float('distance'),\r\n pb.vec3('relativeRadius'),\r\n pb.vec3('falloff'),\r\n pb.float('distribution'),\r\n pb.float('scatterScale'),\r\n pb.float('strengthScale')\r\n ],\r\n function () {\r\n this.$l.safeDistribution = pb.clamp(this.distribution, 0, 1);\r\n this.$l.safeStrengthScale = pb.clamp(pb.mul(this.strengthScale, 0.5), 0.05, 1);\r\n this.$l.burleyWeight = pb.vec3(\r\n this.burleyKernel1(\r\n this.distance,\r\n this.relativeRadius.x,\r\n this.falloff.x,\r\n this.safeDistribution,\r\n this.scatterScale\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n this.relativeRadius.y,\r\n this.falloff.y,\r\n this.safeDistribution,\r\n this.scatterScale\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n this.relativeRadius.z,\r\n this.falloff.z,\r\n this.safeDistribution,\r\n this.scatterScale\r\n )\r\n );\r\n this.$l.forwardScatter = pb.vec3(\r\n this.burleyKernel1(\r\n this.distance,\r\n pb.max(pb.mul(this.relativeRadius.x, 0.58), 0.03),\r\n pb.mix(this.falloff.x, 1, 0.3),\r\n pb.mix(this.safeDistribution, 1, 0.18),\r\n pb.mul(this.scatterScale, 0.92)\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n pb.max(pb.mul(this.relativeRadius.y, 0.58), 0.03),\r\n pb.mix(this.falloff.y, 1, 0.3),\r\n pb.mix(this.safeDistribution, 1, 0.18),\r\n pb.mul(this.scatterScale, 0.92)\r\n ),\r\n this.burleyKernel1(\r\n this.distance,\r\n pb.max(pb.mul(this.relativeRadius.z, 0.58), 0.03),\r\n pb.mix(this.falloff.z, 1, 0.3),\r\n pb.mix(this.safeDistribution, 1, 0.18),\r\n pb.mul(this.scatterScale, 0.92)\r\n )\r\n );\r\n this.$l.forwardWeight = pb.mix(0.08, 0.28, this.safeStrengthScale);\r\n this.$return(\r\n pb.add(\r\n pb.mul(this.burleyWeight, pb.sub(1, this.forwardWeight)),\r\n pb.mul(this.forwardScatter, this.forwardWeight)\r\n )\r\n );\r\n }\r\n );\r\n pb.func('decodeNormal', [pb.vec2('uv')], function () {\r\n this.$if(pb.equal(this.hasNormalTex, 0), function () {\r\n this.$return(pb.vec3(0, 0, 1));\r\n });\r\n this.$l.n = pb.sub(pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2), pb.vec3(1));\r\n this.$return(pb.normalize(this.n));\r\n });\r\n pb.func('readDepth01', [pb.vec2('uv')], function () {\r\n this.$return(ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0));\r\n });\r\n pb.func('sampleColor', [pb.vec2('uv')], function () {\r\n this.$return(pb.textureSampleLevel(this.colorTex, this.uv, 0));\r\n });\r\n pb.func('readProfileSlot', [pb.vec4('param')], function () {\r\n this.$return(pb.floor(pb.add(pb.mul(this.param.r, 255), 0.5)));\r\n });\r\n pb.main(function () {\r\n this.$l.uv = this.$inputs.uv;\r\n this.$l.centerColor = pb.textureSampleLevel(this.colorTex, this.uv, 0);\r\n this.$l.centerProfile = pb.textureSampleLevel(this.profileTex, this.uv, 0);\r\n this.$l.centerParam = pb.textureSampleLevel(this.paramTex, this.uv, 0);\r\n this.$l.centerActive = pb.greaterThan(this.centerParam.a, 0.5);\r\n this.$l.centerStrength = this.max3(this.centerProfile.rgb);\r\n this.$l.centerSlot = this.readProfileSlot(this.centerParam);\r\n this.$l.centerDepth01 = this.readDepth01(this.uv);\r\n this.$if(\r\n pb.or(\r\n pb.or(\r\n pb.or(pb.lessThanEqual(this.centerStrength, 1e-4), pb.lessThanEqual(this.centerSlot, 0)),\r\n pb.not(this.centerActive)\r\n ),\r\n pb.greaterThanEqual(this.centerDepth01, 1)\r\n ),\r\n function () {\r\n this.$outputs.outColor = this.centerColor;\r\n }\r\n ).$else(function () {\r\n this.$l.widthStrength = pb.clamp(this.centerParam.g, 0, 0.999);\r\n this.$l.centerDepth = pb.mul(this.centerDepth01, this.cameraNearFar.y);\r\n this.$l.centerLogDepth = pb.log(pb.add(this.centerDepth, 1));\r\n this.$l.profileSettingsA = this.readProfileSettingsA(this.centerSlot);\r\n this.$l.profileSettingsB = this.readProfileSettingsB(this.centerSlot);\r\n this.$l.profileWorldScale = pb.clamp(\r\n this.profileSettingsA.x,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileBoundaryBleed = pb.clamp(this.profileSettingsA.y, 0, 1);\r\n this.$l.profileNormalScale = pb.clamp(\r\n this.profileSettingsA.z,\r\n 0,\r\n SSS._profileNormalScaleEncodeMax\r\n );\r\n this.$l.profileDistribution = pb.clamp(this.profileSettingsA.w, 0, 1);\r\n this.$l.profileScatterScale = pb.clamp(\r\n this.profileSettingsB.y,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileStrengthScale = pb.clamp(this.profileSettingsB.z, 0.05, 2);\r\n this.$l.profileWorldScaleNorm = pb.clamp(\r\n pb.div(this.profileWorldScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileScatterScaleNorm = pb.clamp(\r\n pb.div(this.profileScatterScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileStrengthNorm = pb.clamp(pb.mul(this.profileStrengthScale, 0.5), 0, 1);\r\n this.$l.depthThreshold = pb.div(\r\n pb.mul(\r\n this.depthCutoff,\r\n pb.add(0.45, pb.mul(this.widthStrength, 0.42)),\r\n pb.mix(0.88, 1.16, this.profileWorldScaleNorm)\r\n ),\r\n pb.max(\r\n pb.sub(pb.log(pb.add(this.cameraNearFar.y, 1)), pb.log(pb.add(this.cameraNearFar.x, 1))),\r\n 1e-4\r\n )\r\n );\r\n this.$l.normalDetailSoftening = pb.mul(\r\n pb.clamp(this.sssStrength, 0, 1),\r\n pb.add(0.14, pb.mul(this.widthStrength, 0.1))\r\n );\r\n this.$l.normalThreshold = pb.clamp(\r\n pb.add(\r\n pb.max(\r\n pb.sub(\r\n this.normalCutoff,\r\n pb.add(this.normalDetailSoftening, pb.mul(this.widthStrength, 0.12))\r\n ),\r\n 0.48\r\n ),\r\n pb.sub(pb.mul(this.profileNormalScale, 0.08), 0.08),\r\n pb.neg(pb.mul(this.profileBoundaryBleed, 0.04))\r\n ),\r\n 0.44,\r\n 0.92\r\n );\r\n this.$l.centerNormal = this.decodeNormal(this.uv);\r\n this.$l.profileRadius = pb.mul(\r\n this.readProfileRadius(this.centerSlot),\r\n this.profileWorldScale,\r\n pb.mix(0.76, 1.44, this.profileScatterScaleNorm),\r\n pb.mix(0.92, 1.08, this.profileStrengthNorm)\r\n );\r\n this.$l.profileFalloff = this.readProfileFalloff(this.centerSlot);\r\n this.$l.maxProfileRadius = pb.max(this.max3(this.profileRadius), 1e-4);\r\n this.$l.relativeRadius = pb.div(this.profileRadius, this.maxProfileRadius);\r\n this.$l.profileSpread = pb.clamp(\r\n pb.div(this.maxProfileRadius, pb.add(this.maxProfileRadius, 0.65)),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileDiffusionSoftness = pb.clamp(\r\n pb.add(\r\n pb.add(0.34, pb.mul(this.profileSpread, 0.34)),\r\n pb.add(pb.mul(this.profileDistribution, 0.18), pb.mul(this.profileStrengthNorm, 0.18))\r\n ),\r\n 0.2,\r\n 1\r\n );\r\n this.$l.radius = pb.max(\r\n pb.mul(\r\n pb.add(0.18, pb.mul(this.widthStrength, 1.9), pb.mul(this.profileSpread, 0.85)),\r\n this.blurScale,\r\n pb.add(0.18, pb.mul(this.maxProfileRadius, 0.82)),\r\n pb.mix(0.86, 1.22, this.profileStrengthNorm),\r\n pb.mix(0.9, 1.14, this.profileDiffusionSoftness),\r\n 0.23\r\n ),\r\n 1\r\n );\r\n this.$l.centerKernel = this.computeKernelWeight(\r\n 0,\r\n this.relativeRadius,\r\n this.profileFalloff,\r\n this.profileDistribution,\r\n this.profileScatterScale,\r\n this.profileStrengthScale\r\n );\r\n this.$l.centerWeight = pb.max(\r\n pb.mul(\r\n this.centerProfile.rgb,\r\n pb.mix(0.92, 1.18, this.profileStrengthNorm),\r\n pb.mix(0.94, 1.08, this.profileDiffusionSoftness)\r\n ),\r\n pb.vec3(pb.mul(this.widthStrength, 0.05))\r\n );\r\n this.$l.centerSample = this.sampleColor(this.uv).rgb;\r\n this.$l.colorSum = pb.mul(this.centerSample, this.centerWeight, this.centerKernel);\r\n this.$l.weightSum = pb.max(pb.mul(this.centerWeight, this.centerKernel), pb.vec3(1e-4));\r\n this.$for(pb.int('i'), 1, sampleCount, function () {\r\n this.$l.data = this.sampleOffsets.at(this.i);\r\n this.$l.axisOffset = pb.mul(this.data.x, this.radius);\r\n this.$l.offset = pb.div(\r\n horizontal ? pb.vec2(this.axisOffset, 0) : pb.vec2(0, this.axisOffset),\r\n this.targetSize.xy\r\n );\r\n this.$l.kernelWeight = this.computeKernelWeight(\r\n this.data.x,\r\n this.relativeRadius,\r\n this.profileFalloff,\r\n this.profileDistribution,\r\n this.profileScatterScale,\r\n this.profileStrengthScale\r\n );\r\n this.$for(pb.int('side'), 0, 2, function () {\r\n this.$l.sampleUV = this.$choice(\r\n pb.equal(this.side, 0),\r\n pb.add(this.uv, this.offset),\r\n pb.sub(this.uv, this.offset)\r\n );\r\n this.$l.sampleProfile = pb.textureSampleLevel(this.profileTex, this.sampleUV, 0);\r\n this.$l.sampleParam = pb.textureSampleLevel(this.paramTex, this.sampleUV, 0);\r\n this.$l.sampleStrength = this.max3(this.sampleProfile.rgb);\r\n this.$l.sampleActive = pb.greaterThan(this.sampleParam.a, 0.5);\r\n this.$l.sampleWidthStrength = pb.clamp(this.sampleParam.g, 0, 0.999);\r\n this.$l.sampleWeight = pb.max(\r\n this.sampleProfile.rgb,\r\n pb.vec3(pb.mul(this.sampleWidthStrength, 0.05))\r\n );\r\n this.$if(pb.and(this.sampleActive, pb.greaterThan(this.sampleStrength, 1e-4)), function () {\r\n this.$l.depth01Sample = this.readDepth01(this.sampleUV);\r\n this.$if(pb.lessThan(this.depth01Sample, 1), function () {\r\n this.$l.sampleDepth = pb.mul(this.depth01Sample, this.cameraNearFar.y);\r\n this.$l.sampleLogDepth = pb.log(pb.add(this.sampleDepth, 1));\r\n this.$if(\r\n pb.lessThan(\r\n pb.abs(pb.sub(this.sampleLogDepth, this.centerLogDepth)),\r\n this.depthThreshold\r\n ),\r\n function () {\r\n this.$l.sampleNormal = this.decodeNormal(this.sampleUV);\r\n this.$if(\r\n pb.greaterThan(pb.dot(this.sampleNormal, this.centerNormal), this.normalThreshold),\r\n function () {\r\n this.$l.sampleColor = this.sampleColor(this.sampleUV).rgb;\r\n this.$l.w = pb.mul(this.kernelWeight, this.sampleWeight);\r\n this.colorSum = pb.add(this.colorSum, pb.mul(this.sampleColor, this.w));\r\n this.weightSum = pb.add(this.weightSum, this.w);\r\n }\r\n );\r\n }\r\n );\r\n });\r\n });\r\n });\r\n });\r\n this.$outputs.outColor = pb.vec4(\r\n pb.div(this.colorSum, pb.max(this.weightSum, pb.vec3(1e-4))),\r\n this.centerColor.a\r\n );\r\n });\r\n });\r\n }\r\n })!;\r\n program.name = horizontal ? '@SSS_Blur_H' : '@SSS_Blur_V';\r\n return program;\r\n }\r\n\r\n private createCombineProgram(ctx: DrawContext, shadowLight: Nullable<PunctualLight>) {\r\n const shadowMapParams = shadowLight ? ctx.shadowMapInfo?.get(shadowLight) : null;\r\n const shadowEnabled = !!(shadowLight && shadowMapParams?.shadowMap && shadowMapParams.impl);\r\n // When the screen-space shadow mask is available for the combine light,\r\n // sample it instead of recomputing PCSS (which also avoids the dpdx-in-\r\n // non-uniform-control-flow constraint entirely on this path).\r\n const useShadowMask = this.useCombineShadowMask(ctx, shadowLight);\r\n const pcssEnabled = shadowEnabled && !useShadowMask;\r\n const program = ctx.device.buildRenderProgram({\r\n vertex(pb) {\r\n this.flip = pb.int().uniform(0);\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, DEPTH_FARTHEST, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n this.$if(pb.notEqual(this.flip, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n });\r\n },\r\n fragment(pb) {\r\n if (pcssEnabled) {\r\n const cameraStruct = pb.defineStruct([\r\n pb.vec4('position'),\r\n pb.vec4('params'),\r\n pb.float('shadowDebugCascades'),\r\n pb.int('framestamp')\r\n ]);\r\n const lightStruct = pb.defineStruct([\r\n pb.vec3('sunDir'),\r\n pb.float('envLightStrength'),\r\n pb.float('envLightSpecularStrength'),\r\n pb.float('shadowStrength'),\r\n pb.int('shadowCascades'),\r\n pb.vec4('positionAndRange'),\r\n pb.vec4('directionAndCutoff'),\r\n pb.vec4('diffuseAndIntensity'),\r\n pb.vec4('extraParams'),\r\n pb.vec4('cascadeDistances'),\r\n pb.vec4('depthBiasValues'),\r\n pb.vec4('implParams'),\r\n pb.vec4('shadowCameraParams'),\r\n pb.vec4('depthBiasScales'),\r\n pb.vec4[16]('shadowMatrices')\r\n ]);\r\n this.camera = cameraStruct().uniform(0);\r\n this.light = lightStruct().uniform(0);\r\n const shadowMap = shadowMapParams!.shadowMap!;\r\n const shadowTex = shadowMap.isTextureCube()\r\n ? shadowMap.isDepth()\r\n ? pb.texCubeShadow()\r\n : pb.texCube()\r\n : shadowMap.isTexture2D()\r\n ? shadowMap.isDepth()\r\n ? pb.tex2DShadow()\r\n : pb.tex2D()\r\n : shadowMap.isDepth()\r\n ? pb.tex2DArrayShadow()\r\n : pb.tex2DArray();\r\n if (\r\n !shadowMap.isDepth() &&\r\n !ctx.device.getDeviceCaps().textureCaps.getTextureFormatInfo(shadowMap.format).filterable\r\n ) {\r\n shadowTex.sampleType('unfilterable-float');\r\n }\r\n this.Z_UniformShadowMap = shadowTex.uniform(0);\r\n }\r\n if (useShadowMask) {\r\n // Screen-space shadow mask: one RGBA8 array layer per 4 lights. The\r\n // combine light's visibility is one channel of one layer, selected via\r\n // the layer index and a one-hot channel selector bound at draw time.\r\n this.Z_UniformShadowMask = pb.tex2DArray().uniform(0);\r\n this.shadowMaskLayer = pb.int().uniform(0);\r\n this.shadowMaskChannel = pb.vec4().uniform(0);\r\n }\r\n this.colorTex = pb.tex2D().uniform(0);\r\n this.diffuseTex = pb.tex2D().uniform(0);\r\n this.blurTex = pb.tex2D().uniform(0);\r\n this.transmissionTex = pb.tex2D().uniform(0);\r\n this.profileTex = pb.tex2D().uniform(0);\r\n this.paramTex = pb.tex2D().uniform(0);\r\n this.profileLUTTex = pb.tex2D().uniform(0);\r\n this.roughnessTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n this.invProjMatrix = pb.mat4().uniform(0);\r\n this.invViewMatrix = pb.mat4().uniform(0);\r\n this.sunDir = pb.vec3().uniform(0);\r\n this.mainLightPosRange = pb.vec4().uniform(0);\r\n this.mainLightDirCutoff = pb.vec4().uniform(0);\r\n this.mainLightType = pb.int().uniform(0);\r\n this.sunColorIntensity = pb.vec4().uniform(0);\r\n this.sssStrength = pb.float().uniform(0);\r\n this.transmissionStrength = pb.float().uniform(0);\r\n this.transmissionPower = pb.float().uniform(0);\r\n this.multiScatter = pb.float().uniform(0);\r\n this.hasDiffuseTex = pb.int().uniform(0);\r\n this.hasTransmissionTex = pb.int().uniform(0);\r\n this.hasRoughnessTex = pb.int().uniform(0);\r\n this.hasNormalTex = pb.int().uniform(0);\r\n this.debugView = pb.int().uniform(0);\r\n this.srgbOut = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('max3', [pb.vec3('value')], function () {\r\n this.$return(pb.max(this.value.x, pb.max(this.value.y, this.value.z)));\r\n });\r\n pb.func('readProfileRadius', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(0));\r\n this.$return(\r\n pb.mul(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb, SSS._profileRadiusEncodeMax)\r\n );\r\n });\r\n pb.func('readProfileFalloff', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(1));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfileTintBias', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(2));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfilePresetResponse', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(3));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n this.raw.x,\r\n this.raw.y,\r\n pb.sub(pb.mul(this.raw.z, 0.75), 0.25),\r\n pb.sub(pb.mul(this.raw.w, 0.75), 0.25)\r\n )\r\n );\r\n });\r\n pb.func('readProfileSettingsA', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(4));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileWorldScaleEncodeMax),\r\n this.raw.y,\r\n pb.mul(this.raw.z, SSS._profileNormalScaleEncodeMax),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func('readProfileTransmissionTint', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(5));\r\n this.$return(pb.textureSampleLevel(this.profileLUTTex, this.uv, 0).rgb);\r\n });\r\n pb.func('readProfileSettingsB', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(6));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(\r\n pb.vec4(\r\n pb.mul(this.raw.x, SSS._profileExtinctionEncodeMax),\r\n pb.mul(this.raw.y, SSS._profileWorldScaleEncodeMax),\r\n pb.mul(this.raw.z, 2),\r\n this.raw.w\r\n )\r\n );\r\n });\r\n pb.func('readProfileSpecularSettings', [pb.float('slot')], function () {\r\n this.$l.uv = pb.vec2(pb.div(pb.add(this.slot, 0.5), SSS._profileLUTWidth), SSS.profileRowV(7));\r\n this.$l.raw = pb.textureSampleLevel(this.profileLUTTex, this.uv, 0);\r\n this.$return(pb.vec2(this.raw.x, pb.mul(this.raw.y, SSS._profileSpecularRadiusEncodeMax)));\r\n });\r\n pb.func('readProfileSlot', [pb.vec4('param')], function () {\r\n this.$return(pb.floor(pb.add(pb.mul(this.param.r, 255), 0.5)));\r\n });\r\n pb.func('decodeNormal', [pb.vec2('uv')], function () {\r\n this.$if(pb.equal(this.hasNormalTex, 0), function () {\r\n this.$return(pb.vec3(0, 0, 1));\r\n });\r\n this.$l.n = pb.sub(pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2), pb.vec3(1));\r\n this.$return(pb.normalize(this.n));\r\n });\r\n pb.func('readDepth01', [pb.vec2('uv')], function () {\r\n this.$return(ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0));\r\n });\r\n pb.func(\r\n 'sampleCompatibleSpecular',\r\n [pb.vec2('uv'), pb.float('profileSlot'), pb.float('centerLogDepth')],\r\n function () {\r\n this.$l.sampleUV = pb.clamp(this.uv, pb.vec2(0), pb.vec2(1));\r\n this.$l.sampleParam = pb.textureSampleLevel(this.paramTex, this.sampleUV, 0);\r\n this.$l.sampleSlot = this.readProfileSlot(this.sampleParam);\r\n this.$l.sampleDepth01 = this.readDepth01(this.sampleUV);\r\n this.$if(\r\n pb.or(\r\n pb.or(\r\n pb.lessThanEqual(this.sampleParam.a, 0.5),\r\n pb.notEqual(this.sampleSlot, this.profileSlot)\r\n ),\r\n pb.greaterThanEqual(this.sampleDepth01, 1)\r\n ),\r\n function () {\r\n this.$return(pb.vec4(0));\r\n }\r\n );\r\n this.$l.sampleLogDepth = pb.log(pb.add(pb.mul(this.sampleDepth01, this.cameraNearFar.y), 1));\r\n this.$if(\r\n pb.greaterThan(pb.abs(pb.sub(this.sampleLogDepth, this.centerLogDepth)), 0.022),\r\n function () {\r\n this.$return(pb.vec4(0));\r\n }\r\n );\r\n this.$l.sampleScene = pb.textureSampleLevel(this.colorTex, this.sampleUV, 0).rgb;\r\n this.$l.sampleDiffuse = pb.textureSampleLevel(this.diffuseTex, this.sampleUV, 0).rgb;\r\n this.$return(pb.vec4(pb.max(pb.sub(this.sampleScene, this.sampleDiffuse), pb.vec3(0)), 1));\r\n }\r\n );\r\n pb.func(\r\n 'estimateScreenThinnessComponents',\r\n [pb.vec2('uv'), pb.float('depth01'), pb.vec3('normalWS'), pb.float('radiusScale')],\r\n function () {\r\n this.$l.pixelStep = pb.div(\r\n pb.add(pb.vec2(1.2), pb.mul(pb.vec2(2.4), this.radiusScale)),\r\n this.targetSize.xy\r\n );\r\n // Depth differences are accumulated as a ratio to the center depth\r\n // rather than raw. readDepth01 returns linear depth already divided\r\n // by the far plane, so both terms carry the same normalization and\r\n // it cancels: |dz|/z is a pure ratio, independent of the far plane,\r\n // of the camera distance, and of the scale the model was built at.\r\n //\r\n // The raw difference this replaces was scaled by a fixed constant\r\n // instead, which left sensitivity proportional to 1 / farPlane - an\r\n // otherwise identical scene with far = 1000 got a tenth the response\r\n // of one with far = 100. At ordinary far planes the interior\r\n // collapsed to zero and only the silhouette survived, where the\r\n // difference saturates no matter how it is scaled. That is what made\r\n // automatic thin-region inference read as an outline.\r\n this.$l.invCenterDepth = pb.div(1, pb.max(this.depth01, 1e-5));\r\n this.$l.depthAccum = pb.float(0);\r\n this.$l.normalAccum = pb.float(0);\r\n this.$l.sampleCount = pb.float(0);\r\n const sampleAt = (offsetX: number, offsetY: number) => {\r\n this.$l.sampleUV = pb.clamp(\r\n pb.add(this.uv, pb.mul(this.pixelStep, pb.vec2(offsetX, offsetY))),\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.sampleDepth01 = this.readDepth01(this.sampleUV);\r\n this.depthAccum = pb.add(\r\n this.depthAccum,\r\n pb.mul(pb.abs(pb.sub(this.sampleDepth01, this.depth01)), this.invCenterDepth)\r\n );\r\n this.$if(pb.notEqual(this.hasNormalTex, 0), function () {\r\n this.normalAccum = pb.add(\r\n this.normalAccum,\r\n pb.clamp(pb.sub(1, pb.dot(this.decodeNormal(this.sampleUV), this.normalWS)), 0, 1)\r\n );\r\n });\r\n this.sampleCount = pb.add(this.sampleCount, 1);\r\n };\r\n sampleAt(1, 0);\r\n sampleAt(-1, 0);\r\n sampleAt(0, 1);\r\n sampleAt(0, -1);\r\n sampleAt(1, 1);\r\n sampleAt(-1, -1);\r\n this.$l.depthMean = pb.div(this.depthAccum, pb.max(this.sampleCount, 1));\r\n this.$l.normalMean = pb.div(this.normalAccum, pb.max(this.sampleCount, 1));\r\n // Recalibrated for the relative gradient above; the old 52 applied to\r\n // a raw normalized difference and is not comparable.\r\n //\r\n // For a surface turned by angle t from the view direction, the ratio\r\n // over a k-pixel step is about tan(t) * k / (0.5 * height * P11), and\r\n // the six-tap pattern averages roughly two thirds of that. At 1080p\r\n // with a 40 degree vertical FOV this puts an ear rim or nostril wing\r\n // (t around 80 degrees) near 0.5, keeps a flat cheek under 0.1, and\r\n // still saturates on a silhouette.\r\n //\r\n // A residual dependence on vertical resolution and FOV remains,\r\n // because pixelStep is expressed in pixels. That is bounded and\r\n // predictable, unlike the far-plane scaling it replaces, so it is\r\n // left alone rather than fixed by hand here.\r\n this.$l.depthThin = pb.clamp(\r\n pb.mul(this.depthMean, pb.add(80, pb.mul(this.radiusScale, 28))),\r\n 0,\r\n 1\r\n );\r\n this.$l.normalThin = pb.clamp(\r\n pb.mul(this.normalMean, pb.add(1.4, pb.mul(this.radiusScale, 0.5))),\r\n 0,\r\n 1\r\n );\r\n this.$l.combinedThin = pb.clamp(\r\n pb.add(pb.mul(this.depthThin, 0.72), pb.mul(this.normalThin, 0.52)),\r\n 0,\r\n 1\r\n );\r\n this.$return(pb.vec3(this.depthThin, this.normalThin, this.combinedThin));\r\n }\r\n );\r\n pb.func('reconstructViewPos', [pb.vec2('uv'), pb.float('linearDepth')], function () {\r\n this.$l.viewDepth = pb.max(pb.mul(this.linearDepth, this.cameraNearFar.y), 1e-5);\r\n this.$l.nonLinearDepth = ShaderHelper.linearDepthToNonLinear(\r\n this,\r\n this.viewDepth,\r\n this.cameraNearFar\r\n );\r\n this.$l.clipPos = pb.vec4(\r\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\r\n ShaderHelper.deviceDepthToClipZ(this, pb.clamp(this.nonLinearDepth, 0, 1)),\r\n 1\r\n );\r\n this.$l.viewPos = pb.mul(this.invProjMatrix, this.clipPos);\r\n this.$return(pb.div(this.viewPos.xyz, pb.max(this.viewPos.w, 1e-5)));\r\n });\r\n pb.func(\r\n 'calculateMainLightDirection',\r\n [\r\n pb.vec3('worldPos'),\r\n pb.int('lightType'),\r\n pb.vec4('posRange'),\r\n pb.vec4('dirCutoff'),\r\n pb.vec3('fallbackDir')\r\n ],\r\n function () {\r\n this.$return(\r\n this.$choice(\r\n pb.equal(this.lightType, LIGHT_TYPE_DIRECTIONAL),\r\n pb.normalize(this.fallbackDir),\r\n pb.normalize(pb.sub(this.posRange.xyz, this.worldPos))\r\n )\r\n );\r\n }\r\n );\r\n pb.func(\r\n 'calculateMainLightAttenuation',\r\n [pb.vec3('worldPos'), pb.int('lightType'), pb.vec4('posRange'), pb.vec4('dirCutoff')],\r\n function () {\r\n this.$if(pb.equal(this.lightType, LIGHT_TYPE_DIRECTIONAL), function () {\r\n this.$return(pb.float(1));\r\n });\r\n this.$l.dist = pb.distance(this.posRange.xyz, this.worldPos);\r\n this.$l.falloff = pb.max(0, pb.sub(1, pb.div(this.dist, pb.max(this.posRange.w, 1e-4))));\r\n this.$if(\r\n pb.or(pb.equal(this.lightType, LIGHT_TYPE_POINT), pb.equal(this.lightType, LIGHT_TYPE_RECT)),\r\n function () {\r\n this.$return(pb.mul(this.falloff, this.falloff));\r\n }\r\n );\r\n this.$l.spotFactor = pb.dot(\r\n pb.normalize(pb.sub(this.worldPos, this.posRange.xyz)),\r\n this.dirCutoff.xyz\r\n );\r\n this.spotFactor = pb.smoothStep(\r\n this.dirCutoff.w,\r\n pb.mix(this.dirCutoff.w, 1, 0.5),\r\n this.spotFactor\r\n );\r\n this.$return(pb.mul(this.spotFactor, this.falloff, this.falloff));\r\n }\r\n );\r\n if (pcssEnabled) {\r\n pb.func(\r\n 'calculateTransmissionShadow',\r\n [pb.vec3('worldPos'), pb.float('depth01'), pb.float('NoL')],\r\n function () {\r\n if (shadowMapParams!.numShadowCascades > 1) {\r\n this.$l.linearDepth = pb.mul(this.depth01, this.camera.params.y);\r\n this.$l.splitDistances = this.light.cascadeDistances;\r\n this.$l.comparison = pb.vec4(pb.greaterThan(pb.vec4(this.linearDepth), this.splitDistances));\r\n this.$l.cascadeFlags = pb.vec4(\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 0)),\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 1)),\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 2)),\r\n pb.float(pb.greaterThan(this.light.shadowCascades, 3))\r\n );\r\n this.$l.split = pb.int(pb.dot(this.comparison, this.cascadeFlags));\r\n this.$l.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(\r\n this,\r\n pb.vec4(this.worldPos, 1),\r\n this.split\r\n );\r\n this.$l.shadow = shadowMapParams!.impl!.computeShadowCSM(\r\n shadowMapParams!,\r\n this,\r\n this.shadowVertex,\r\n this.NoL,\r\n this.split\r\n );\r\n this.$l.shadowDistance = this.light.shadowCameraParams.w;\r\n this.shadow = pb.mix(\r\n this.shadow,\r\n 1,\r\n pb.smoothStep(\r\n pb.mul(this.shadowDistance, 0.8),\r\n this.shadowDistance,\r\n pb.distance(this.camera.position.xyz, this.worldPos)\r\n )\r\n );\r\n this.shadow = pb.mix(1, this.shadow, this.light.shadowStrength);\r\n this.shadow = pb.clamp(this.shadow, 0, 1);\r\n this.$return(this.shadow);\r\n } else {\r\n this.$l.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(\r\n this,\r\n pb.vec4(this.worldPos, 1)\r\n );\r\n this.$l.shadow = shadowMapParams!.impl!.computeShadow(\r\n shadowMapParams!,\r\n this,\r\n this.shadowVertex,\r\n this.NoL\r\n );\r\n this.$l.shadowDistance = this.light.shadowCameraParams.w;\r\n this.shadow = pb.mix(\r\n this.shadow,\r\n 1,\r\n pb.smoothStep(\r\n pb.mul(this.shadowDistance, 0.8),\r\n this.shadowDistance,\r\n pb.distance(this.camera.position.xyz, this.worldPos)\r\n )\r\n );\r\n this.shadow = pb.mix(1, this.shadow, this.light.shadowStrength);\r\n this.shadow = pb.clamp(this.shadow, 0, 1);\r\n this.$return(this.shadow);\r\n }\r\n }\r\n );\r\n }\r\n pb.main(function () {\r\n this.$l.uv = this.$inputs.uv;\r\n this.$l.baseColor = pb.textureSampleLevel(this.colorTex, this.uv, 0);\r\n this.$l.baseDiffuseColor = pb.textureSampleLevel(this.diffuseTex, this.uv, 0).rgb;\r\n this.$l.baseTransmissionColor = pb.vec3(0);\r\n this.$l.debugThinness = pb.float(0);\r\n this.$l.debugThinnessLayers = pb.vec3(0);\r\n this.$l.debugTransmissionMask = pb.float(0);\r\n this.$l.debugThinLighting = pb.vec3(0);\r\n this.$l.debugProfileEnergy = pb.vec3(0);\r\n this.$l.debugProfileTransmission = pb.vec3(0);\r\n this.$l.debugProfileBoundary = pb.vec3(0);\r\n this.$l.debugTransmissionShadow = pb.float(0);\r\n this.$if(pb.notEqual(this.hasTransmissionTex, 0), function () {\r\n this.baseTransmissionColor = pb.textureSampleLevel(this.transmissionTex, this.uv, 0).rgb;\r\n });\r\n this.$l.profile = pb.textureSampleLevel(this.profileTex, this.uv, 0);\r\n this.$l.param = pb.textureSampleLevel(this.paramTex, this.uv, 0);\r\n this.$l.profileActive = pb.greaterThan(this.param.a, 0.5);\r\n this.$l.scatterSoftnessAuthor = pb.clamp(pb.mul(pb.sub(this.param.a, 0.75), 4), 0, 1);\r\n this.$l.roughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.uv, 0);\r\n this.$l.profileStrength = this.max3(this.profile.rgb);\r\n this.$l.automaticTransmission = pb.lessThan(this.profile.a, 0);\r\n this.$l.materialTransmissionMask = pb.clamp(this.profile.a, 0, 1);\r\n this.$l.profileSlot = this.readProfileSlot(this.param);\r\n this.$l.depth01 = this.readDepth01(this.uv);\r\n this.$l.result = this.baseColor.rgb;\r\n // Transmission shadow. On the PCSS path the shadow uses implicit\r\n // derivatives (dpdx) inside the impl; WGSL requires those in uniform\r\n // control flow, so it is computed here rather than inside the\r\n // profile-active branch below (a per-pixel, non-uniform branch). On the\r\n // shadow-mask path the value is a single texture fetch (no PCSS).\r\n this.$l.transmissionShadowRaw = pb.float(1);\r\n this.$l.transmissionShadow = pb.float(1);\r\n if (pcssEnabled) {\r\n this.$l.shadowNormalWS = this.decodeNormal(this.uv);\r\n this.$l.shadowViewPos = this.reconstructViewPos(this.uv, this.depth01);\r\n this.$l.shadowWorldPos = pb.mul(this.invViewMatrix, pb.vec4(this.shadowViewPos, 1)).xyz;\r\n this.$l.shadowSunDirWS = this.calculateMainLightDirection(\r\n this.shadowWorldPos,\r\n this.mainLightType,\r\n this.mainLightPosRange,\r\n this.mainLightDirCutoff,\r\n this.sunDir\r\n );\r\n this.transmissionShadowRaw = this.calculateTransmissionShadow(\r\n this.shadowWorldPos,\r\n this.depth01,\r\n pb.clamp(pb.abs(pb.dot(this.shadowNormalWS, this.shadowSunDirWS)), 0, 1)\r\n );\r\n this.transmissionShadow = this.transmissionShadowRaw;\r\n } else if (useShadowMask) {\r\n // The mask already holds the identical shadow (same PCSS + distance\r\n // fade + shadowStrength) rendered by the ShadowMaskPass; read the\r\n // combine light's channel. Sample by screen UV, matching how the\r\n // other screen-space inputs (color/depth) are sampled above.\r\n this.transmissionShadowRaw = pb.dot(\r\n pb.textureArraySampleLevel(this.Z_UniformShadowMask, this.uv, this.shadowMaskLayer, 0),\r\n this.shadowMaskChannel\r\n );\r\n this.transmissionShadow = this.transmissionShadowRaw;\r\n }\r\n this.$if(\r\n pb.and(\r\n pb.and(\r\n pb.and(pb.greaterThan(this.profileStrength, 1e-4), pb.greaterThan(this.profileSlot, 0)),\r\n this.profileActive\r\n ),\r\n pb.lessThan(this.depth01, 1)\r\n ),\r\n function () {\r\n this.$l.widthStrength = pb.clamp(this.param.g, 0, 0.999);\r\n this.$l.profileSettingsA = this.readProfileSettingsA(this.profileSlot);\r\n this.$l.profileTransmissionTint = this.readProfileTransmissionTint(this.profileSlot);\r\n this.$l.profileSettingsB = this.readProfileSettingsB(this.profileSlot);\r\n this.$l.profileSpecularSettings = this.readProfileSpecularSettings(this.profileSlot);\r\n this.$l.profileWorldScale = pb.clamp(\r\n this.profileSettingsA.x,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileBoundaryBleed = pb.clamp(this.profileSettingsA.y, 0, 1);\r\n this.$l.profileNormalScale = pb.clamp(\r\n this.profileSettingsA.z,\r\n 0,\r\n SSS._profileNormalScaleEncodeMax\r\n );\r\n this.$l.profileDistribution = pb.clamp(this.profileSettingsA.w, 0, 1);\r\n this.$l.profileExtinctionScale = pb.clamp(\r\n this.profileSettingsB.x,\r\n 0,\r\n SSS._profileExtinctionEncodeMax\r\n );\r\n this.$l.profileScatterScale = pb.clamp(\r\n this.profileSettingsB.y,\r\n 0.05,\r\n SSS._profileWorldScaleEncodeMax\r\n );\r\n this.$l.profileStrengthScale = pb.clamp(this.profileSettingsB.z, 0.05, 2);\r\n this.$l.profileSpecularSoftness = pb.clamp(this.profileSpecularSettings.x, 0, 1);\r\n this.$l.profileSpecularRadius = pb.clamp(\r\n this.profileSpecularSettings.y,\r\n 0,\r\n SSS._profileSpecularRadiusEncodeMax\r\n );\r\n this.$l.profileWorldScaleNorm = pb.clamp(\r\n pb.div(this.profileWorldScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileScatterScaleNorm = pb.clamp(\r\n pb.div(this.profileScatterScale, SSS._profileWorldScaleEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileStrengthNorm = pb.clamp(pb.mul(this.profileStrengthScale, 0.5), 0, 1);\r\n this.$l.extinctionNorm = pb.clamp(\r\n pb.div(this.profileExtinctionScale, SSS._profileExtinctionEncodeMax),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileRadius = pb.mul(\r\n this.readProfileRadius(this.profileSlot),\r\n this.profileWorldScale,\r\n pb.mix(0.78, 1.42, this.profileScatterScaleNorm),\r\n pb.mix(0.92, 1.08, this.profileStrengthNorm)\r\n );\r\n this.$l.profileFalloff = this.readProfileFalloff(this.profileSlot);\r\n this.$l.maxProfileRadius = pb.max(this.max3(this.profileRadius), 1e-4);\r\n this.$l.radiusTint = pb.div(this.profileRadius, this.maxProfileRadius);\r\n this.$l.avgFalloff = pb.mul(\r\n pb.add(this.profileFalloff.x, pb.add(this.profileFalloff.y, this.profileFalloff.z)),\r\n 0.3333333\r\n );\r\n this.$l.profileSpread = pb.clamp(\r\n pb.div(this.maxProfileRadius, pb.add(this.maxProfileRadius, 0.65)),\r\n 0,\r\n 1\r\n );\r\n this.$l.profileDiffusionSoftness = pb.clamp(\r\n pb.add(\r\n pb.add(0.32, pb.mul(this.profileSpread, 0.34)),\r\n pb.add(pb.mul(this.profileDistribution, 0.18), pb.mul(this.profileStrengthNorm, 0.2))\r\n ),\r\n 0.18,\r\n 1\r\n );\r\n this.$l.profileEnergyScale = pb.clamp(\r\n pb.mul(\r\n pb.add(\r\n pb.add(0.52, pb.mul(this.profileScatterScaleNorm, 0.42)),\r\n pb.mul(this.profileStrengthNorm, 0.28)\r\n ),\r\n pb.add(0.9, pb.mul(this.profileWorldScaleNorm, 0.16))\r\n ),\r\n 0.45,\r\n 1.55\r\n );\r\n this.$l.profileTransmissionScale = pb.clamp(\r\n pb.mul(\r\n pb.add(\r\n pb.add(0.44, pb.mul(this.profileScatterScaleNorm, 0.36)),\r\n pb.add(pb.mul(this.profileStrengthNorm, 0.26), pb.mul(this.profileBoundaryBleed, 0.08))\r\n ),\r\n pb.mix(1.1, 0.72, this.extinctionNorm)\r\n ),\r\n 0.28,\r\n 1.35\r\n );\r\n this.$l.profileTintBase = pb.div(\r\n pb.max(\r\n pb.mul(\r\n pb.pow(this.profileFalloff, pb.vec3(0.8)),\r\n pb.mix(pb.vec3(0.72), pb.vec3(1.35), this.radiusTint)\r\n ),\r\n pb.vec3(1e-4)\r\n ),\r\n pb.max(\r\n this.max3(\r\n pb.mul(\r\n pb.pow(this.profileFalloff, pb.vec3(0.8)),\r\n pb.mix(pb.vec3(0.72), pb.vec3(1.35), this.radiusTint)\r\n )\r\n ),\r\n 1e-4\r\n )\r\n );\r\n this.$l.presetTintBias = this.readProfileTintBias(this.profileSlot);\r\n this.$l.presetResponse = this.readProfilePresetResponse(this.profileSlot);\r\n this.$l.presetFrontScatter = this.presetResponse.x;\r\n this.$l.presetSoftness = this.presetResponse.y;\r\n this.$l.presetTransmissionBoost = this.presetResponse.w;\r\n this.$l.presetTint = pb.mul(\r\n this.profileTintBase,\r\n this.presetTintBias,\r\n pb.mix(pb.vec3(1), this.profileTransmissionTint, pb.mul(this.profileBoundaryBleed, 0.22))\r\n );\r\n this.$l.tint = pb.div(\r\n pb.max(this.presetTint, pb.vec3(1e-4)),\r\n pb.max(this.max3(this.presetTint), 1e-4)\r\n );\r\n this.$l.baseLuma = pb.dot(this.baseColor.rgb, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.shadowMask = pb.clamp(pb.sub(0.82, this.baseLuma), 0, 1);\r\n this.$l.radiusResponse = pb.clamp(\r\n pb.add(\r\n pb.mul(this.widthStrength, 0.9),\r\n pb.mul(this.profileSpread, 0.62),\r\n pb.add(\r\n pb.mul(this.profileDiffusionSoftness, 0.18),\r\n pb.add(pb.mul(this.avgFalloff, 0.16), pb.mul(this.profileEnergyScale, 0.08))\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.normalWS = this.decodeNormal(this.uv);\r\n this.$l.viewPos = this.reconstructViewPos(this.uv, this.depth01);\r\n this.$l.worldPos = pb.mul(this.invViewMatrix, pb.vec4(this.viewPos, 1)).xyz;\r\n this.$l.sunDirWS = this.calculateMainLightDirection(\r\n this.worldPos,\r\n this.mainLightType,\r\n this.mainLightPosRange,\r\n this.mainLightDirCutoff,\r\n this.sunDir\r\n );\r\n this.$l.mainLightAttenuation = this.calculateMainLightAttenuation(\r\n this.worldPos,\r\n this.mainLightType,\r\n this.mainLightPosRange,\r\n this.mainLightDirCutoff\r\n );\r\n this.$l.frontLit = pb.mul(pb.dot(this.normalWS, this.sunDirWS), this.mainLightAttenuation);\r\n // transmissionShadowRaw/transmissionShadow were computed in uniform\r\n // control flow at the top of main (PCSS sampling uses dpdx, which\r\n // WGSL forbids inside this non-uniform branch); reuse them here.\r\n this.transmissionShadow = this.transmissionShadowRaw;\r\n this.$l.transmissionLightAttenuation = pb.mul(\r\n this.mainLightAttenuation,\r\n this.transmissionShadow\r\n );\r\n this.$l.thinnessComponents = this.estimateScreenThinnessComponents(\r\n this.uv,\r\n this.depth01,\r\n this.normalWS,\r\n this.radiusResponse\r\n );\r\n this.$l.depthThinness = this.thinnessComponents.x;\r\n this.$l.curvatureThinness = this.thinnessComponents.y;\r\n this.$l.screenThinness = this.thinnessComponents.z;\r\n this.$l.backLightFacing = pb.clamp(pb.dot(pb.neg(this.normalWS), this.sunDirWS), 0, 1);\r\n this.$l.backLightGate = pb.pow(this.backLightFacing, pb.max(this.transmissionPower, 0.1));\r\n this.$l.automaticThinMask = pb.mul(\r\n pb.smoothStep(0.24, 0.72, this.screenThinness),\r\n pb.mix(0.58, 1, this.backLightGate)\r\n );\r\n this.materialTransmissionMask = this.$choice(\r\n this.automaticTransmission,\r\n this.automaticThinMask,\r\n this.materialTransmissionMask\r\n );\r\n this.debugTransmissionMask = this.materialTransmissionMask;\r\n this.debugThinness = this.screenThinness;\r\n this.debugThinnessLayers = pb.vec3(this.depthThinness, this.curvatureThinness, 0);\r\n this.$l.wrappedFront = pb.smoothStep(\r\n pb.add(-0.32, pb.mul(this.profileSpread, 0.08)),\r\n pb.add(0.42, pb.mul(this.radiusResponse, 0.16)),\r\n pb.add(this.frontLit, pb.mul(this.radiusResponse, 0.18))\r\n );\r\n this.$l.terminatorWrap = pb.clamp(\r\n pb.mul(\r\n pb.max(pb.sub(this.wrappedFront, pb.clamp(this.frontLit, 0, 1)), 0),\r\n pb.add(0.85, pb.mul(this.avgFalloff, 0.3), pb.mul(this.profileSpread, 0.22))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.surfaceScatterMask = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.shadowMask, 0.58), pb.mul(this.terminatorWrap, 0.82)),\r\n pb.add(\r\n pb.add(\r\n pb.mul(pb.clamp(pb.sub(1, pb.max(this.frontLit, 0)), 0, 1), 0.12),\r\n pb.mul(this.profileSpread, 0.06)\r\n ),\r\n pb.mul(\r\n this.screenThinness,\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.profileSpread, 0.08)),\r\n pb.mul(this.profileBoundaryBleed, 0.08)\r\n )\r\n )\r\n )\r\n ),\r\n 0.05,\r\n 1\r\n );\r\n this.$l.materialScatterBoost = pb.clamp(\r\n pb.add(\r\n pb.mul(pb.max(pb.sub(this.profileStrength, 0.9), 0), 0.72),\r\n pb.add(\r\n pb.mul(pb.max(pb.sub(this.widthStrength, 0.55), 0), 1.45),\r\n pb.add(\r\n pb.mul(pb.max(pb.sub(this.profileSpread, 0.58), 0), 0.42),\r\n pb.add(\r\n pb.mul(pb.sub(this.profileDistribution, 0.5), 0.28),\r\n pb.mul(this.profileStrengthNorm, 0.18)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.materialTransmissionResponse = pb.clamp(\r\n pb.mul(\r\n this.materialTransmissionMask,\r\n pb.add(\r\n pb.add(0.7, pb.mul(this.profileSpread, 0.14)),\r\n pb.add(\r\n pb.add(pb.mul(this.presetTransmissionBoost, 0.52), pb.mul(this.presetSoftness, 0.22)),\r\n pb.add(\r\n pb.mul(this.profileBoundaryBleed, 0.08),\r\n pb.add(\r\n pb.mul(pb.sub(1, this.extinctionNorm), 0.1),\r\n pb.mul(this.profileTransmissionScale, 0.14)\r\n )\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.materialTransmissionSoftness = pb.clamp(\r\n pb.add(\r\n pb.mul(this.materialTransmissionResponse, 0.42),\r\n pb.add(pb.mul(this.widthStrength, 0.08), pb.mul(this.profileSpread, 0.06))\r\n ),\r\n 0,\r\n 0.65\r\n );\r\n this.$l.materialThicknessField = pb.clamp(\r\n pb.add(\r\n pb.add(\r\n pb.mul(this.materialTransmissionResponse, 0.82),\r\n pb.mul(this.materialTransmissionSoftness, 0.28)\r\n ),\r\n pb.add(pb.mul(this.widthStrength, 0.06), pb.mul(this.profileSpread, 0.08))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.debugProfileEnergy = pb.clamp(\r\n pb.vec3(\r\n this.profileStrengthNorm,\r\n pb.div(this.profileEnergyScale, 1.55),\r\n this.materialScatterBoost\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.debugProfileTransmission = pb.clamp(\r\n pb.vec3(\r\n pb.div(this.profileTransmissionScale, 1.35),\r\n this.materialTransmissionResponse,\r\n this.materialThicknessField\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.debugProfileBoundary = pb.clamp(\r\n pb.vec3(\r\n this.profileBoundaryBleed,\r\n this.profileDiffusionSoftness,\r\n this.materialTransmissionSoftness\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.$l.edgeThinBoost = pb.clamp(\r\n pb.mul(this.screenThinness, pb.add(0.14, pb.mul(this.materialThicknessField, 0.22))),\r\n 0,\r\n 0.32\r\n );\r\n this.$l.curvatureThinBoost = pb.clamp(\r\n pb.mul(\r\n this.curvatureThinness,\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.materialThicknessField, 0.12)),\r\n pb.mul(pb.sub(this.profileNormalScale, 1), 0.08)\r\n )\r\n ),\r\n 0,\r\n 0.18\r\n );\r\n this.$l.scatterMask = pb.clamp(\r\n pb.add(\r\n this.surfaceScatterMask,\r\n pb.add(\r\n pb.add(pb.mul(this.materialScatterBoost, 0.28), this.presetFrontScatter),\r\n pb.add(\r\n pb.mul(\r\n pb.clamp(pb.sub(1, pb.max(this.frontLit, 0)), 0, 1),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.22), pb.mul(this.presetFrontScatter, 0.7))\r\n ),\r\n pb.mul(\r\n this.screenThinness,\r\n pb.add(0.12, pb.mul(this.presetSoftness, 0.08), pb.mul(this.presetFrontScatter, 0.08))\r\n ),\r\n pb.mul(this.materialTransmissionSoftness, 0.1)\r\n )\r\n )\r\n ),\r\n pb.add(\r\n pb.add(0.05, pb.mul(this.materialScatterBoost, 0.12)),\r\n pb.mul(this.presetFrontScatter, 0.3)\r\n ),\r\n 1\r\n );\r\n this.$l.scatterStrength = pb.clamp(\r\n pb.mul(\r\n pb.max(\r\n pb.mul(this.profileStrength, pb.mix(0.88, 1.24, this.profileStrengthNorm)),\r\n pb.mul(this.widthStrength, 0.45)\r\n ),\r\n this.sssStrength,\r\n this.profileEnergyScale,\r\n pb.add(\r\n pb.add(0.62, pb.mul(this.avgFalloff, 0.56)),\r\n pb.add(\r\n pb.add(pb.mul(this.profileSpread, 0.28), pb.mul(this.screenThinness, 0.18)),\r\n pb.add(\r\n pb.add(pb.mul(this.materialScatterBoost, 0.42), pb.mul(this.presetSoftness, 0.5)),\r\n pb.mul(this.materialTransmissionSoftness, 0.22)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n pb.add(\r\n pb.add(\r\n pb.add(1.05, pb.mul(this.materialScatterBoost, 1.1)),\r\n pb.add(pb.mul(this.presetSoftness, 0.8), pb.mul(this.profileEnergyScale, 0.24))\r\n ),\r\n pb.mul(this.screenThinness, 0.22)\r\n )\r\n );\r\n this.$l.blurred = pb.textureSampleLevel(this.blurTex, this.uv, 0).rgb;\r\n this.$l.roughness = pb.float(1);\r\n this.$l.specMask = pb.float(0.12);\r\n this.$if(pb.notEqual(this.hasRoughnessTex, 0), function () {\r\n this.roughness = this.roughnessInfo.a;\r\n this.specMask = pb.clamp(\r\n pb.mul(\r\n this.max3(this.roughnessInfo.rgb),\r\n pb.add(0.45, pb.mul(pb.sub(1, this.roughness), 0.75))\r\n ),\r\n 0,\r\n 1\r\n );\r\n });\r\n this.$if(pb.equal(this.hasDiffuseTex, 0), function () {\r\n this.$l.specularFallback = pb.mul(\r\n this.baseColor.rgb,\r\n pb.clamp(\r\n pb.add(\r\n pb.mul(this.specMask, pb.add(0.12, pb.mul(pb.sub(1, this.roughness), 0.28))),\r\n pb.mul(this.profileStrength, 0.06)\r\n ),\r\n 0,\r\n 0.5\r\n )\r\n );\r\n this.baseDiffuseColor = pb.max(pb.sub(this.baseColor.rgb, this.specularFallback), pb.vec3(0));\r\n });\r\n this.$l.baseDiffuseSafe = pb.max(this.baseDiffuseColor, pb.vec3(1e-4));\r\n this.$l.baseDiffuseLuma = pb.dot(this.baseDiffuseSafe, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.epidermalMix = pb.clamp(\r\n pb.add(\r\n pb.add(0.24, pb.mul(this.avgFalloff, 0.08)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.1), pb.mul(this.presetSoftness, 0.08))\r\n ),\r\n 0.18,\r\n 0.48\r\n );\r\n this.$l.deepMix = pb.clamp(\r\n pb.add(\r\n pb.add(0.52, pb.mul(this.profileSpread, 0.08)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.12), pb.mul(this.presetTransmissionBoost, 0.08))\r\n ),\r\n 0.42,\r\n 0.72\r\n );\r\n this.$l.skinTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n this.baseDiffuseSafe,\r\n pb.mul(\r\n this.baseDiffuseSafe,\r\n pb.mix(this.tint, this.profileTransmissionTint, pb.mul(this.profileBoundaryBleed, 0.2))\r\n ),\r\n this.epidermalMix\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.deepTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n this.skinTint,\r\n pb.mul(\r\n this.tint,\r\n pb.mix(\r\n pb.vec3(1),\r\n this.profileTransmissionTint,\r\n pb.clamp(\r\n pb.add(\r\n pb.mul(this.profileBoundaryBleed, 0.35),\r\n pb.mul(\r\n pb.sub(\r\n 1,\r\n pb.clamp(\r\n pb.div(this.profileExtinctionScale, SSS._profileExtinctionEncodeMax),\r\n 0,\r\n 1\r\n )\r\n ),\r\n 0.28\r\n )\r\n ),\r\n 0,\r\n 0.8\r\n )\r\n )\r\n ),\r\n this.deepMix\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.baseSpecular = pb.max(pb.sub(this.baseColor.rgb, this.baseDiffuseColor), pb.vec3(0));\r\n this.$l.softenedSpecular = this.baseSpecular;\r\n this.$if(pb.notEqual(this.hasDiffuseTex, 0), function () {\r\n // The wide SSS pass contains diffuse lighting only. Preserve broad\r\n // highlights, but diffuse the pixel-scale normal detail that would\r\n // otherwise be added back unchanged with the specular component.\r\n this.$l.specularRadius = pb.clamp(\r\n pb.mul(this.profileSpecularRadius, pb.mix(0.9, 1.1, this.radiusResponse)),\r\n 0,\r\n pb.mul(SSS._profileSpecularRadiusEncodeMax, 1.1)\r\n );\r\n this.$l.specularTexel = pb.div(pb.vec2(this.specularRadius), this.targetSize.xy);\r\n this.$l.centerLogDepth = pb.log(pb.add(pb.mul(this.depth01, this.cameraNearFar.y), 1));\r\n this.$l.specularSum = this.baseSpecular;\r\n this.$l.specularWeight = pb.float(1);\r\n const sampleSpecularAt = (offsetX: number, offsetY: number) => {\r\n this.$l.specularNeighbor = this.sampleCompatibleSpecular(\r\n pb.add(this.uv, pb.mul(this.specularTexel, pb.vec2(offsetX, offsetY))),\r\n this.profileSlot,\r\n this.centerLogDepth\r\n );\r\n this.specularSum = pb.add(\r\n this.specularSum,\r\n pb.mul(this.specularNeighbor.rgb, this.specularNeighbor.a, 0.72)\r\n );\r\n this.specularWeight = pb.add(this.specularWeight, pb.mul(this.specularNeighbor.a, 0.72));\r\n };\r\n sampleSpecularAt(1, 0);\r\n sampleSpecularAt(-1, 0);\r\n sampleSpecularAt(0, 1);\r\n sampleSpecularAt(0, -1);\r\n this.$l.filteredSpecular = pb.div(this.specularSum, pb.max(this.specularWeight, 1));\r\n this.$l.specularSoftnessBase = pb.clamp(\r\n pb.mul(this.profileSpecularSoftness, this.profileStrength, this.sssStrength),\r\n 0,\r\n 0.95\r\n );\r\n this.$l.specularSoftness = pb.sub(\r\n 1,\r\n pb.mul(pb.sub(1, this.specularSoftnessBase), pb.sub(1, this.specularSoftnessBase))\r\n );\r\n this.softenedSpecular = pb.mix(\r\n this.baseSpecular,\r\n this.filteredSpecular,\r\n this.specularSoftness\r\n );\r\n });\r\n this.$l.scatterBlendBase = pb.clamp(\r\n pb.mul(\r\n this.profileStrength,\r\n this.sssStrength,\r\n pb.add(0.28, pb.add(pb.mul(this.radiusResponse, 0.42), pb.mul(this.widthStrength, 0.3))),\r\n pb.mix(0.72, 1, this.scatterMask)\r\n ),\r\n 0,\r\n 0.92\r\n );\r\n // Diffusion should visibly suppress high-frequency normal lighting.\r\n // A squared complement keeps low strengths controllable while making\r\n // a fully enabled skin profile approach the blurred diffuse result.\r\n this.$l.scatterBlend = pb.clamp(\r\n pb.sub(1, pb.mul(pb.sub(1, this.scatterBlendBase), pb.sub(1, this.scatterBlendBase))),\r\n 0,\r\n 0.97\r\n );\r\n this.$l.blurredLuma = pb.dot(this.blurred, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.profileBlurred = this.blurred;\r\n this.$l.blurredClamped = this.profileBlurred;\r\n this.$l.scattered = pb.mix(this.baseDiffuseColor, this.blurredClamped, this.scatterBlend);\r\n this.$l.multiScatterLift = pb.mul(\r\n pb.max(pb.sub(this.blurredClamped, this.baseDiffuseColor), pb.vec3(0)),\r\n this.scatterStrength,\r\n this.multiScatter,\r\n this.scatterMask,\r\n pb.add(\r\n 0.08,\r\n pb.mul(\r\n this.radiusResponse,\r\n pb.add(\r\n pb.add(0.09, pb.mul(this.materialScatterBoost, 0.08)),\r\n pb.add(\r\n pb.mul(this.presetSoftness, 0.06),\r\n pb.add(\r\n pb.mul(pb.sub(this.profileScatterScale, 1), 0.04),\r\n pb.mul(this.profileDiffusionSoftness, 0.03)\r\n )\r\n )\r\n )\r\n )\r\n )\r\n );\r\n this.$l.scatteredDiffuse = pb.add(this.scattered, this.multiScatterLift);\r\n this.$l.transmissionBudget = pb.mul(\r\n this.deepTint,\r\n this.scatterStrength,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.profileTransmissionScale,\r\n pb.add(\r\n pb.add(\r\n pb.add(0.12, pb.mul(this.radiusResponse, 0.2)),\r\n pb.mul(this.materialTransmissionSoftness, 0.2)\r\n ),\r\n pb.add(\r\n pb.mul(this.avgFalloff, 0.12),\r\n pb.add(\r\n pb.mul(this.profileSpread, 0.12),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.12),\r\n pb.mul(this.presetTransmissionBoost, 0.22)\r\n )\r\n )\r\n )\r\n ),\r\n pb.mix(0.82, 1.18, this.profileScatterScaleNorm)\r\n );\r\n this.$l.diffuseHeadroom = pb.mul(\r\n this.transmissionBudget,\r\n pb.add(\r\n pb.add(1.65, pb.mul(this.materialTransmissionResponse, 0.9)),\r\n pb.add(\r\n pb.add(pb.mul(this.materialTransmissionSoftness, 0.55), pb.mul(this.profileSpread, 0.2)),\r\n pb.mul(this.profileTransmissionScale, 0.22)\r\n )\r\n )\r\n );\r\n this.result = pb.add(this.softenedSpecular, this.scatteredDiffuse);\r\n this.$if(pb.greaterThan(this.transmissionStrength, 0), function () {\r\n this.$l.viewDirVS = pb.normalize(pb.neg(this.viewPos));\r\n this.$l.viewDirWS = pb.normalize(pb.mul(this.invViewMatrix, pb.vec4(this.viewDirVS, 0)).xyz);\r\n this.$l.rim = pb.pow(\r\n pb.clamp(pb.sub(1, pb.abs(pb.dot(this.normalWS, this.viewDirWS))), 0, 1),\r\n pb.max(this.transmissionPower, 0.1)\r\n );\r\n this.$l.transmissionShadowSoftness = pb.clamp(\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.profileDiffusionSoftness, 0.18)),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.18),\r\n pb.add(pb.mul(this.screenThinness, 0.12), pb.mul(this.profileBoundaryBleed, 0.08))\r\n )\r\n ),\r\n 0,\r\n 0.6\r\n );\r\n this.$l.transmissionShadowFloor = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.06), pb.mul(this.edgeThinBoost, 0.48)),\r\n pb.add(\r\n pb.mul(this.curvatureThinBoost, 0.32),\r\n pb.add(\r\n pb.mul(this.profileBoundaryBleed, 0.06),\r\n pb.mul(this.profileTransmissionScale, 0.08)\r\n )\r\n )\r\n ),\r\n 0,\r\n 0.34\r\n );\r\n this.transmissionShadow = pb.clamp(\r\n pb.max(\r\n pb.mix(\r\n this.transmissionShadowRaw,\r\n pb.pow(pb.clamp(this.transmissionShadowRaw, 1e-4, 1), 0.7),\r\n this.transmissionShadowSoftness\r\n ),\r\n this.transmissionShadowFloor\r\n ),\r\n 0.04,\r\n 1\r\n );\r\n this.transmissionLightAttenuation = pb.mul(\r\n this.mainLightAttenuation,\r\n this.transmissionShadow\r\n );\r\n this.debugTransmissionShadow = this.transmissionShadow;\r\n this.debugProfileBoundary = pb.clamp(\r\n pb.vec3(\r\n this.profileBoundaryBleed,\r\n this.transmissionShadowSoftness,\r\n this.transmissionShadowFloor\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n this.debugProfileTransmission = pb.clamp(\r\n pb.vec3(\r\n pb.div(this.profileTransmissionScale, 1.35),\r\n this.materialTransmissionResponse,\r\n this.transmissionShadow\r\n ),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n );\r\n // Keep warm thin-shell lighting on the back-facing side of the surface.\r\n this.$l.backLit = pb.mul(this.backLightGate, this.transmissionLightAttenuation);\r\n this.$l.thicknessBackScatter = pb.clamp(\r\n pb.mul(this.backLit, pb.add(0.82, pb.mul(this.rim, 0.18))),\r\n 0,\r\n 1\r\n );\r\n this.$l.thinPotential = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.78), this.edgeThinBoost),\r\n pb.add(\r\n this.curvatureThinBoost,\r\n pb.mul(\r\n pb.sqrt(pb.max(pb.mul(this.depthThinness, this.curvatureThinness), 0)),\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.profileSpread, 0.06)),\r\n pb.mul(pb.sub(this.profileDistribution, 0.5), 0.06)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.transmissionFocus = pb.clamp(\r\n pb.mul(\r\n pb.add(pb.mul(this.materialThicknessField, 0.72), pb.mul(this.thinPotential, 0.38)),\r\n pb.add(pb.add(0.22, pb.mul(this.thicknessBackScatter, 0.72)), pb.mul(this.backLit, 0.08))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.thinRegion = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.86), pb.mul(this.transmissionFocus, 0.74)),\r\n pb.add(\r\n pb.add(pb.mul(this.edgeThinBoost, 0.9), pb.mul(this.curvatureThinBoost, 0.5)),\r\n pb.add(pb.mul(this.backLit, 0.1), pb.mul(this.profileSpread, 0.05))\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.debugBlueSeed = pb.clamp(\r\n pb.mul(\r\n this.materialThicknessField,\r\n pb.max(\r\n pb.mul(this.thinRegion, pb.add(0.72, pb.mul(this.backLit, 0.18))),\r\n pb.mul(this.curvatureThinness, pb.add(0.34, pb.mul(this.materialThicknessField, 0.22)))\r\n ),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(pb.add(0.16, pb.mul(this.backLit, 0.26)), pb.mul(this.edgeThinBoost, 0.85)),\r\n pb.add(\r\n pb.mul(this.curvatureThinBoost, 0.4),\r\n pb.mul(pb.sub(1, this.depthThinness), 0.18)\r\n )\r\n ),\r\n 0,\r\n 1\r\n ),\r\n pb.add(0.72, pb.mul(this.profileSpread, 0.08))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.debugBlueDisplay = pb.pow(\r\n pb.clamp(pb.mul(pb.clamp(pb.sub(this.debugBlueSeed, 0.015), 0, 1), 2.15), 0, 1),\r\n 0.72\r\n );\r\n this.$l.debugGreenDisplay = pb.clamp(\r\n pb.mul(\r\n this.curvatureThinness,\r\n pb.sub(1, pb.mul(this.depthThinness, 0.78)),\r\n pb.sub(1, pb.mul(this.debugBlueDisplay, 0.26))\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.debugThinnessLayers = pb.vec3(\r\n pb.clamp(\r\n pb.mul(\r\n pb.clamp(pb.sub(this.depthThinness, pb.mul(this.curvatureThinness, 0.16)), 0, 1),\r\n pb.sub(1, pb.mul(this.debugBlueDisplay, 0.98))\r\n ),\r\n 0,\r\n 1\r\n ),\r\n this.debugGreenDisplay,\r\n this.debugBlueDisplay\r\n );\r\n this.$l.sunColor = pb.min(\r\n pb.mul(\r\n this.sunColorIntensity.rgb,\r\n this.sunColorIntensity.a,\r\n this.transmissionLightAttenuation\r\n ),\r\n pb.vec3(4)\r\n );\r\n this.$l.capturedTransmission = pb.mul(\r\n pb.mix(\r\n this.baseTransmissionColor,\r\n pb.mul(this.baseTransmissionColor, this.deepTint, this.profileTransmissionTint),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.16, pb.mul(this.avgFalloff, 0.12)),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.1),\r\n pb.mul(this.presetTransmissionBoost, 0.18)\r\n )\r\n ),\r\n 0,\r\n 0.45\r\n )\r\n ),\r\n pb.mix(1.08, 0.64, this.extinctionNorm),\r\n this.materialTransmissionResponse,\r\n pb.sub(1, pb.mul(this.specMask, 0.18))\r\n );\r\n this.$l.capturedTransmissionStrength = this.max3(this.capturedTransmission);\r\n this.$l.profileTransmission = pb.mul(\r\n this.capturedTransmission,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(0.88, pb.mul(this.radiusResponse, 0.18)),\r\n pb.add(\r\n pb.add(pb.mul(this.profileSpread, 0.08), pb.mul(this.thinRegion, 0.12)),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.12),\r\n pb.mul(this.presetTransmissionBoost, 0.18)\r\n )\r\n )\r\n ),\r\n pb.add(\r\n pb.add(0.26, pb.mul(this.thicknessBackScatter, 0.48)),\r\n pb.add(pb.mul(this.materialThicknessField, 0.22), pb.mul(this.thinRegion, 0.08))\r\n )\r\n );\r\n this.$l.backScatterCore = pb.mul(\r\n this.deepTint,\r\n pb.max(this.blurredLuma, pb.mul(this.baseDiffuseLuma, 0.3)),\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(\r\n pb.add(\r\n pb.add(0.12, pb.mul(this.thicknessBackScatter, 0.34)),\r\n pb.add(pb.mul(this.materialThicknessField, 0.22), pb.mul(this.thinRegion, 0.12))\r\n ),\r\n pb.mul(this.materialTransmissionSoftness, 0.14)\r\n ),\r\n pb.add(pb.mul(this.radiusResponse, 0.08), pb.mul(this.presetTransmissionBoost, 0.12))\r\n ),\r\n pb.add(\r\n pb.add(0.26, pb.mul(this.thicknessBackScatter, 0.52)),\r\n pb.add(pb.mul(this.materialThicknessField, 0.22), pb.mul(this.thinRegion, 0.12))\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.35))\r\n );\r\n this.$l.rimFallback = pb.mul(\r\n this.rim,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n this.radiusResponse,\r\n pb.add(\r\n pb.add(\r\n pb.add(0.028, pb.mul(this.avgFalloff, 0.04)),\r\n pb.mul(this.materialTransmissionSoftness, 0.03)\r\n ),\r\n pb.add(\r\n pb.mul(this.profileSpread, 0.03),\r\n pb.add(\r\n pb.mul(this.materialScatterBoost, 0.04),\r\n pb.mul(this.presetTransmissionBoost, 0.06)\r\n )\r\n )\r\n )\r\n );\r\n this.$l.warmTransmissionTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n pb.mix(this.deepTint, this.profileTransmissionTint, 0.35),\r\n pb.mul(this.profileTransmissionTint, pb.vec3(1.0, 0.36, 0.24)),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.18, pb.mul(this.presetTransmissionBoost, 0.26)),\r\n pb.add(\r\n pb.mul(this.materialThicknessField, 0.24),\r\n pb.mul(this.thicknessBackScatter, 0.22)\r\n )\r\n ),\r\n 0,\r\n 0.72\r\n )\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.warmTransmissionStrength = pb.clamp(\r\n pb.mul(\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.materialThicknessField, 0.2)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.26),\r\n pb.mul(this.presetTransmissionBoost, 0.12)\r\n )\r\n ),\r\n pb.mix(1.06, 0.72, this.extinctionNorm)\r\n ),\r\n 0.06,\r\n 0.48\r\n );\r\n this.$l.broadTransmission = pb.mul(\r\n this.warmTransmissionTint,\r\n this.sunColor,\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n pb.add(\r\n pb.add(0.1, pb.mul(this.thicknessBackScatter, 0.42)),\r\n pb.add(pb.mul(this.materialTransmissionSoftness, 0.12), pb.mul(this.thinRegion, 0.08))\r\n ),\r\n pb.add(\r\n pb.add(0.24, pb.mul(this.materialThicknessField, 0.26)),\r\n pb.mul(this.profileSpread, 0.08)\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.3))\r\n );\r\n this.$l.subdermalTransmission = pb.mul(\r\n this.warmTransmissionTint,\r\n pb.max(this.baseDiffuseLuma, pb.mul(this.blurredLuma, 0.8)),\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n this.warmTransmissionStrength,\r\n pb.add(\r\n pb.add(0.18, pb.mul(this.thicknessBackScatter, 0.38)),\r\n pb.add(pb.mul(this.thinRegion, 0.12), pb.mul(this.materialTransmissionSoftness, 0.08))\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.28))\r\n );\r\n this.$l.thin = pb.mul(\r\n this.thicknessBackScatter,\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n pb.add(\r\n this.thicknessBackScatter,\r\n pb.add(\r\n pb.mul(this.thinRegion, pb.add(0.18, pb.mul(this.presetTransmissionBoost, 0.16))),\r\n pb.mul(\r\n this.widthStrength,\r\n pb.add(\r\n pb.add(0.14, pb.mul(this.materialScatterBoost, 0.08)),\r\n pb.mul(this.presetTransmissionBoost, 0.08)\r\n )\r\n ),\r\n pb.mul(\r\n this.profileSpread,\r\n pb.add(\r\n pb.add(0.08, pb.mul(this.materialScatterBoost, 0.06)),\r\n pb.mul(this.presetTransmissionBoost, 0.08)\r\n )\r\n )\r\n )\r\n ),\r\n this.transmissionStrength,\r\n this.scatterStrength,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(0.16, pb.mul(this.avgFalloff, 0.34)),\r\n pb.add(\r\n pb.add(pb.mul(this.profileSpread, 0.18), pb.mul(this.thinRegion, 0.22)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.12), this.presetTransmissionBoost)\r\n )\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.42))\r\n );\r\n this.$l.transmissionColor = pb.add(\r\n pb.add(\r\n pb.add(pb.add(this.profileTransmission, this.backScatterCore), this.broadTransmission),\r\n this.subdermalTransmission\r\n ),\r\n pb.mul(\r\n pb.add(\r\n pb.mul(this.warmTransmissionTint, this.sunColor, this.thin),\r\n pb.mul(this.skinTint, this.rimFallback)\r\n ),\r\n this.$choice(\r\n pb.equal(this.hasTransmissionTex, 0),\r\n 1,\r\n pb.clamp(\r\n pb.add(\r\n 0.08,\r\n pb.mul(\r\n pb.clamp(pb.sub(1, pb.mul(this.capturedTransmissionStrength, 2.4)), 0, 1),\r\n 0.22\r\n )\r\n ),\r\n 0.08,\r\n 0.3\r\n )\r\n )\r\n )\r\n );\r\n this.$l.transmissionHeadroom = pb.add(\r\n this.diffuseHeadroom,\r\n pb.mul(\r\n this.warmTransmissionTint,\r\n this.materialThicknessField,\r\n this.materialTransmissionResponse,\r\n this.transmissionStrength,\r\n pb.add(\r\n pb.add(0.04, pb.mul(this.thicknessBackScatter, 0.12)),\r\n pb.mul(this.thinRegion, 0.06)\r\n )\r\n )\r\n );\r\n this.$l.transmittedDiffuse = pb.min(this.transmissionColor, this.transmissionHeadroom);\r\n this.$l.transmittedDiffuseLuma = pb.dot(\r\n this.transmittedDiffuse,\r\n pb.vec3(0.2126, 0.7152, 0.0722)\r\n );\r\n this.$l.visibleTransmissionMask = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.materialThicknessField, 0.72), pb.mul(this.thinRegion, 0.34)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.28),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.08),\r\n pb.add(\r\n pb.mul(this.profileTransmissionScale, 0.12),\r\n pb.mul(this.profileDiffusionSoftness, 0.06)\r\n )\r\n )\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.visibleTransmissionChroma = pb.clamp(\r\n pb.add(\r\n pb.add(0.66, pb.mul(this.visibleTransmissionMask, 0.32)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.24),\r\n pb.mul(this.presetTransmissionBoost, 0.14)\r\n )\r\n ),\r\n 0.52,\r\n 1\r\n );\r\n this.$l.visibleTransmissionTint = pb.normalize(\r\n pb.max(\r\n pb.mix(\r\n this.warmTransmissionTint,\r\n this.profileTransmissionTint,\r\n pb.clamp(\r\n pb.add(\r\n pb.mul(this.visibleTransmissionMask, 0.24),\r\n pb.mul(this.thicknessBackScatter, 0.2)\r\n ),\r\n 0,\r\n 0.6\r\n )\r\n ),\r\n pb.vec3(1e-4)\r\n )\r\n );\r\n this.$l.visibleTransmissionWarm = pb.mix(\r\n this.transmittedDiffuse,\r\n pb.mul(this.visibleTransmissionTint, this.transmittedDiffuseLuma),\r\n this.visibleTransmissionChroma\r\n );\r\n this.$l.visibleTransmissionGain = pb.clamp(\r\n pb.add(\r\n pb.add(0.78, pb.mul(this.visibleTransmissionMask, 0.72)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 0.48),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.18),\r\n pb.mul(this.profileTransmissionScale, 0.24)\r\n )\r\n )\r\n ),\r\n 0.7,\r\n 2.4\r\n );\r\n this.$l.visibleTransmissionHeadroom = pb.add(\r\n pb.mul(\r\n this.transmissionHeadroom,\r\n pb.add(\r\n pb.add(2.15, pb.mul(this.visibleTransmissionMask, 1.1)),\r\n pb.mul(this.thicknessBackScatter, 0.72)\r\n )\r\n ),\r\n pb.mul(\r\n this.visibleTransmissionTint,\r\n this.visibleTransmissionMask,\r\n this.transmittedDiffuseLuma,\r\n pb.add(\r\n pb.add(0.12, pb.mul(this.thicknessBackScatter, 0.18)),\r\n pb.mul(this.materialThicknessField, 0.14)\r\n )\r\n )\r\n );\r\n this.$l.visibleTransmission = pb.min(\r\n pb.mul(\r\n this.visibleTransmissionWarm,\r\n this.visibleTransmissionGain,\r\n this.transmissionShadow,\r\n this.backLightGate\r\n ),\r\n this.visibleTransmissionHeadroom\r\n );\r\n this.debugThinLighting = this.visibleTransmission;\r\n this.result = pb.add(this.result, this.visibleTransmission);\r\n });\r\n }\r\n );\r\n this.$if(pb.notEqual(this.debugView, 0), function () {\r\n this.$if(pb.lessThan(this.depth01, 1), function () {\r\n this.$if(pb.equal(this.debugView, 1), function () {\r\n this.result = this.$choice(this.profileActive, pb.vec3(this.profileStrength), pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 2), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.vec3(this.scatterSoftnessAuthor),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 3), function () {\r\n this.$l.debugSlot = this.readProfileSlot(this.param);\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.clamp(\r\n pb.div(this.readProfileRadius(this.debugSlot), pb.vec3(8)),\r\n pb.vec3(0),\r\n pb.vec3(1)\r\n ),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 4), function () {\r\n this.$l.debugSlot = this.readProfileSlot(this.param);\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.clamp(this.readProfileFalloff(this.debugSlot), pb.vec3(0), pb.vec3(1)),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 5), function () {\r\n this.result = this.$choice(this.profileActive, this.debugProfileEnergy, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 6), function () {\r\n this.result = this.$choice(this.profileActive, this.debugProfileTransmission, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 7), function () {\r\n this.result = this.$choice(this.profileActive, this.debugProfileBoundary, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 8), function () {\r\n this.result = this.baseDiffuseColor;\r\n })\r\n .$elseif(pb.equal(this.debugView, 9), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.textureSampleLevel(this.blurTex, this.uv, 0).rgb,\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 10), function () {\r\n this.result = this.$choice(this.profileActive, this.debugThinnessLayers, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 11), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.vec3(\r\n this.debugTransmissionMask,\r\n this.debugTransmissionMask,\r\n this.debugTransmissionMask\r\n ),\r\n pb.vec3(0)\r\n );\r\n })\r\n .$elseif(pb.equal(this.debugView, 12), function () {\r\n this.result = this.$choice(this.profileActive, this.debugThinLighting, pb.vec3(0));\r\n })\r\n .$elseif(pb.equal(this.debugView, 13), function () {\r\n this.result = this.$choice(\r\n this.profileActive,\r\n pb.vec3(\r\n this.debugTransmissionShadow,\r\n this.debugTransmissionShadow,\r\n this.debugTransmissionShadow\r\n ),\r\n pb.vec3(0)\r\n );\r\n });\r\n }).$else(function () {\r\n this.result = pb.vec3(0);\r\n });\r\n });\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.result, this.baseColor.a);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.result), this.baseColor.a);\r\n });\r\n });\r\n }\r\n })!;\r\n program.name = '@SSS_Combine';\r\n return program;\r\n }\r\n\r\n private createSampleOffsets(kernelRadius: number) {\r\n const sampleCount = Math.max(1, Math.ceil(kernelRadius / 2));\r\n const data = new Float32Array(4 * (sampleCount + 1));\r\n for (let i = 1; i <= sampleCount; i++) {\r\n const tap0 = i * 2 - 1;\r\n const tap1 = Math.min(i * 2, kernelRadius);\r\n data[i * 4 + 0] = tap1 !== tap0 ? (tap0 + tap1) * 0.5 : tap0;\r\n }\r\n return data;\r\n }\r\n\r\n private ensureProfileLUT(ctx: DrawContext): Texture2D {\r\n const device = ctx.device;\r\n if (\r\n !SSS._profileLUT ||\r\n SSS._profileLUT.device !== device ||\r\n SSS._profileLUT.width !== SSS._profileLUTWidth ||\r\n SSS._profileLUT.height !== SSS._profileLUTHeight\r\n ) {\r\n SSS._profileLUT?.dispose();\r\n SSS._profileLUT = device.createTexture2D('rgba8unorm', SSS._profileLUTWidth, SSS._profileLUTHeight, {\r\n mipmapping: false\r\n })!;\r\n SSS._profileLUTVersion = -1;\r\n }\r\n if (SSS._profileLUTVersion !== SubsurfaceProfile.version) {\r\n const data = new Uint8Array(SSS._profileLUTWidth * SSS._profileLUTHeight * 4);\r\n const encodeUnit = (value: number) => Math.max(0, Math.min(255, Math.round(value * 255)));\r\n const encodeScaled = (value: number, maxValue: number) =>\r\n Math.max(0, Math.min(255, Math.round((Math.max(0, Math.min(maxValue, value)) / maxValue) * 255)));\r\n for (let slot = 1; slot < SSS._profileLUTWidth; slot++) {\r\n const profile = SubsurfaceProfile.getProfileBySlot(slot);\r\n if (!profile) {\r\n continue;\r\n }\r\n const presetTintBias = profile.getDerivedTintBias();\r\n const presetResponse = profile.getDerivedTransmissionResponse();\r\n const radiusOffset = slot * 4;\r\n data[radiusOffset + 0] = encodeScaled(profile.scatterRadius.x, SSS._profileRadiusEncodeMax);\r\n data[radiusOffset + 1] = encodeScaled(profile.scatterRadius.y, SSS._profileRadiusEncodeMax);\r\n data[radiusOffset + 2] = encodeScaled(profile.scatterRadius.z, SSS._profileRadiusEncodeMax);\r\n data[radiusOffset + 3] = 255;\r\n const falloffOffset = (SSS._profileLUTWidth + slot) * 4;\r\n data[falloffOffset + 0] = encodeUnit(profile.falloffColor.x);\r\n data[falloffOffset + 1] = encodeUnit(profile.falloffColor.y);\r\n data[falloffOffset + 2] = encodeUnit(profile.falloffColor.z);\r\n data[falloffOffset + 3] = 255;\r\n const tintBiasOffset = (SSS._profileLUTWidth * 2 + slot) * 4;\r\n data[tintBiasOffset + 0] = encodeUnit(presetTintBias[0]);\r\n data[tintBiasOffset + 1] = encodeUnit(presetTintBias[1]);\r\n data[tintBiasOffset + 2] = encodeUnit(presetTintBias[2]);\r\n data[tintBiasOffset + 3] = 255;\r\n const responseOffset = (SSS._profileLUTWidth * 3 + slot) * 4;\r\n data[responseOffset + 0] = encodeUnit(presetResponse[0]);\r\n data[responseOffset + 1] = encodeUnit(presetResponse[1]);\r\n data[responseOffset + 2] = encodeUnit((presetResponse[2] + 0.25) / 0.75);\r\n data[responseOffset + 3] = encodeUnit((presetResponse[3] + 0.25) / 0.75);\r\n const settingsAOffset = (SSS._profileLUTWidth * 4 + slot) * 4;\r\n data[settingsAOffset + 0] = encodeScaled(profile.worldUnitScale, SSS._profileWorldScaleEncodeMax);\r\n data[settingsAOffset + 1] = encodeUnit(profile.boundaryColorBleed);\r\n data[settingsAOffset + 2] = encodeScaled(profile.normalScale, SSS._profileNormalScaleEncodeMax);\r\n data[settingsAOffset + 3] = encodeUnit(profile.scatteringDistribution);\r\n const tintOffset = (SSS._profileLUTWidth * 5 + slot) * 4;\r\n data[tintOffset + 0] = encodeUnit(profile.transmissionTintColor.x);\r\n data[tintOffset + 1] = encodeUnit(profile.transmissionTintColor.y);\r\n data[tintOffset + 2] = encodeUnit(profile.transmissionTintColor.z);\r\n data[tintOffset + 3] = 255;\r\n const settingsBOffset = (SSS._profileLUTWidth * 6 + slot) * 4;\r\n data[settingsBOffset + 0] = encodeScaled(profile.extinctionScale, SSS._profileExtinctionEncodeMax);\r\n data[settingsBOffset + 1] = encodeScaled(profile.scale, SSS._profileWorldScaleEncodeMax);\r\n data[settingsBOffset + 2] = encodeUnit(profile.strength / 2);\r\n data[settingsBOffset + 3] = 255;\r\n const specularSettingsOffset = (SSS._profileLUTWidth * 7 + slot) * 4;\r\n data[specularSettingsOffset + 0] = encodeUnit(profile.specularDetailSoftness);\r\n data[specularSettingsOffset + 1] = encodeScaled(\r\n profile.specularDetailRadius,\r\n SSS._profileSpecularRadiusEncodeMax\r\n );\r\n data[specularSettingsOffset + 2] = 0;\r\n data[specularSettingsOffset + 3] = 255;\r\n }\r\n SSS._profileLUT!.update(data, 0, 0, SSS._profileLUTWidth, SSS._profileLUTHeight);\r\n SSS._profileLUTVersion = SubsurfaceProfile.version;\r\n }\r\n return SSS._profileLUT!;\r\n }\r\n}\r\n"],"names":["SSS","AbstractPostEffect","_profileLUTWidth","_profileLUTHeight","_profileRadiusEncodeMax","_profileWorldScaleEncodeMax","_profileNormalScaleEncodeMax","_profileExtinctionEncodeMax","_profileSpecularRadiusEncodeMax","_debugViewMap","none","scatter_mask","scatter_softness","scatter_radius","scatter_falloff","profile_energy","profile_transmission","profile_boundary","diffuse","blur","screen_thinness","thin_transmission_mask","thin_lighting","transmission_shadow","_blurPrograms","_combinePrograms","_profileLUT","_profileLUTVersion","_blurBindGroups","_combineBindGroups","_layer","PostEffectLayer","opaque","profileRowV","row","getCombineShadowLight","ctx","shadowMapInfo","mainDirectionalLight","sunLight","primaryDirectionalLight","has","useCombineShadowMask","shadowLight","screenSpaceShadowMask","shadowMapParams","get","shadowMap","impl","maskOrdinal","getCombineProgramKey","shaderHash","requireLinearDepthTexture","requireDepthAttachment","requireSceneNormalTexture","requireShadowMask","apply","inputColorTexture","sceneDepthTexture","srgbOutput","device","outputFramebuffer","getFramebuffer","sssSettings","camera","sssResolvedSettings","SSSProfileTexture","SSSParamTexture","sssStrength","sssBlurScale","sssTransmissionStrength","passThrough","kernelRadius","Math","max","blurKernelSize","blurEnabled","profileLUT","ensureProfileLUT","inputScatterTexture","SSSDiffuseTexture","blurWidth","halfRes","ceil","width","blurHeight","height","blurredTexture","blurFramebufferH","blurFramebufferV","pool","fetchTemporalFramebuffer","format","setFramebuffer","getColorAttachments","combine","releaseFrameBuffer","targetWidth","targetHeight","horizontal","sssNormalTexture","SceneNormalTexture","hasNormalTexture","key","program","createBlurProgram","bindGroup","createBindGroup","bindGroupLayouts","setTexture","fetchSampler","setValue","Vector2","getNearPlane","getFarPlane","Vector4","createSampleOffsets","blurStdDev","blurDepthCutoff","normalCutoff","needFlip","setProgram","setBindGroup","drawFullscreenQuad","sssRoughnessTexture","SceneRoughnessTexture","hasRoughnessTexture","programKey","createCombineProgram","mainTransmissionLight","primaryTransmissionLight","sunDir","directionAndCutoff","xyz","scaleBy","x","y","z","sunColorIntensity","ShaderHelper","getPreExposedColorIntensity","w","mainLightPosRange","positionAndRange","mainLightDirCutoff","mainLightType","isDirectionLight","LIGHT_TYPE_DIRECTIONAL","isPointLight","LIGHT_TYPE_POINT","isSpotLight","LIGHT_TYPE_SPOT","LIGHT_TYPE_RECT","SSSTransmissionTexture","Matrix4x4","invert","getProjectionMatrix","worldMatrix","Float32Array","sssTransmissionPower","sssMultiScatter","sssDebugView","ordinal","layer","channel","shadowMaskTexture","getDummyShadowMask","cameraPos","getWorldPosition","position","params","shadowDebugCascades","framestamp","frameInfo","frameCounter","envLightStrength","getEnvLightLuminance","envLightSpecularStrength","env","light","specularStrength","shadowStrength","shadow","shadowCascades","numShadowCascades","diffuseAndIntensity","extraParams","implParams","getParams","cascadeDistances","depthBiasValues","shadowCameraParams","cameraParams","depthBiasScales","shadowMatrices","shadowMapSampler","getDefaultRenderState","DEPTH_COMPARE_FARTHER","sampleCount","buildRenderProgram","vertex","pb","flip","int","uniform","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","vec4","DEPTH_FARTHEST","add","mul","xy","$if","notEqual","neg","fragment","colorTex","tex2D","profileTex","paramTex","profileLUTTex","normalTex","depthTex","cameraNearFar","targetSize","sampleOffsets","blurScale","float","depthCutoff","hasNormalTex","outColor","func","vec3","$return","value","$l","div","slot","textureSampleLevel","rgb","raw","safeRadius","radius","safeDistribution","clamp","distribution","safeScatterScale","scatterScale","falloffShape","mix","falloff","distributionShape","scatterShape","diffusionDistance","dr","abs","distance","exp","safeStrengthScale","strengthScale","burleyWeight","burleyKernel1","relativeRadius","forwardScatter","forwardWeight","sub","equal","n","normalize","sampleLinearDepth","floor","param","r","centerColor","centerProfile","centerParam","centerActive","greaterThan","a","centerStrength","max3","centerSlot","readProfileSlot","centerDepth01","readDepth01","or","lessThanEqual","not","greaterThanEqual","$else","widthStrength","g","centerDepth","centerLogDepth","log","profileSettingsA","readProfileSettingsA","profileSettingsB","readProfileSettingsB","profileWorldScale","profileBoundaryBleed","profileNormalScale","profileDistribution","profileScatterScale","profileStrengthScale","profileWorldScaleNorm","profileScatterScaleNorm","profileStrengthNorm","depthThreshold","normalDetailSoftening","normalThreshold","centerNormal","decodeNormal","profileRadius","readProfileRadius","profileFalloff","readProfileFalloff","maxProfileRadius","profileSpread","profileDiffusionSoftness","centerKernel","computeKernelWeight","centerWeight","centerSample","sampleColor","colorSum","weightSum","$for","data","at","i","axisOffset","offset","kernelWeight","sampleUV","$choice","side","sampleProfile","sampleParam","sampleStrength","sampleActive","sampleWidthStrength","sampleWeight","and","depth01Sample","lessThan","sampleDepth","sampleLogDepth","sampleNormal","dot","name","shadowEnabled","useShadowMask","pcssEnabled","cameraStruct","defineStruct","lightStruct","shadowTex","isTextureCube","isDepth","texCubeShadow","texCube","isTexture2D","tex2DShadow","tex2DArrayShadow","tex2DArray","getDeviceCaps","textureCaps","getTextureFormatInfo","filterable","sampleType","Z_UniformShadowMap","Z_UniformShadowMask","shadowMaskLayer","shadowMaskChannel","diffuseTex","blurTex","transmissionTex","roughnessTex","invProjMatrix","mat4","invViewMatrix","transmissionStrength","transmissionPower","multiScatter","hasDiffuseTex","hasTransmissionTex","hasRoughnessTex","debugView","srgbOut","sampleSlot","sampleDepth01","profileSlot","sampleScene","sampleDiffuse","pixelStep","radiusScale","invCenterDepth","depth01","depthAccum","normalAccum","sampleAt","offsetX","offsetY","normalWS","depthMean","normalMean","depthThin","normalThin","combinedThin","viewDepth","linearDepth","nonLinearDepth","linearDepthToNonLinear","clipPos","deviceDepthToClipZ","viewPos","lightType","fallbackDir","posRange","worldPos","dist","spotFactor","dirCutoff","smoothStep","splitDistances","comparison","cascadeFlags","split","shadowVertex","calculateShadowSpaceVertex","computeShadowCSM","NoL","shadowDistance","computeShadow","baseColor","baseDiffuseColor","baseTransmissionColor","debugThinness","debugThinnessLayers","debugTransmissionMask","debugThinLighting","debugProfileEnergy","debugProfileTransmission","debugProfileBoundary","debugTransmissionShadow","profile","profileActive","scatterSoftnessAuthor","roughnessInfo","profileStrength","automaticTransmission","materialTransmissionMask","result","transmissionShadowRaw","transmissionShadow","shadowNormalWS","shadowViewPos","reconstructViewPos","shadowWorldPos","shadowSunDirWS","calculateMainLightDirection","calculateTransmissionShadow","textureArraySampleLevel","profileTransmissionTint","readProfileTransmissionTint","profileSpecularSettings","readProfileSpecularSettings","profileExtinctionScale","profileSpecularSoftness","profileSpecularRadius","extinctionNorm","radiusTint","avgFalloff","profileEnergyScale","profileTransmissionScale","profileTintBase","pow","presetTintBias","readProfileTintBias","presetResponse","readProfilePresetResponse","presetFrontScatter","presetSoftness","presetTransmissionBoost","presetTint","tint","baseLuma","shadowMask","radiusResponse","sunDirWS","mainLightAttenuation","calculateMainLightAttenuation","frontLit","transmissionLightAttenuation","thinnessComponents","estimateScreenThinnessComponents","depthThinness","curvatureThinness","screenThinness","backLightFacing","backLightGate","automaticThinMask","wrappedFront","terminatorWrap","surfaceScatterMask","materialScatterBoost","materialTransmissionResponse","materialTransmissionSoftness","materialThicknessField","edgeThinBoost","curvatureThinBoost","scatterMask","scatterStrength","blurred","roughness","specMask","specularFallback","baseDiffuseSafe","baseDiffuseLuma","epidermalMix","deepMix","skinTint","deepTint","baseSpecular","softenedSpecular","specularRadius","specularTexel","specularSum","specularWeight","sampleSpecularAt","specularNeighbor","sampleCompatibleSpecular","filteredSpecular","specularSoftnessBase","specularSoftness","scatterBlendBase","scatterBlend","blurredLuma","profileBlurred","blurredClamped","scattered","multiScatterLift","scatteredDiffuse","transmissionBudget","diffuseHeadroom","viewDirVS","viewDirWS","rim","transmissionShadowSoftness","transmissionShadowFloor","backLit","thicknessBackScatter","thinPotential","sqrt","transmissionFocus","thinRegion","debugBlueSeed","debugBlueDisplay","debugGreenDisplay","sunColor","min","capturedTransmission","capturedTransmissionStrength","profileTransmission","backScatterCore","rimFallback","warmTransmissionTint","warmTransmissionStrength","broadTransmission","subdermalTransmission","thin","transmissionColor","transmissionHeadroom","transmittedDiffuse","transmittedDiffuseLuma","visibleTransmissionMask","visibleTransmissionChroma","visibleTransmissionTint","visibleTransmissionWarm","visibleTransmissionGain","visibleTransmissionHeadroom","visibleTransmission","$elseif","debugSlot","linearToGamma","tap0","tap1","dispose","createTexture2D","mipmapping","SubsurfaceProfile","version","Uint8Array","encodeUnit","round","encodeScaled","maxValue","getProfileBySlot","getDerivedTintBias","getDerivedTransmissionResponse","radiusOffset","scatterRadius","falloffOffset","falloffColor","tintBiasOffset","responseOffset","settingsAOffset","worldUnitScale","boundaryColorBleed","normalScale","scatteringDistribution","tintOffset","transmissionTintColor","settingsBOffset","extinctionScale","scale","strength","specularSettingsOffset","specularDetailSoftness","specularDetailRadius","update"],"mappings":"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"}
|