@zephyr3d/editor 0.3.8 → 0.3.9

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.
Files changed (137) hide show
  1. package/dist/assets/{index-BZ1L8ggE.js → index-CO6yA4Rj.js} +313 -11
  2. package/dist/assistant/zephyr-types-index.json +13834 -11679
  3. package/dist/index.html +1 -1
  4. package/dist/modules/zephyr3d_backend-webgpu.js +1 -1
  5. package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
  6. package/dist/modules/zephyr3d_device.js +2 -2
  7. package/dist/modules/zephyr3d_device.js.map +1 -1
  8. package/dist/modules/zephyr3d_scene.js +2325 -515
  9. package/dist/modules/zephyr3d_scene.js.map +1 -1
  10. package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +1 -1
  11. package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
  12. package/dist/vendor/zephyr3d/device/dist/device.js +2 -2
  13. package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
  14. package/dist/vendor/zephyr3d/scene/dist/app/engine.js +3 -1
  15. package/dist/vendor/zephyr3d/scene/dist/app/engine.js.map +1 -1
  16. package/dist/vendor/zephyr3d/scene/dist/asset/assetmanager.js +1 -0
  17. package/dist/vendor/zephyr3d/scene/dist/asset/assetmanager.js.map +1 -1
  18. package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +87 -0
  19. package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
  20. package/dist/vendor/zephyr3d/scene/dist/index.d.ts +158 -4
  21. package/dist/vendor/zephyr3d/scene/dist/index.js +3 -0
  22. package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
  23. package/dist/vendor/zephyr3d/scene/dist/material/meshmaterial.js +8 -1
  24. package/dist/vendor/zephyr3d/scene/dist/material/meshmaterial.js.map +1 -1
  25. package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js +6 -0
  26. package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js.map +1 -1
  27. package/dist/vendor/zephyr3d/scene/dist/material/skin.js +263 -0
  28. package/dist/vendor/zephyr3d/scene/dist/material/skin.js.map +1 -0
  29. package/dist/vendor/zephyr3d/scene/dist/posteffect/compositor.js +3 -0
  30. package/dist/vendor/zephyr3d/scene/dist/posteffect/compositor.js.map +1 -1
  31. package/dist/vendor/zephyr3d/scene/dist/posteffect/skinsss.js +194 -0
  32. package/dist/vendor/zephyr3d/scene/dist/posteffect/skinsss.js.map +1 -0
  33. package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js +26 -49
  34. package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js.map +1 -1
  35. package/dist/vendor/zephyr3d/scene/dist/posteffect/sss.js +1 -0
  36. package/dist/vendor/zephyr3d/scene/dist/posteffect/sss.js.map +1 -1
  37. package/dist/vendor/zephyr3d/scene/dist/posteffect/taa.js +2 -40
  38. package/dist/vendor/zephyr3d/scene/dist/posteffect/taa.js.map +1 -1
  39. package/dist/vendor/zephyr3d/scene/dist/render/abuffer_oit.js +1 -0
  40. package/dist/vendor/zephyr3d/scene/dist/render/abuffer_oit.js.map +1 -1
  41. package/dist/vendor/zephyr3d/scene/dist/render/drawable_mixin.js +1 -0
  42. package/dist/vendor/zephyr3d/scene/dist/render/drawable_mixin.js.map +1 -1
  43. package/dist/vendor/zephyr3d/scene/dist/render/fbm_wavegenerator.js +1 -0
  44. package/dist/vendor/zephyr3d/scene/dist/render/fbm_wavegenerator.js.map +1 -1
  45. package/dist/vendor/zephyr3d/scene/dist/render/gerstner_wavegenerator.js +1 -0
  46. package/dist/vendor/zephyr3d/scene/dist/render/gerstner_wavegenerator.js.map +1 -1
  47. package/dist/vendor/zephyr3d/scene/dist/render/globalbindgroup_allocator.js +1 -0
  48. package/dist/vendor/zephyr3d/scene/dist/render/globalbindgroup_allocator.js.map +1 -1
  49. package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js +4 -1
  50. package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js.map +1 -1
  51. package/dist/vendor/zephyr3d/scene/dist/render/render_queue.js +1 -0
  52. package/dist/vendor/zephyr3d/scene/dist/render/render_queue.js.map +1 -1
  53. package/dist/vendor/zephyr3d/scene/dist/render/renderer.js +1 -0
  54. package/dist/vendor/zephyr3d/scene/dist/render/renderer.js.map +1 -1
  55. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/device_pool_allocator.js +12 -5
  56. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  57. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js +78 -8
  58. package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  59. package/dist/vendor/zephyr3d/scene/dist/scene/basesprite.js +1 -0
  60. package/dist/vendor/zephyr3d/scene/dist/scene/basesprite.js.map +1 -1
  61. package/dist/vendor/zephyr3d/scene/dist/scene/batchgroup.js +1 -0
  62. package/dist/vendor/zephyr3d/scene/dist/scene/batchgroup.js.map +1 -1
  63. package/dist/vendor/zephyr3d/scene/dist/scene/environment.js +1 -0
  64. package/dist/vendor/zephyr3d/scene/dist/scene/environment.js.map +1 -1
  65. package/dist/vendor/zephyr3d/scene/dist/scene/light.js +158 -154
  66. package/dist/vendor/zephyr3d/scene/dist/scene/light.js.map +1 -1
  67. package/dist/vendor/zephyr3d/scene/dist/scene/mesh.js +1 -0
  68. package/dist/vendor/zephyr3d/scene/dist/scene/mesh.js.map +1 -1
  69. package/dist/vendor/zephyr3d/scene/dist/scene/msdftext.js +1 -0
  70. package/dist/vendor/zephyr3d/scene/dist/scene/msdftext.js.map +1 -1
  71. package/dist/vendor/zephyr3d/scene/dist/scene/msdftextsprite.js +1 -0
  72. package/dist/vendor/zephyr3d/scene/dist/scene/msdftextsprite.js.map +1 -1
  73. package/dist/vendor/zephyr3d/scene/dist/scene/particlesys.js +1 -0
  74. package/dist/vendor/zephyr3d/scene/dist/scene/particlesys.js.map +1 -1
  75. package/dist/vendor/zephyr3d/scene/dist/scene/scene.js +1 -0
  76. package/dist/vendor/zephyr3d/scene/dist/scene/scene.js.map +1 -1
  77. package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grass.js +1 -0
  78. package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grass.js.map +1 -1
  79. package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grassmaterial.js +1 -0
  80. package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  81. package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/terrain-cm.js +1 -0
  82. package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  83. package/dist/vendor/zephyr3d/scene/dist/scene/water.js +1 -0
  84. package/dist/vendor/zephyr3d/scene/dist/scene/water.js.map +1 -1
  85. package/dist/vendor/zephyr3d/scene/dist/shaders/shadow.js +617 -1
  86. package/dist/vendor/zephyr3d/scene/dist/shaders/shadow.js.map +1 -1
  87. package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js +1 -0
  88. package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js.map +1 -1
  89. package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_opt.js +1 -0
  90. package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_opt.js.map +1 -1
  91. package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_pd.js +1 -0
  92. package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_pd.js.map +1 -1
  93. package/dist/vendor/zephyr3d/scene/dist/shadow/pcss.js +182 -0
  94. package/dist/vendor/zephyr3d/scene/dist/shadow/pcss.js.map +1 -0
  95. package/dist/vendor/zephyr3d/scene/dist/shadow/shader.js +1 -0
  96. package/dist/vendor/zephyr3d/scene/dist/shadow/shader.js.map +1 -1
  97. package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_impl.js.map +1 -1
  98. package/dist/vendor/zephyr3d/scene/dist/shadow/shadowmapper.js +183 -105
  99. package/dist/vendor/zephyr3d/scene/dist/shadow/shadowmapper.js.map +1 -1
  100. package/dist/vendor/zephyr3d/scene/dist/shadow/ssm.js +1 -0
  101. package/dist/vendor/zephyr3d/scene/dist/shadow/ssm.js.map +1 -1
  102. package/dist/vendor/zephyr3d/scene/dist/shadow/vsm.js +1 -0
  103. package/dist/vendor/zephyr3d/scene/dist/shadow/vsm.js.map +1 -1
  104. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +3 -1
  105. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
  106. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +1 -0
  107. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
  108. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/batch.js +1 -0
  109. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/batch.js.map +1 -1
  110. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +122 -0
  111. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
  112. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js +1 -0
  113. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js.map +1 -1
  114. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js +102 -21
  115. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js.map +1 -1
  116. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js +195 -3
  117. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js.map +1 -1
  118. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js +1 -0
  119. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
  120. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +1 -0
  121. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
  122. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js +1 -0
  123. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js.map +1 -1
  124. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js +1 -0
  125. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js.map +1 -1
  126. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js +1 -0
  127. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js.map +1 -1
  128. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js +1 -0
  129. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js.map +1 -1
  130. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/text.js +1 -0
  131. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/text.js.map +1 -1
  132. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/water.js +1 -0
  133. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/water.js.map +1 -1
  134. package/dist/vendor/zephyr3d/scene/dist/values.js +1 -0
  135. package/dist/vendor/zephyr3d/scene/dist/values.js.map +1 -1
  136. package/electron/main.cjs +30 -6
  137. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"sss.js","sources":["../../src/posteffect/sss.ts"],"sourcesContent":["import { Matrix4x4, Vector2, Vector4, type Nullable } 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 private getCombineProgramKey(ctx: DrawContext, shadowLight: Nullable<PunctualLight>) {\r\n const shadowMapParams = shadowLight ? ctx.shadowMapInfo?.get(shadowLight) : null;\r\n return shadowMapParams?.shaderHash ? `shadow:${shadowMapParams.shaderHash}` : 'default';\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 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.SSRNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasNormalTexture = !!ctx.SSRNormalTexture;\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.SSRRoughnessTexture ?? ctx.SSSParamTexture!;\r\n const sssNormalTexture = ctx.SSRNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasRoughnessTexture = !!ctx.SSRRoughnessTexture;\r\n const hasNormalTexture = !!ctx.SSRNormalTexture;\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 ? mainTransmissionLight.diffuseAndIntensity\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 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 });\r\n bindGroup.setValue('light', {\r\n sunDir: new Float32Array([sunDir.x, sunDir.y, sunDir.z]),\r\n envLightStrength: ctx.env?.light.strength ?? 0,\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: shadowLight.diffuseAndIntensity,\r\n extraParams: shadowLight.extraParams,\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 device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\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, 1, 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 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, 1, 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 (shadowEnabled) {\r\n const cameraStruct = pb.defineStruct([\r\n pb.vec4('position'),\r\n pb.vec4('params'),\r\n pb.float('shadowDebugCascades')\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('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 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 = pb.div(\r\n pb.sub(\r\n pb.div(pb.mul(this.cameraNearFar.x, this.cameraNearFar.y), this.viewDepth),\r\n this.cameraNearFar.y\r\n ),\r\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\r\n );\r\n this.$l.clipPos = pb.vec4(\r\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\r\n pb.sub(pb.mul(pb.clamp(this.nonLinearDepth, 0, 1), 2), 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 (shadowEnabled) {\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 }\r\n this.$l.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(this, pb.vec4(this.worldPos, 1));\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 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 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 this.$l.transmissionShadowRaw = pb.float(1);\r\n this.$l.transmissionShadow = pb.float(1);\r\n if (shadowEnabled) {\r\n this.transmissionShadowRaw = this.calculateTransmissionShadow(\r\n this.worldPos,\r\n this.depth01,\r\n pb.clamp(pb.abs(pb.dot(this.normalWS, this.sunDirWS)), 0, 1)\r\n );\r\n }\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","getCombineProgramKey","shadowLight","shadowMapParams","get","shaderHash","requireLinearDepthTexture","requireDepthAttachment","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","SSRNormalTexture","hasNormalTexture","key","program","createBlurProgram","bindGroup","createBindGroup","bindGroupLayouts","setTexture","fetchSampler","setValue","Vector2","getNearPlane","getFarPlane","Vector4","createSampleOffsets","blurStdDev","blurDepthCutoff","normalCutoff","needFlip","setProgram","setBindGroup","drawFullscreenQuad","sssRoughnessTexture","SSRRoughnessTexture","hasRoughnessTexture","programKey","createCombineProgram","mainTransmissionLight","primaryTransmissionLight","sunDir","directionAndCutoff","xyz","scaleBy","x","y","z","sunColorIntensity","diffuseAndIntensity","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","cameraPos","getWorldPosition","position","params","shadowDebugCascades","envLightStrength","env","light","strength","envLightSpecularStrength","specularStrength","shadowStrength","shadow","shadowCascades","numShadowCascades","extraParams","cascadeDistances","depthBiasValues","shadowCameraParams","cameraParams","depthBiasScales","shadowMatrices","shadowMap","shadowMapSampler","getDefaultRenderState","sampleCount","buildRenderProgram","vertex","pb","flip","int","uniform","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","vec4","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","ShaderHelper","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","impl","cameraStruct","defineStruct","lightStruct","shadowTex","isTextureCube","isDepth","texCubeShadow","texCube","isTexture2D","tex2DShadow","tex2DArrayShadow","tex2DArray","getDeviceCaps","textureCaps","getTextureFormatInfo","filterable","sampleType","Z_UniformShadowMap","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","clipPos","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","profileTransmissionTint","readProfileTransmissionTint","profileExtinctionScale","extinctionNorm","radiusTint","avgFalloff","profileEnergyScale","profileTransmissionScale","profileTintBase","pow","presetTintBias","readProfileTintBias","presetResponse","readProfilePresetResponse","presetFrontScatter","presetSoftness","presetEnergyBoost","presetTransmissionBoost","presetTint","tint","baseLuma","shadowMask","radiusResponse","reconstructViewPos","sunDirWS","calculateMainLightDirection","mainLightAttenuation","calculateMainLightAttenuation","frontLit","transmissionShadowRaw","transmissionShadow","calculateTransmissionShadow","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","update"],"mappings":"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"}
