@zephyr3d/scene 0.9.25 → 0.9.27
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/dist/animation/animationset.js +92 -30
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/hair/gpu_hair_simulation.js +1090 -0
- package/dist/animation/hair/gpu_hair_simulation.js.map +1 -0
- package/dist/animation/joint_dynamics/controller.js +7 -5
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +81 -5
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -4
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/skeleton.js +79 -25
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/spring/multi_chain_spring_system.js +577 -179
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +4 -3
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_node_pose_tracker.js +40 -0
- package/dist/animation/spring/spring_node_pose_tracker.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +2 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_system.js +11 -3
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +10 -0
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/engine.js +53 -43
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptingsystem.js +119 -6
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +3 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +284 -67
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/zhair/zhair_format.js +288 -0
- package/dist/asset/loaders/zhair/zhair_format.js.map +1 -0
- package/dist/asset/loaders/zhair/zhair_loader.js +221 -0
- package/dist/asset/loaders/zhair/zhair_loader.js.map +1 -0
- package/dist/asset/model.js +184 -69
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/camera.js +268 -44
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +3 -1
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +9044 -5139
- package/dist/index.js +17 -6
- package/dist/index.js.map +1 -1
- package/dist/material/eye.js +932 -0
- package/dist/material/eye.js.map +1 -0
- package/dist/material/hair.js +917 -0
- package/dist/material/hair.js.map +1 -0
- package/dist/material/hairstrand.js +842 -0
- package/dist/material/hairstrand.js.map +1 -0
- package/dist/material/hairstrand_data.js +162 -0
- package/dist/material/hairstrand_data.js.map +1 -0
- package/dist/material/lambert.js +5 -2
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +48 -10
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +120 -19
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +1 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +5 -3
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +5 -4
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +3 -3
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +5 -5
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +3 -3
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +106 -19
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +4 -4
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +48 -11
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mtoon.js +6 -5
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrblueprint.js +146 -28
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrblueprint_instance.js +501 -0
- package/dist/material/pbrblueprint_instance.js.map +1 -0
- package/dist/material/pbrmr.js +15 -16
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/shader/helper.js +734 -23
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +55 -0
- package/dist/material/shader/terrain_blend.js.map +1 -0
- package/dist/material/skin.js +192 -32
- package/dist/material/skin.js.map +1 -1
- package/dist/material/spriteblueprint.js +16 -1
- package/dist/material/spriteblueprint.js.map +1 -1
- package/dist/material/subsurfaceprofile.js +86 -23
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/water.js +2059 -72
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js +167 -7
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/coloradjust.js +2 -1
- package/dist/posteffect/coloradjust.js.map +1 -1
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js +2 -1
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js +3 -1
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js +664 -56
- 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/sao.js +46 -44
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +368 -69
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +16 -9
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -0
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +121 -36
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js +44 -1
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +8 -2
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +156 -5
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cull_visitor.js +20 -0
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +36 -2
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +26 -1
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +3 -2
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +1 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +6 -3
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +57 -15
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +130 -20
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +3 -0
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +80 -22
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +6 -3
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/oit.js +29 -0
- package/dist/render/oit.js.map +1 -0
- package/dist/render/render_queue.js +39 -0
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +4 -0
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +1 -0
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/executor.js +2 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +379 -10
- 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/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/texture_affinity_cache.js +1 -1
- package/dist/render/rendergraph/texture_affinity_cache.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/shadow_mask_pass.js +73 -8
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/sky.js +166 -126
- package/dist/render/sky.js.map +1 -1
- package/dist/render/underwater.js +624 -0
- package/dist/render/underwater.js.map +1 -0
- package/dist/render/water_caustics.js +1380 -0
- package/dist/render/water_caustics.js.map +1 -0
- package/dist/render/weightedblended_oit.js +3 -2
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +8 -0
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +3 -0
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +4 -1
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/hair.js +963 -0
- package/dist/scene/hair.js.map +1 -0
- package/dist/scene/light.js +5 -1
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +481 -47
- 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 +3 -0
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +3 -0
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +6 -0
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +3 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +6 -1
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +3 -0
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +3 -0
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +6 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/texture_cache.js +309 -0
- package/dist/scene/terrain-cm/texture_cache.js.map +1 -0
- package/dist/scene/water.js +546 -4
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/diffusion.js +54 -0
- package/dist/shaders/diffusion.js.map +1 -0
- package/dist/shaders/shadow.js +33 -21
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/temporal.js +71 -33
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js +22 -19
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +56 -0
- package/dist/shaders/water_medium.js.map +1 -0
- package/dist/shadow/dom.js +546 -0
- package/dist/shadow/dom.js.map +1 -0
- package/dist/shadow/pcf_opt.js +3 -5
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +1 -1
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/receiver_bias.js +41 -0
- package/dist/shadow/receiver_bias.js.map +1 -0
- package/dist/shadow/shader.js +20 -60
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js +89 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +1 -1
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +150 -37
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shapes/shape.js +11 -2
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +50 -9
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +112 -2
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/material/func.js +142 -49
- package/dist/utility/blueprint/material/func.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +490 -25
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +898 -4
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/manager.js +434 -101
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +401 -5
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -0
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +186 -26
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +26 -5
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/hair.js +1141 -0
- package/dist/utility/serialization/scene/hair.js.map +1 -0
- package/dist/utility/serialization/scene/light.js +84 -4
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +1867 -166
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +231 -14
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +141 -7
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -0
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +18 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +4 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +4 -0
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +4 -0
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +1105 -21
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +9 -8
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/values.js +49 -2
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
- package/dist/render/rendergraph/frame_graph_context.js +0 -41
- package/dist/render/rendergraph/frame_graph_context.js.map +0 -1
- package/dist/shaders/ssgi.js +0 -63
- package/dist/shaders/ssgi.js.map +0 -1
- package/dist/shaders/ssgi_reprojection.js +0 -118
- package/dist/shaders/ssgi_reprojection.js.map +0 -1
|
@@ -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 = 7;\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 _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('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.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.normalThreshold = pb.clamp(\r\n pb.add(\r\n pb.max(pb.sub(this.normalCutoff, pb.mul(this.widthStrength, 0.12)), 0.58),\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.52,\r\n 0.985\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('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('readProfilePreset', [pb.vec4('param')], function () {\r\n this.$return(pb.floor(pb.add(pb.mul(this.param.b, 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 '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.materialTransmissionMask = pb.clamp(this.profile.a, 0, 1);\r\n this.debugTransmissionMask = this.materialTransmissionMask;\r\n this.$l.profileSlot = this.readProfileSlot(this.param);\r\n this.$l.profilePreset = this.readProfilePreset(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.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.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.presetEnergyBoost = this.presetResponse.z;\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.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.scatterMix = pb.add(\r\n pb.add(0.54, pb.mul(this.radiusResponse, 0.94)),\r\n pb.add(\r\n pb.add(pb.mul(this.avgFalloff, 0.22), pb.mul(this.profileSpread, 0.08)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.3), this.presetSoftness)\r\n )\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.scatterBlend = pb.clamp(\r\n pb.mul(this.scatterStrength, pb.add(0.12, pb.mul(this.scatterMix, 0.24)), this.scatterMask),\r\n 0,\r\n pb.add(\r\n pb.add(0.7, pb.mul(this.materialScatterBoost, 0.22)),\r\n this.$choice(\r\n pb.equal(this.profilePreset, 1),\r\n 0.12,\r\n this.$choice(pb.equal(this.profilePreset, 2), 0.08, 0)\r\n )\r\n )\r\n );\r\n this.$l.blurredLuma = pb.dot(this.blurred, pb.vec3(0.2126, 0.7152, 0.0722));\r\n this.$l.profileBlurred = pb.mix(\r\n this.blurred,\r\n pb.mul(\r\n this.blurred,\r\n pb.mix(\r\n pb.vec3(1),\r\n this.skinTint,\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.2, pb.mul(this.avgFalloff, 0.26)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.16), pb.mul(this.presetSoftness, 0.18))\r\n ),\r\n 0,\r\n 0.72\r\n )\r\n )\r\n ),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.14, pb.mul(this.radiusResponse, 0.18)),\r\n pb.add(\r\n pb.mul(this.avgFalloff, 0.08),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.16), pb.mul(this.presetSoftness, 0.16))\r\n )\r\n ),\r\n 0,\r\n 0.58\r\n )\r\n );\r\n this.$l.warmBlur = pb.mul(\r\n pb.max(this.blurredLuma, pb.mul(this.baseDiffuseLuma, 0.82)),\r\n this.deepTint\r\n );\r\n this.profileBlurred = pb.mix(\r\n this.profileBlurred,\r\n this.warmBlur,\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.1, pb.mul(this.avgFalloff, 0.08)),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.12), pb.mul(this.presetSoftness, 0.08))\r\n ),\r\n 0.08,\r\n 0.32\r\n )\r\n );\r\n this.$l.blurredClamped = pb.min(\r\n this.profileBlurred,\r\n pb.add(\r\n this.baseDiffuseColor,\r\n pb.mul(\r\n this.deepTint,\r\n pb.mul(\r\n this.scatterMask,\r\n pb.add(\r\n pb.add(0.06, pb.mul(this.radiusResponse, 0.18)),\r\n pb.add(\r\n pb.mul(this.avgFalloff, 0.08),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.2), pb.mul(this.presetEnergyBoost, 0.18))\r\n )\r\n )\r\n )\r\n )\r\n )\r\n );\r\n this.$l.scattered = pb.mix(this.baseDiffuseColor, this.blurredClamped, this.scatterBlend);\r\n this.$l.terminatorLift = pb.mul(\r\n this.baseDiffuseColor,\r\n this.deepTint,\r\n this.scatterStrength,\r\n this.terminatorWrap,\r\n pb.add(\r\n pb.add(0.014, pb.mul(this.radiusResponse, 0.022)),\r\n pb.add(\r\n pb.mul(this.profileSpread, 0.012),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.02), pb.mul(this.presetSoftness, 0.012))\r\n )\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.45))\r\n );\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.subdermalFill = pb.mul(\r\n this.deepTint,\r\n this.scatterStrength,\r\n pb.add(\r\n pb.mul(\r\n this.shadowMask,\r\n pb.add(\r\n pb.add(0.026, pb.mul(this.radiusResponse, 0.08)),\r\n pb.add(pb.mul(this.profileSpread, 0.045), pb.mul(this.materialScatterBoost, 0.05))\r\n )\r\n ),\r\n pb.add(\r\n pb.add(0.004, pb.mul(this.avgFalloff, 0.012)),\r\n pb.add(pb.mul(this.profileSpread, 0.004), pb.mul(this.materialScatterBoost, 0.008))\r\n )\r\n ),\r\n this.scatterMask,\r\n pb.sub(1, pb.mul(this.specMask, 0.62))\r\n );\r\n this.$l.veilColor = pb.mix(\r\n this.blurredClamped,\r\n pb.mul(this.blurredClamped, this.skinTint),\r\n 0.16\r\n );\r\n this.$l.softVeil = pb.mul(\r\n this.veilColor,\r\n this.scatterStrength,\r\n this.scatterMask,\r\n pb.add(\r\n pb.add(\r\n pb.add(0.002, pb.mul(this.materialScatterBoost, 0.004)),\r\n pb.mul(this.presetSoftness, 0.004)\r\n ),\r\n pb.mul(\r\n this.radiusResponse,\r\n pb.add(\r\n pb.add(0.007, pb.mul(this.avgFalloff, 0.007)),\r\n pb.add(\r\n pb.mul(this.profileSpread, 0.003),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.006), pb.mul(this.presetSoftness, 0.004))\r\n )\r\n )\r\n )\r\n ),\r\n pb.sub(1, pb.mul(this.specMask, 0.55))\r\n );\r\n this.$l.scatteredDiffuse = pb.add(\r\n this.scattered,\r\n pb.add(\r\n this.terminatorLift,\r\n pb.add(this.multiScatterLift, pb.add(this.subdermalFill, this.softVeil))\r\n )\r\n );\r\n this.$l.energyLimit = pb.add(\r\n this.baseDiffuseColor,\r\n pb.mul(\r\n this.deepTint,\r\n this.scatterStrength,\r\n this.scatterMask,\r\n pb.add(\r\n pb.add(\r\n pb.add(0.1, pb.mul(this.radiusResponse, 0.18)),\r\n pb.add(pb.mul(this.avgFalloff, 0.08), pb.mul(this.profileSpread, 0.04))\r\n ),\r\n pb.add(pb.mul(this.materialScatterBoost, 0.28), this.presetEnergyBoost)\r\n )\r\n )\r\n );\r\n this.$l.scatterBudget = pb.max(pb.sub(this.energyLimit, this.baseDiffuseColor), pb.vec3(0));\r\n this.$l.scatterDelta = pb.max(pb.sub(this.scatteredDiffuse, this.baseDiffuseColor), pb.vec3(0));\r\n this.$l.scatteredDiffuse = pb.add(\r\n this.baseDiffuseColor,\r\n pb.min(this.scatterDelta, this.scatterBudget)\r\n );\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.baseSpecular, 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 this.$l.backLit = pb.mul(\r\n pb.pow(pb.clamp(pb.dot(pb.neg(this.normalWS), this.sunDirWS), 0, 1), 1.5),\r\n this.transmissionLightAttenuation\r\n );\r\n this.$l.thicknessBackScatter = pb.clamp(\r\n pb.add(\r\n pb.add(pb.mul(this.backLit, 0.82), pb.mul(this.rim, 0.24)),\r\n pb.mul(this.materialThicknessField, 0.08)\r\n ),\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 pb.mul(this.profileTransmissionTint, pb.vec3(1.0, 0.14, 0.08)),\r\n pb.clamp(\r\n pb.add(\r\n pb.add(0.5, pb.mul(this.visibleTransmissionMask, 0.22)),\r\n pb.mul(this.thicknessBackScatter, 0.18)\r\n ),\r\n 0,\r\n 0.92\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(2.35, pb.mul(this.visibleTransmissionMask, 1.85)),\r\n pb.add(\r\n pb.mul(this.thicknessBackScatter, 1.3),\r\n pb.add(\r\n pb.mul(this.materialTransmissionSoftness, 0.42),\r\n pb.mul(this.profileTransmissionScale, 0.72)\r\n )\r\n )\r\n ),\r\n 2,\r\n 6.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(this.visibleTransmissionWarm, this.visibleTransmissionGain, this.transmissionShadow),\r\n this.visibleTransmissionHeadroom\r\n );\r\n this.$l.visibleTransmissionReveal = pb.clamp(\r\n pb.mul(\r\n this.visibleTransmissionMask,\r\n this.transmissionShadow,\r\n pb.add(\r\n pb.add(0.1, pb.mul(this.thicknessBackScatter, 0.25)),\r\n pb.mul(this.materialThicknessField, 0.12)\r\n )\r\n ),\r\n 0,\r\n 0.38\r\n );\r\n this.result = pb.mix(\r\n this.result,\r\n pb.mul(this.result, pb.vec3(0.84, 0.68, 0.64)),\r\n this.visibleTransmissionReveal\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 (!SSS._profileLUT || SSS._profileLUT.device !== device) {\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 }\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","_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","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","b","pixelStep","radiusScale","depthAccum","normalAccum","sampleAt","offsetX","offsetY","sampleDepth01","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","materialTransmissionMask","profileSlot","profilePreset","readProfilePreset","result","transmissionShadowRaw","transmissionShadow","shadowNormalWS","shadowViewPos","reconstructViewPos","shadowWorldPos","shadowSunDirWS","calculateMainLightDirection","calculateTransmissionShadow","textureArraySampleLevel","profileTransmissionTint","readProfileTransmissionTint","profileExtinctionScale","extinctionNorm","radiusTint","avgFalloff","profileEnergyScale","profileTransmissionScale","profileTintBase","pow","presetTintBias","readProfileTintBias","presetResponse","readProfilePresetResponse","presetFrontScatter","presetSoftness","presetEnergyBoost","presetTransmissionBoost","presetTint","tint","baseLuma","shadowMask","radiusResponse","sunDirWS","mainLightAttenuation","calculateMainLightAttenuation","frontLit","transmissionLightAttenuation","thinnessComponents","estimateScreenThinnessComponents","depthThinness","curvatureThinness","screenThinness","wrappedFront","terminatorWrap","surfaceScatterMask","materialScatterBoost","materialTransmissionResponse","materialTransmissionSoftness","materialThicknessField","edgeThinBoost","curvatureThinBoost","scatterMask","scatterMix","scatterStrength","blurred","roughness","specMask","specularFallback","baseDiffuseSafe","baseDiffuseLuma","epidermalMix","deepMix","skinTint","deepTint","baseSpecular","scatterBlend","blurredLuma","profileBlurred","warmBlur","blurredClamped","min","scattered","terminatorLift","multiScatterLift","subdermalFill","veilColor","softVeil","scatteredDiffuse","energyLimit","scatterBudget","scatterDelta","transmissionBudget","diffuseHeadroom","viewDirVS","viewDirWS","rim","transmissionShadowSoftness","transmissionShadowFloor","backLit","thicknessBackScatter","thinPotential","sqrt","transmissionFocus","thinRegion","debugBlueSeed","debugBlueDisplay","debugGreenDisplay","sunColor","capturedTransmission","capturedTransmissionStrength","profileTransmission","backScatterCore","rimFallback","warmTransmissionTint","warmTransmissionStrength","broadTransmission","subdermalTransmission","thin","transmissionColor","transmissionHeadroom","transmittedDiffuse","transmittedDiffuseLuma","visibleTransmissionMask","visibleTransmissionChroma","visibleTransmissionTint","visibleTransmissionWarm","visibleTransmissionGain","visibleTransmissionHeadroom","visibleTransmission","visibleTransmissionReveal","$elseif","debugSlot","linearToGamma","tap0","tap1","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","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 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","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","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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"}
|