1
+ {"version":3,"file":"sss.js","sources":["../../src/posteffect/sss.ts"],"sourcesContent":["import { Matrix4x4, Vector2, Vector4, type Nullable } 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 private getCombineProgramKey(ctx: DrawContext, shadowLight: Nullable<PunctualLight>) {\r\n const shadowMapParams = shadowLight ? ctx.shadowMapInfo?.get(shadowLight) : null;\r\n return shadowMapParams?.shaderHash ? `shadow:${shadowMapParams.shaderHash}` : 'default';\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 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.SSRNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasNormalTexture = !!ctx.SSRNormalTexture;\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.SSRRoughnessTexture ?? ctx.SSSParamTexture!;\r\n const sssNormalTexture = ctx.SSRNormalTexture ?? ctx.SSSParamTexture!;\r\n const hasRoughnessTexture = !!ctx.SSRRoughnessTexture;\r\n const hasNormalTexture = !!ctx.SSRNormalTexture;\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 ? mainTransmissionLight.diffuseAndIntensity\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 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 });\r\n bindGroup.setValue('light', {\r\n sunDir: new Float32Array([sunDir.x, sunDir.y, sunDir.z]),\r\n envLightStrength: ctx.env?.light.strength ?? 0,\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: shadowLight.diffuseAndIntensity,\r\n extraParams: shadowLight.extraParams,\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 device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\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, 1, 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 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, 1, 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 (shadowEnabled) {\r\n const cameraStruct = pb.defineStruct([\r\n pb.vec4('position'),\r\n pb.vec4('params'),\r\n pb.float('shadowDebugCascades')\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('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 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 = pb.div(\r\n pb.sub(\r\n pb.div(pb.mul(this.cameraNearFar.x, this.cameraNearFar.y), this.viewDepth),\r\n this.cameraNearFar.y\r\n ),\r\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\r\n );\r\n this.$l.clipPos = pb.vec4(\r\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\r\n pb.sub(pb.mul(pb.clamp(this.nonLinearDepth, 0, 1), 2), 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 (shadowEnabled) {\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 }\r\n this.$l.shadowVertex = ShaderHelper.calculateShadowSpaceVertex(this, pb.vec4(this.worldPos, 1));\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 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 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 this.$l.transmissionShadowRaw = pb.float(1);\r\n this.$l.transmissionShadow = pb.float(1);\r\n if (shadowEnabled) {\r\n this.transmissionShadowRaw = this.calculateTransmissionShadow(\r\n this.worldPos,\r\n this.depth01,\r\n pb.clamp(pb.abs(pb.dot(this.normalWS, this.sunDirWS)), 0, 1)\r\n );\r\n }\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","getCombineProgramKey","shadowLight","shadowMapParams","get","shaderHash","requireLinearDepthTexture","requireDepthAttachment","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","SSRNormalTexture","hasNormalTexture","key","program","createBlurProgram","bindGroup","createBindGroup","bindGroupLayouts","setTexture","fetchSampler","setValue","Vector2","getNearPlane","getFarPlane","Vector4","createSampleOffsets","blurStdDev","blurDepthCutoff","normalCutoff","needFlip","setProgram","setBindGroup","drawFullscreenQuad","sssRoughnessTexture","SSRRoughnessTexture","hasRoughnessTexture","programKey","createCombineProgram","mainTransmissionLight","primaryTransmissionLight","sunDir","directionAndCutoff","xyz","scaleBy","x","y","z","sunColorIntensity","diffuseAndIntensity","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","cameraPos","getWorldPosition","position","params","shadowDebugCascades","envLightStrength","env","light","strength","envLightSpecularStrength","specularStrength","shadowStrength","shadow","shadowCascades","numShadowCascades","extraParams","cascadeDistances","depthBiasValues","shadowCameraParams","cameraParams","depthBiasScales","shadowMatrices","shadowMap","shadowMapSampler","getDefaultRenderState","sampleCount","buildRenderProgram","vertex","pb","flip","int","uniform","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","vec4","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","ShaderHelper","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","impl","cameraStruct","defineStruct","lightStruct","shadowTex","isTextureCube","isDepth","texCubeShadow","texCube","isTexture2D","tex2DShadow","tex2DArrayShadow","tex2DArray","getDeviceCaps","textureCaps","getTextureFormatInfo","filterable","sampleType","Z_UniformShadowMap","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","clipPos","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","profileTransmissionTint","readProfileTransmissionTint","profileExtinctionScale","extinctionNorm","radiusTint","avgFalloff","profileEnergyScale","profileTransmissionScale","profileTintBase","pow","presetTintBias","readProfileTintBias","presetResponse","readProfilePresetResponse","presetFrontScatter","presetSoftness","presetEnergyBoost","presetTransmissionBoost","presetTint","tint","baseLuma","shadowMask","radiusResponse","reconstructViewPos","sunDirWS","calculateMainLightDirection","mainLightAttenuation","calculateMainLightAttenuation","frontLit","transmissionShadowRaw","transmissionShadow","calculateTransmissionShadow","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","update"],"mappings":"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"}