@zephyr3d/scene 0.9.19 → 0.9.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/asset/assetmanager.js +1 -0
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/camera/camera.js +39 -0
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +190 -4
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/material/meshmaterial.js +2 -2
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lit.js +10 -0
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/shader/helper.js +117 -2
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/posteffect/skinsss.js +10 -10
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssr.js +13 -13
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +8 -7
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/tonemap.js +5 -5
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +5 -0
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +52 -8
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +331 -0
- package/dist/render/dualdepthpeeling_oit.js.map +1 -0
- package/dist/render/lightpass.js +29 -8
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/renderer.js +3 -0
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +40 -39
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +10 -1
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +75 -4
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +12 -2
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadow_mask_pass.js +297 -0
- package/dist/render/shadow_mask_pass.js.map +1 -0
- package/dist/render/weightedblended_oit.js +5 -0
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +1 -0
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +1 -0
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +1 -0
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/msdftext.js +1 -0
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +1 -0
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +1 -0
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +1 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +1 -0
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +1 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +1 -0
- package/dist/scene/water.js.map +1 -1
- package/dist/utility/serialization/manager.js +1 -0
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +1 -0
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +1 -0
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +35 -2
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +1 -0
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +1 -0
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +1 -0
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +1 -0
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +1 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +1 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +1 -0
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +1 -0
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +1 -0
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/values.js +11 -1
- package/dist/values.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr.js","sources":["../../src/posteffect/ssr.ts"],"sourcesContent":["import { AbstractPostEffect, PostEffectLayer } from './posteffect';\nimport type { PostEffectSetupContext } from './posteffect';\nimport { linearToGamma } from '../shaders/misc';\nimport type { BindGroup, FrameBuffer, GPUProgram, Texture2D } from '@zephyr3d/device';\nimport type { DrawContext } from '../render';\nimport { screenSpaceRayTracing_HiZ, screenSpaceRayTracing_Linear2D, SSR_calcJitter } from '../shaders/ssr';\nimport { temporalResolve } from '../shaders/temporal';\nimport type { Nullable } from '@zephyr3d/base';\nimport { Matrix4x4, Vector2, Vector4 } from '@zephyr3d/base';\nimport { copyTexture, fetchSampler } from '../utility/misc';\nimport { getGGXLUT } from '../utility/textures/ggxlut';\nimport { BilateralBlurBlitter } from '../blitter/bilateralblur';\nimport { ShaderHelper } from '../material';\nimport { RGHistoryResources } from '../render/rendergraph/history_resources';\nimport { FrameResources } from '../render/rendergraph/blackboard';\nimport type { RGExecuteContext, RGHandle, RGPassBuilder, RGTextureDesc } from '../render/rendergraph/types';\n\n/**\n * SSR post effect\n *\n * @remarks\n * Internal used in light pass\n *\n * @internal\n */\nexport class SSR extends AbstractPostEffect {\n private static _programs: Record<string, GPUProgram> = {};\n private static _resolveProgram: Record<string, GPUProgram> = {};\n private static _combineProgram?: GPUProgram;\n private static _temporalProgram?: GPUProgram;\n private static _blurBlitterH: Nullable<BilateralBlurBlitter> = null;\n private static _blurBlitterV: Nullable<BilateralBlurBlitter> = null;\n private _bindgroups: Record<string, BindGroup>;\n private _resolveBindGroup: Record<string, BindGroup>;\n private _combineBindGroup: Nullable<BindGroup>;\n private _temporalBindGroup: Nullable<BindGroup>;\n /**\n * Creates an instance of SSR post effect\n */\n constructor() {\n super();\n this._layer = PostEffectLayer.opaque;\n this._bindgroups = {};\n this._resolveBindGroup = {};\n this._combineBindGroup = null;\n this._temporalBindGroup = null;\n }\n /** {@inheritDoc AbstractPostEffect.requireLinearDepthTexture} */\n requireLinearDepthTexture() {\n return true;\n }\n /** {@inheritDoc AbstractPostEffect.requireDepthAttachment} */\n requireDepthAttachment() {\n return true;\n }\n /** {@inheritDoc AbstractPostEffect.requireMotionVectorTexture} */\n requireMotionVectorTexture(ctx: DrawContext) {\n return !!ctx.camera.ssrTemporal;\n }\n /**\n * Declares SSR's internal steps (intersect, resolve, optional bilateral\n * blur, optional temporal resolve, combine) as individual render graph\n * passes, mirroring the sequence of {@link SSR.apply}.\n */\n setup(s: PostEffectSetupContext): RGHandle {\n const { graph, ctx, history } = s;\n const linearDepthHandle = s.blackboard.get(FrameResources.LinearDepth);\n const texDesc: RGTextureDesc = {\n format: 'rgba16f',\n sizeMode: 'absolute',\n width: s.width,\n height: s.height\n };\n const readCommon = (builder: RGPassBuilder) => {\n if (linearDepthHandle) {\n builder.read(linearDepthHandle);\n }\n // Roughness/normal MRT outputs, HiZ and the scene color copy are reached\n // through DrawContext fields; the dependency list carries their handles.\n for (const dep of s.dependencies) {\n builder.read(dep);\n }\n };\n const getLinearDepth = (rg: RGExecuteContext) =>\n linearDepthHandle ? rg.getTexture<Texture2D>(linearDepthHandle) : ctx.linearDepthTexture!;\n\n // 1. Ray march the scene (HiZ or linear 2D) into the intersect texture.\n const intersectHandle = graph.addPass('SSR:Intersect', (builder) => {\n builder.read(s.input);\n readCommon(builder);\n const out = builder.createTexture({ ...texDesc, label: 'SSR:intersect' });\n const fb = builder.createFramebuffer({\n label: 'SSR:intersectFB',\n width: s.width,\n height: s.height,\n colorAttachments: out,\n depthAttachment: s.sceneDepthAttachment,\n ignoreDepthStencil: false\n });\n builder.setExecute((rg) => {\n const device = ctx.device;\n device.pushDeviceStates();\n try {\n device.setFramebuffer(rg.getFramebuffer(fb));\n this.intersect(ctx, rg.getTexture<Texture2D>(s.input), getLinearDepth(rg), true, false);\n } finally {\n device.popDeviceStates();\n }\n });\n return out;\n });\n\n // 2. Resolve reflection color from the intersect result.\n const resolveHandle = graph.addPass('SSR:Resolve', (builder) => {\n builder.read(s.input);\n builder.read(intersectHandle);\n readCommon(builder);\n const out = builder.createTexture({ ...texDesc, label: 'SSR:resolve' });\n const fb = builder.createFramebuffer({\n label: 'SSR:resolveFB',\n width: s.width,\n height: s.height,\n colorAttachments: out,\n depthAttachment: s.sceneDepthAttachment,\n ignoreDepthStencil: false\n });\n builder.setExecute((rg) => {\n const device = ctx.device;\n device.pushDeviceStates();\n try {\n device.setFramebuffer(rg.getFramebuffer(fb));\n const inputTex = rg.getTexture<Texture2D>(s.input);\n this.resolve(\n ctx,\n ctx.sceneColorTexture ?? inputTex,\n getLinearDepth(rg),\n rg.getTexture<Texture2D>(intersectHandle)\n );\n } finally {\n device.popDeviceStates();\n }\n });\n return out;\n });\n\n // 3. Optional bilateral blur (horizontal + vertical), guided by the\n // per-pixel blur size stored in the intersect texture.\n let reflectHandle = resolveHandle;\n if (ctx.camera.ssrBlurScale > 0 && ctx.camera.ssrBlurKernelSize > 0) {\n reflectHandle = graph.addPass('SSR:Blur', (builder) => {\n builder.read(resolveHandle);\n builder.read(intersectHandle);\n readCommon(builder);\n const middle = builder.createTexture({ ...texDesc, label: 'SSR:blurH' });\n const out = builder.createTexture({ ...texDesc, label: 'SSR:blur' });\n const middleFB = builder.createFramebuffer({\n label: 'SSR:blurHFB',\n width: s.width,\n height: s.height,\n colorAttachments: middle,\n depthAttachment: s.sceneDepthAttachment,\n ignoreDepthStencil: false\n });\n const outFB = builder.createFramebuffer({\n label: 'SSR:blurFB',\n width: s.width,\n height: s.height,\n colorAttachments: out,\n depthAttachment: s.sceneDepthAttachment,\n ignoreDepthStencil: false\n });\n builder.setExecute((rg) => {\n const device = ctx.device;\n device.pushDeviceStates();\n try {\n const intersectTex = rg.getTexture<Texture2D>(intersectHandle);\n const blurSizeScale = 255 * ctx.camera.ssrBlurScale;\n const kernelRadius = (Math.max(1, ctx.camera.ssrBlurKernelSize >> 0) - 1) >> 1;\n const stdDev = ctx.camera.ssrBlurStdDev;\n const depthCutoff = ctx.camera.ssrBlurDepthCutoff;\n const blitterH = (SSR._blurBlitterH = SSR._blurBlitterH ?? new BilateralBlurBlitter(false));\n blitterH.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\n this.blurPass(\n ctx,\n blitterH,\n intersectTex,\n 2,\n blurSizeScale,\n kernelRadius,\n stdDev,\n depthCutoff,\n rg.getTexture<Texture2D>(resolveHandle),\n rg.getFramebuffer<FrameBuffer>(middleFB)\n );\n const blitterV = (SSR._blurBlitterV = SSR._blurBlitterV ?? new BilateralBlurBlitter(true));\n blitterV.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\n this.blurPass(\n ctx,\n blitterV,\n intersectTex,\n 2,\n blurSizeScale,\n kernelRadius,\n stdDev,\n depthCutoff,\n rg.getTexture<Texture2D>(middle),\n rg.getFramebuffer<FrameBuffer>(outFB)\n );\n } finally {\n device.popDeviceStates();\n }\n });\n return out;\n });\n }\n\n // 4. Optional temporal resolve against last frame's reflection.\n const wantTemporal = !!ctx.camera.ssrTemporal;\n const motionVectorHandle = wantTemporal ? s.blackboard.get(FrameResources.MotionVector) : null;\n const historySize = { width: s.width, height: s.height };\n const prevReflectHandle =\n wantTemporal && history && motionVectorHandle\n ? history.importPreviousIfCompatible(graph, RGHistoryResources.SSR_REFLECT, texDesc, historySize)\n : null;\n const prevMotionVectorHandle =\n wantTemporal && history && motionVectorHandle\n ? history.importPreviousIfCompatible(\n graph,\n RGHistoryResources.SSR_MOTION_VECTOR,\n texDesc,\n historySize\n )\n : null;\n if (motionVectorHandle && prevReflectHandle && prevMotionVectorHandle) {\n const blurredHandle = reflectHandle;\n reflectHandle = graph.addPass('SSR:Temporal', (builder) => {\n builder.read(blurredHandle);\n builder.read(prevReflectHandle);\n builder.read(prevMotionVectorHandle);\n builder.read(motionVectorHandle);\n readCommon(builder);\n const out = builder.createTexture({ ...texDesc, label: 'SSR:temporal' });\n const fb = builder.createFramebuffer({\n label: 'SSR:temporalFB',\n width: s.width,\n height: s.height,\n colorAttachments: out,\n depthAttachment: s.sceneDepthAttachment,\n ignoreDepthStencil: false\n });\n builder.setExecute((rg) => {\n const device = ctx.device;\n device.pushDeviceStates();\n try {\n this.temporal(\n ctx,\n rg.getTexture<Texture2D>(blurredHandle),\n getLinearDepth(rg),\n rg.getTexture<Texture2D>(prevReflectHandle),\n rg.getTexture<Texture2D>(prevMotionVectorHandle),\n rg.getFramebuffer<FrameBuffer>(fb)\n );\n } finally {\n device.popDeviceStates();\n }\n });\n return out;\n });\n }\n\n // 5. Combine reflections with the scene color and queue history commits.\n const finalReflectHandle = reflectHandle;\n return graph.addPass('PostEffect:SSR', (builder) => {\n builder.read(s.input);\n builder.read(finalReflectHandle);\n if (motionVectorHandle) {\n builder.read(motionVectorHandle);\n }\n readCommon(builder);\n const output = s.createOutput(builder, { needDepthAttachment: true });\n builder.setExecute((rg) => {\n const device = ctx.device;\n device.pushDeviceStates();\n try {\n device.setFramebuffer(output.framebuffer ? rg.getFramebuffer(output.framebuffer) : null);\n const inputTex = rg.getTexture<Texture2D>(s.input);\n const reflectanceTex = rg.getTexture<Texture2D>(finalReflectHandle);\n copyTexture(\n inputTex,\n device.getFramebuffer()!,\n fetchSampler('clamp_nearest_nomip'),\n AbstractPostEffect.getDefaultRenderState(ctx, 'eq')\n );\n this.combine(ctx, inputTex, reflectanceTex, output.srgbOutput);\n if (wantTemporal && history) {\n history.queueRetainedCommit(\n RGHistoryResources.SSR_REFLECT,\n {\n format: reflectanceTex.format,\n sizeMode: 'absolute',\n width: reflectanceTex.width,\n height: reflectanceTex.height\n },\n { width: reflectanceTex.width, height: reflectanceTex.height },\n reflectanceTex\n );\n if (ctx.motionVectorTexture) {\n history.queueRetainedCommit(\n RGHistoryResources.SSR_MOTION_VECTOR,\n {\n format: ctx.motionVectorTexture.format,\n sizeMode: 'absolute',\n width: ctx.motionVectorTexture.width,\n height: ctx.motionVectorTexture.height\n },\n { width: ctx.motionVectorTexture.width, height: ctx.motionVectorTexture.height },\n ctx.motionVectorTexture\n );\n }\n }\n } finally {\n device.popDeviceStates();\n }\n });\n return output.color;\n });\n }\n /** @internal */\n blurPass(\n ctx: DrawContext,\n blitter: BilateralBlurBlitter,\n blurSizeTex: Texture2D,\n blurSizeIndex: number,\n blurSizeScale: number,\n kernelRadius: number,\n stdDev: number,\n depthCutoff: number,\n srcTex: Texture2D,\n fbTo: FrameBuffer\n ) {\n const size = new Vector2(srcTex.width, srcTex.height);\n blitter.kernelRadius = kernelRadius;\n blitter.stdDev = stdDev;\n blitter.size = size;\n blitter.depthTex = ctx.linearDepthTexture ?? null;\n blitter.depthCutoff = depthCutoff;\n blitter.blurSizeTex = blurSizeTex;\n blitter.blurSizeIndex = blurSizeIndex;\n blitter.blurSizeScale = blurSizeScale;\n blitter.sampler = fetchSampler('clamp_nearest_nomip');\n blitter.cameraNearFar.setXY(ctx.camera.getNearPlane(), ctx.camera.getFarPlane());\n blitter.srgbOut = false;\n blitter.blit(srcTex, fbTo, fetchSampler('clamp_linear_nomip'));\n }\n /** @internal */\n combine(ctx: DrawContext, inputColorTexture: Texture2D, reflectanceTex: Texture2D, srgbOut: boolean) {\n const device = ctx.device;\n let program = SSR._combineProgram;\n if (program === undefined) {\n program = this._createCombineProgrm(ctx);\n SSR._combineProgram = program;\n }\n const roughnessTexture = ctx.SSRRoughnessTexture!;\n if (!this._combineBindGroup) {\n this._combineBindGroup = device.createBindGroup(program!.bindGroupLayouts[0]);\n }\n const linearSampler = fetchSampler('clamp_linear');\n const nearestSampler = fetchSampler('clamp_nearest');\n this._combineBindGroup.setTexture('colorTex', inputColorTexture, linearSampler);\n this._combineBindGroup.setTexture('reflectanceTex', reflectanceTex, linearSampler);\n this._combineBindGroup.setTexture('roughnessTex', roughnessTexture, linearSampler);\n this._combineBindGroup.setTexture('albedoTex', inputColorTexture, linearSampler);\n this._combineBindGroup.setTexture('extraTex', inputColorTexture, nearestSampler);\n this._combineBindGroup.setTexture('normalTex', ctx.SSRNormalTexture!, nearestSampler);\n this._combineBindGroup.setTexture('depthTex', ctx.linearDepthTexture!, nearestSampler);\n this._combineBindGroup.setTexture('zGGXLut', getGGXLUT(1024), fetchSampler('clamp_nearest_nomip'));\n this._combineBindGroup.setValue('ssrMaxRoughness', ctx.camera.ssrMaxRoughness);\n this._combineBindGroup.setValue('ssrStrengthMode', 0);\n this._combineBindGroup.setValue(\n 'cameraNearFar',\n new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane())\n );\n this._combineBindGroup.setValue('viewMatrix', ctx.camera.viewMatrix);\n this._combineBindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\n this._combineBindGroup.setValue(\n 'targetSize',\n new Vector4(\n inputColorTexture.width,\n inputColorTexture.height,\n inputColorTexture.width,\n inputColorTexture.height\n )\n );\n this._combineBindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\n this._combineBindGroup.setValue('srgbOut', srgbOut ? 1 : 0);\n device.setProgram(program);\n device.setBindGroup(0, this._combineBindGroup);\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\n }\n /** @internal */\n resolve(\n ctx: DrawContext,\n inputColorTexture: Texture2D,\n sceneDepthTexture: Texture2D,\n intersectTexture: Texture2D\n ) {\n const device = ctx.device;\n const hasEnvRadiance = !!ctx.env!.light.envLight?.hasRadiance();\n const hash = hasEnvRadiance ? ctx.env!.light.getHash() : '';\n let program = SSR._resolveProgram[hash];\n if (program === undefined) {\n program = this._createResolveProgram(ctx);\n SSR._resolveProgram[hash] = program;\n }\n let bindGroup = this._resolveBindGroup[hash];\n if (!bindGroup) {\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\n this._resolveBindGroup[hash] = bindGroup;\n }\n const nearestSampler = fetchSampler('clamp_nearest');\n const linearSampler = fetchSampler('clamp_linear');\n const roughnessTexture = ctx.SSRRoughnessTexture!;\n const normalTexture = ctx.SSRNormalTexture!;\n bindGroup.setTexture('colorTex', inputColorTexture, linearSampler);\n bindGroup.setTexture('intersectTex', intersectTexture, nearestSampler);\n bindGroup.setTexture('roughnessTex', roughnessTexture, nearestSampler);\n bindGroup.setTexture('normalTex', normalTexture, nearestSampler);\n bindGroup.setTexture('albedoTex', inputColorTexture, linearSampler);\n bindGroup.setTexture('extraTex', inputColorTexture, nearestSampler);\n bindGroup.setTexture('depthTex', sceneDepthTexture, nearestSampler);\n bindGroup.setTexture('zGGXLut', getGGXLUT(1024), fetchSampler('clamp_nearest_nomip'));\n bindGroup.setValue('ssrMaxRoughness', ctx.camera.ssrMaxRoughness);\n bindGroup.setValue('ssrStrengthMode', 0);\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\n bindGroup.setValue(\n 'targetSize',\n new Vector4(\n inputColorTexture.width,\n inputColorTexture.height,\n sceneDepthTexture.width,\n sceneDepthTexture.height\n )\n );\n bindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\n bindGroup.setValue('viewMatrix', ctx.camera.viewMatrix);\n bindGroup.setValue('invViewMatrix', ctx.camera.worldMatrix);\n if (hasEnvRadiance) {\n bindGroup.setValue('envLightStrength', ctx.env!.light.strength);\n bindGroup.setValue('envLightSpecularStrength', ctx.env!.light.specularStrength ?? 1);\n ctx.env!.light.envLight.updateBindGroup(bindGroup);\n }\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\n device.setProgram(program);\n device.setBindGroup(0, bindGroup);\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\n }\n /** @internal */\n intersect(\n ctx: DrawContext,\n inputColorTexture: Texture2D,\n sceneDepthTexture: Texture2D,\n blur: boolean,\n srgbOut: boolean\n ) {\n const device = ctx.device;\n const hasEnvRadiance = !!ctx.env!.light.envLight?.hasRadiance();\n const hash = `${Number(blur)}:${\n hasEnvRadiance ? ctx.env!.light.getHash() : ''\n }:${!!ctx.HiZTexture}:${!!ctx.camera.ssrCalcThickness}`;\n let program = SSR._programs[hash];\n if (program === undefined) {\n const created = this._createIntersectProgram(ctx, blur);\n if (!created) {\n return;\n }\n program = created;\n SSR._programs[hash] = program;\n }\n let bindGroup = this._bindgroups[hash];\n if (!bindGroup) {\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\n this._bindgroups[hash] = bindGroup;\n }\n const nearestSampler = fetchSampler('clamp_nearest');\n const linearSampler = fetchSampler('clamp_linear');\n const roughnessTexture = ctx.SSRRoughnessTexture!;\n const normalTexture = ctx.SSRNormalTexture!;\n if (!blur) {\n bindGroup.setTexture('colorTex', inputColorTexture, linearSampler);\n if (hasEnvRadiance) {\n bindGroup.setValue('envLightStrength', ctx.env!.light.strength);\n bindGroup.setValue('envLightSpecularStrength', ctx.env!.light.specularStrength ?? 1);\n ctx.env!.light.envLight.updateBindGroup(bindGroup);\n }\n }\n bindGroup.setTexture('albedoTex', inputColorTexture, linearSampler);\n bindGroup.setTexture('roughnessTex', roughnessTexture, nearestSampler);\n bindGroup.setTexture('normalTex', normalTexture, nearestSampler);\n bindGroup.setTexture('extraTex', inputColorTexture, nearestSampler);\n bindGroup.setTexture('depthTex', sceneDepthTexture, nearestSampler);\n bindGroup.setTexture('zGGXLut', getGGXLUT(1024), fetchSampler('clamp_nearest_nomip'));\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\n bindGroup.setValue('cameraPos', ctx.camera.getWorldPosition());\n bindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\n bindGroup.setValue('projMatrix', ctx.camera.getProjectionMatrix());\n bindGroup.setValue('viewMatrix', ctx.camera.viewMatrix);\n bindGroup.setValue('invViewMatrix', ctx.camera.worldMatrix);\n bindGroup.setValue('ssrParams', ctx.camera.ssrParams);\n bindGroup.setValue('ssrMaxRoughness', ctx.camera.ssrMaxRoughness);\n bindGroup.setValue('ssrStrengthMode', 0);\n if (ctx.HiZTexture) {\n bindGroup.setTexture('hizTex', ctx.HiZTexture, nearestSampler);\n bindGroup.setValue('depthMipLevels', ctx.HiZTexture.mipLevelCount);\n bindGroup.setValue(\n 'targetSize',\n new Vector4(\n sceneDepthTexture.width,\n sceneDepthTexture.height,\n ctx.HiZTexture.width,\n ctx.HiZTexture.height\n )\n );\n } else {\n bindGroup.setValue('ssrStride', ctx.camera.ssrStride);\n bindGroup.setValue(\n 'targetSize',\n new Vector4(\n sceneDepthTexture.width,\n sceneDepthTexture.height,\n sceneDepthTexture.width,\n sceneDepthTexture.height\n )\n );\n }\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\n bindGroup.setValue('srgbOut', srgbOut ? 1 : 0);\n device.setProgram(program);\n device.setBindGroup(0, bindGroup);\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\n }\n /** @internal */\n temporal(\n ctx: DrawContext,\n currentReflectTex: Texture2D,\n sceneDepthTexture: Texture2D,\n prevReflectTex: Texture2D,\n prevMotionVectorTex: Texture2D,\n outFramebuffer: FrameBuffer\n ) {\n const device = ctx.device;\n let program = SSR._temporalProgram;\n if (!program) {\n program = this._createTemporalProgram(ctx);\n SSR._temporalProgram = program;\n }\n if (!this._temporalBindGroup) {\n this._temporalBindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\n }\n this._temporalBindGroup.setTexture('historyColorTex', prevReflectTex, fetchSampler('clamp_linear_nomip'));\n this._temporalBindGroup.setTexture(\n 'currentColorTex',\n currentReflectTex,\n fetchSampler('clamp_nearest_nomip')\n );\n this._temporalBindGroup.setTexture(\n 'currentDepthTex',\n sceneDepthTexture,\n fetchSampler('clamp_nearest_nomip')\n );\n this._temporalBindGroup.setTexture(\n 'motionVector',\n ctx.motionVectorTexture!,\n fetchSampler('clamp_nearest_nomip')\n );\n this._temporalBindGroup.setTexture(\n 'prevMotionVector',\n prevMotionVectorTex,\n fetchSampler('clamp_nearest_nomip')\n );\n this._temporalBindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\n this._temporalBindGroup.setValue(\n 'texSize',\n new Vector2(sceneDepthTexture.width, sceneDepthTexture.height)\n );\n this._temporalBindGroup.setValue('temporalWeight', ctx.camera.ssrTemporalWeight);\n device.setFramebuffer(outFramebuffer);\n device.setProgram(program);\n device.setBindGroup(0, this._temporalBindGroup);\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\n }\n /** {@inheritDoc AbstractPostEffect.apply} */\n apply(ctx: DrawContext, inputColorTexture: Texture2D, sceneDepthTexture: Texture2D, srgbOutput: boolean) {\n const device = ctx.device;\n device.pushDeviceStates();\n copyTexture(\n inputColorTexture,\n device.getFramebuffer()!,\n fetchSampler('clamp_nearest_nomip'),\n AbstractPostEffect.getDefaultRenderState(ctx, 'eq')\n );\n\n const intersectFramebuffer = device.pool.fetchTemporalFramebuffer(\n false,\n inputColorTexture.width,\n inputColorTexture.height,\n 'rgba16f',\n ctx.depthTexture,\n false\n );\n const pingpongFramebuffer = [\n device.pool.fetchTemporalFramebuffer(\n false,\n inputColorTexture.width,\n inputColorTexture.height,\n 'rgba16f',\n ctx.depthTexture,\n false\n ),\n device.pool.fetchTemporalFramebuffer(\n false,\n inputColorTexture.width,\n inputColorTexture.height,\n 'rgba16f',\n ctx.depthTexture,\n false\n )\n ];\n device.setFramebuffer(intersectFramebuffer);\n this.intersect(ctx, inputColorTexture, sceneDepthTexture, true, false);\n const intersectTex = intersectFramebuffer.getColorAttachments()[0] as Texture2D;\n device.setFramebuffer(pingpongFramebuffer[0]);\n const ssrSceneColorTexture = ctx.sceneColorTexture ?? inputColorTexture;\n this.resolve(ctx, ssrSceneColorTexture, sceneDepthTexture, intersectTex);\n if (ctx.camera.ssrBlurScale > 0 && ctx.camera.ssrBlurKernelSize > 0) {\n const blurSizeScale = 255 * ctx.camera.ssrBlurScale;\n const kernelRadius = (Math.max(1, ctx.camera.ssrBlurKernelSize >> 0) - 1) >> 1;\n const stdDev = ctx.camera.ssrBlurStdDev;\n const depthCutoff = ctx.camera.ssrBlurDepthCutoff;\n const blitterH = (SSR._blurBlitterH = SSR._blurBlitterH ?? new BilateralBlurBlitter(false));\n blitterH.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\n this.blurPass(\n ctx,\n blitterH,\n intersectTex,\n 2,\n blurSizeScale,\n kernelRadius,\n stdDev,\n depthCutoff,\n pingpongFramebuffer[0].getColorAttachments()[0] as Texture2D,\n pingpongFramebuffer[1]\n );\n const blitterV = (SSR._blurBlitterV = SSR._blurBlitterV ?? new BilateralBlurBlitter(true));\n blitterV.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\n this.blurPass(\n ctx,\n blitterV,\n intersectTex,\n 2,\n blurSizeScale,\n kernelRadius,\n stdDev,\n depthCutoff,\n pingpongFramebuffer[1].getColorAttachments()[0] as Texture2D,\n pingpongFramebuffer[0]\n );\n }\n const historyManager = ctx.camera.getHistoryResourceManager();\n let reflectanceTex = pingpongFramebuffer[0].getColorAttachments()[0] as Texture2D;\n const prevSSRReflectTex = historyManager!.tryGetPrevious(RGHistoryResources.SSR_REFLECT);\n const prevSSRMotionVectorTex = historyManager!.tryGetPrevious(RGHistoryResources.SSR_MOTION_VECTOR);\n const canTemporal =\n ctx.camera.ssrTemporal &&\n !!ctx.motionVectorTexture &&\n !!prevSSRReflectTex &&\n !!prevSSRMotionVectorTex &&\n prevSSRReflectTex.width === reflectanceTex.width &&\n prevSSRReflectTex.height === reflectanceTex.height;\n if (canTemporal) {\n this.temporal(\n ctx,\n reflectanceTex,\n sceneDepthTexture,\n prevSSRReflectTex as Texture2D,\n prevSSRMotionVectorTex as Texture2D,\n pingpongFramebuffer[1]\n );\n reflectanceTex = pingpongFramebuffer[1].getColorAttachments()[0] as Texture2D;\n }\n device.popDeviceStates();\n this.combine(ctx, inputColorTexture, reflectanceTex, srgbOutput);\n if (ctx.camera.ssrTemporal) {\n const reflectanceSize = { width: reflectanceTex.width, height: reflectanceTex.height };\n historyManager!.queueRetainedCommit(\n RGHistoryResources.SSR_REFLECT,\n {\n format: reflectanceTex.format,\n sizeMode: 'absolute',\n width: reflectanceTex.width,\n height: reflectanceTex.height\n },\n reflectanceSize,\n reflectanceTex\n );\n }\n if (ctx.camera.ssrTemporal && ctx.motionVectorTexture) {\n const motionVectorSize = {\n width: ctx.motionVectorTexture.width,\n height: ctx.motionVectorTexture.height\n };\n historyManager!.queueRetainedCommit(\n RGHistoryResources.SSR_MOTION_VECTOR,\n {\n format: ctx.motionVectorTexture.format,\n sizeMode: 'absolute',\n width: ctx.motionVectorTexture.width,\n height: ctx.motionVectorTexture.height\n },\n motionVectorSize,\n ctx.motionVectorTexture\n );\n }\n device.pool.releaseFrameBuffer(intersectFramebuffer);\n device.pool.releaseFrameBuffer(pingpongFramebuffer[0]);\n device.pool.releaseFrameBuffer(pingpongFramebuffer[1]);\n }\n /** @internal */\n private _createCombineProgrm(ctx: DrawContext) {\n const program = ctx.device.buildRenderProgram({\n vertex(pb) {\n this.flip = pb.int().uniform(0);\n this.$inputs.pos = pb.vec2().attrib('position');\n this.$outputs.uv = pb.vec2();\n pb.main(function () {\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\n this.$if(pb.notEqual(this.flip, 0), function () {\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\n });\n });\n },\n fragment(pb) {\n this.colorTex = pb.tex2D().uniform(0);\n this.reflectanceTex = pb.tex2D().uniform(0);\n this.roughnessTex = pb.tex2D().uniform(0);\n this.albedoTex = pb.tex2D().uniform(0);\n this.extraTex = pb.tex2D().uniform(0);\n this.normalTex = pb.tex2D().uniform(0);\n this.depthTex = pb.tex2D().uniform(0);\n this.zGGXLut = pb.tex2D().uniform(0);\n this.targetSize = pb.vec4().uniform(0);\n this.cameraNearFar = pb.vec2().uniform(0);\n this.viewMatrix = pb.mat4().uniform(0);\n this.invProjMatrix = pb.mat4().uniform(0);\n this.ssrMaxRoughness = pb.float().uniform(0);\n this.ssrStrengthMode = pb.int().uniform(0);\n this.srgbOut = pb.int().uniform(0);\n this.$outputs.outColor = pb.vec4();\n pb.func('getPosition', [pb.vec2('uv')], function () {\n this.$l.linearDepth = ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0);\n this.$l.nonLinearDepth = pb.div(\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\n );\n this.$l.clipSpacePos = pb.vec4(\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\n pb.sub(pb.mul(pb.clamp(this.nonLinearDepth, 0, 1), 2), 1),\n 1\n );\n this.$l.viewPos4 = pb.mul(this.invProjMatrix, this.clipSpacePos);\n this.$return(pb.vec4(pb.div(this.viewPos4.xyz, this.viewPos4.w), this.linearDepth));\n });\n pb.func('resolveDeferredStrength', [pb.vec2('uv'), pb.vec4('roughnessValue')], function () {\n this.$l.roughness = pb.clamp(this.roughnessValue.a, 0.045, 1);\n this.$l.base = pb.textureSampleLevel(this.albedoTex, this.uv, 0);\n // Hybrid may merge forward-only SSR surface data into the roughness MRT while the\n // deferred GBuffer remains empty at those pixels. Fall back to forward SSR semantics\n // there instead of decoding the mixed texture as deferred metallic/occlusion/F0 data.\n this.$if(pb.lessThanEqual(this.base.a, 1e-5), function () {\n this.$return(pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1)));\n });\n this.$l.pos = this.getPosition(this.uv);\n this.$if(pb.greaterThanEqual(this.pos.w, 1), function () {\n this.$return(pb.vec3(0));\n });\n this.$l.viewPos = this.pos.xyz;\n this.$l.viewVec = pb.neg(pb.normalize(this.viewPos));\n this.$l.worldNormal = pb.sub(\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\n pb.vec3(1)\n );\n this.$l.viewNormal = pb.normalize(pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz);\n this.$l.NoV = pb.clamp(pb.dot(this.viewNormal, this.viewVec), 0.0001, 1);\n this.$l.baseColor = this.base.rgb;\n this.$l.extra = pb.textureSampleLevel(this.extraTex, this.uv, 0);\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\n this.$l.occlusion = pb.clamp(this.roughnessValue.g, 0, 1);\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\n this.$l.specularWeight = pb.clamp(this.extra.a, 0, 1);\n this.$l.f0 = pb.mix(pb.mul(pb.vec3(0.04), this.specStrength), this.baseColor, this.metallic);\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.roughness)), this.f0), this.f0);\n this.$l.kS = pb.add(this.f0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\n this.$l.fab = pb.clamp(\n pb.textureSampleLevel(\n this.zGGXLut,\n pb.clamp(pb.vec2(this.NoV, this.roughness), pb.vec2(0), pb.vec2(1)),\n 0\n ).rg,\n pb.vec2(0),\n pb.vec2(1)\n );\n this.$l.FssEss = pb.add(pb.mul(this.kS, this.fab.x), pb.vec3(this.fab.y));\n this.$return(\n pb.clamp(pb.mul(this.FssEss, this.occlusion, this.specularWeight), pb.vec3(0), pb.vec3(1))\n );\n });\n pb.func(\n 'resolveSample',\n [pb.vec2('uv'), pb.vec3('sceneColor'), pb.vec3('reflectance'), pb.vec4('roughnessValue')],\n function () {\n this.$l.r = pb.div(this.reflectance, pb.add(this.reflectance, pb.vec3(1)));\n this.$l.strength = pb.vec3();\n this.$if(pb.equal(this.ssrStrengthMode, 0), function () {\n this.strength = pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1));\n })\n .$elseif(pb.equal(this.ssrStrengthMode, 1), function () {\n this.$l.roughAtten = pb.clamp(\n pb.sub(1, pb.div(this.roughnessValue.a, pb.max(this.ssrMaxRoughness, 1e-4))),\n 0,\n 1\n );\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\n this.$l.f0 = pb.mix(pb.mul(0.04, this.specStrength), 1, this.metallic);\n this.$l.s = pb.mul(this.roughAtten, this.roughAtten, this.f0);\n this.strength = pb.vec3(this.s);\n })\n .$else(function () {\n this.strength = this.resolveDeferredStrength(this.uv, this.roughnessValue);\n });\n this.color = pb.add(\n pb.mul(this.r, this.strength),\n pb.mul(this.sceneColor, pb.sub(pb.vec3(1), this.strength))\n );\n this.$return(this.color);\n }\n );\n pb.main(function () {\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.targetSize.xy);\n this.$l.sceneColor = pb.textureSampleLevel(this.colorTex, this.screenUV, 0).rgb;\n this.$l.roughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.screenUV, 0);\n this.$l.combined = pb.vec3();\n this.$if(pb.greaterThanEqual(this.roughnessInfo.a, this.ssrMaxRoughness), function () {\n this.combined = this.sceneColor;\n }).$else(function () {\n this.$l.reflectance = pb.textureSampleLevel(this.reflectanceTex, this.screenUV, 0).rgb;\n this.combined = this.resolveSample(\n this.screenUV,\n this.sceneColor,\n this.reflectance,\n this.roughnessInfo\n );\n });\n this.$if(pb.equal(this.srgbOut, 0), function () {\n this.$outputs.outColor = pb.vec4(this.combined, 1);\n }).$else(function () {\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.combined), 1);\n });\n });\n }\n })!;\n program.name = '@SSR_Combine';\n return program;\n }\n /** @internal */\n private _createResolveProgram(ctx: DrawContext) {\n const program = ctx.device.buildRenderProgram({\n vertex(pb) {\n this.flip = pb.int().uniform(0);\n this.$inputs.pos = pb.vec2().attrib('position');\n this.$outputs.uv = pb.vec2();\n if (ctx.env!.light.envLight?.hasRadiance()) {\n ctx.env!.light.envLight.initShaderBindings(pb);\n }\n pb.main(function () {\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\n this.$if(pb.notEqual(this.flip, 0), function () {\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\n });\n });\n },\n fragment(pb) {\n this.colorTex = pb.tex2D().uniform(0);\n this.intersectTex = pb.tex2D().uniform(0);\n this.roughnessTex = pb.tex2D().uniform(0);\n this.normalTex = pb.tex2D().uniform(0);\n this.albedoTex = pb.tex2D().uniform(0);\n this.extraTex = pb.tex2D().uniform(0);\n this.depthTex = pb.tex2D().uniform(0);\n this.zGGXLut = pb.tex2D().uniform(0);\n this.cameraNearFar = pb.vec2().uniform(0);\n this.targetSize = pb.vec4().uniform(0);\n this.viewMatrix = pb.mat4().uniform(0);\n this.invViewMatrix = pb.mat4().uniform(0);\n this.invProjMatrix = pb.mat4().uniform(0);\n this.ssrMaxRoughness = pb.float().uniform(0);\n this.ssrStrengthMode = pb.int().uniform(0);\n if (ctx.env!.light.envLight?.hasRadiance()) {\n this.envLightStrength = pb.float().uniform(0);\n this.envLightSpecularStrength = pb.float().uniform(0);\n ctx.env!.light.envLight.initShaderBindings(pb);\n }\n this.$outputs.outColor = pb.vec4();\n pb.func('getPosition', [pb.vec2('uv'), pb.mat4('mat')], function () {\n this.$l.linearDepth = ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0);\n this.$l.nonLinearDepth = pb.div(\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\n );\n this.$l.clipSpacePos = pb.vec4(\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\n pb.sub(pb.mul(pb.clamp(this.nonLinearDepth, 0, 1), 2), 1),\n 1\n );\n this.$l.wPos = pb.mul(this.mat, this.clipSpacePos);\n this.$return(pb.vec4(pb.div(this.wPos.xyz, this.wPos.w), this.linearDepth));\n });\n pb.func('resolveDeferredStrength', [pb.vec2('uv'), pb.vec4('roughnessValue')], function () {\n this.$l.roughness = pb.clamp(this.roughnessValue.a, 0.045, 1);\n this.$l.base = pb.textureSampleLevel(this.albedoTex, this.uv, 0);\n this.$if(pb.lessThanEqual(this.base.a, 1e-5), function () {\n this.$return(pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1)));\n });\n this.$l.pos = this.getPosition(this.uv, this.invProjMatrix);\n this.$if(pb.greaterThanEqual(this.pos.w, 1), function () {\n this.$return(pb.vec3(0));\n });\n this.$l.viewPos = this.pos.xyz;\n this.$l.viewVec = pb.neg(pb.normalize(this.viewPos));\n this.$l.worldNormal = pb.sub(\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\n pb.vec3(1)\n );\n this.$l.viewNormal = pb.normalize(pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz);\n this.$l.NoV = pb.clamp(pb.dot(this.viewNormal, this.viewVec), 0.0001, 1);\n this.$l.baseColor = this.base.rgb;\n this.$l.extra = pb.textureSampleLevel(this.extraTex, this.uv, 0);\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\n this.$l.occlusion = pb.clamp(this.roughnessValue.g, 0, 1);\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\n this.$l.specularWeight = pb.clamp(this.extra.a, 0, 1);\n this.$l.f0 = pb.mix(pb.mul(pb.vec3(0.04), this.specStrength), this.baseColor, this.metallic);\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.roughness)), this.f0), this.f0);\n this.$l.kS = pb.add(this.f0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\n this.$l.fab = pb.clamp(\n pb.textureSampleLevel(\n this.zGGXLut,\n pb.clamp(pb.vec2(this.NoV, this.roughness), pb.vec2(0), pb.vec2(1)),\n 0\n ).rg,\n pb.vec2(0),\n pb.vec2(1)\n );\n this.$l.FssEss = pb.add(pb.mul(this.kS, this.fab.x), pb.vec3(this.fab.y));\n this.$return(\n pb.clamp(pb.mul(this.FssEss, this.occlusion, this.specularWeight), pb.vec3(0), pb.vec3(1))\n );\n });\n pb.func(\n 'resolveSample',\n [pb.vec2('uv'), pb.vec3('sceneColor'), pb.vec3('reflectance'), pb.vec4('roughnessValue')],\n function () {\n this.$l.r = pb.div(this.reflectance, pb.add(this.reflectance, pb.vec3(1)));\n this.$l.strength = pb.vec3();\n this.$if(pb.equal(this.ssrStrengthMode, 0), function () {\n this.strength = pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1));\n })\n .$elseif(pb.equal(this.ssrStrengthMode, 1), function () {\n this.$l.roughAtten = pb.clamp(\n pb.sub(1, pb.div(this.roughnessValue.a, pb.max(this.ssrMaxRoughness, 1e-4))),\n 0,\n 1\n );\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\n this.$l.f0 = pb.mix(pb.mul(0.04, this.specStrength), 1, this.metallic);\n this.$l.s = pb.mul(this.roughAtten, this.roughAtten, this.f0);\n this.strength = pb.vec3(this.s);\n })\n .$else(function () {\n this.strength = this.resolveDeferredStrength(this.uv, this.roughnessValue);\n });\n this.color = pb.add(\n pb.mul(this.r, this.strength),\n pb.mul(this.sceneColor, pb.sub(pb.vec3(1), this.strength))\n );\n this.$return(this.color);\n }\n );\n pb.func('resolveEnvRadiance', [pb.vec2('uv'), pb.vec4('roughnessInfo')], function () {\n if (!ctx.env!.light.envLight?.hasRadiance()) {\n this.$return(pb.vec3(0));\n return;\n }\n this.$l.pos = this.getPosition(this.uv, this.invProjMatrix);\n this.$if(pb.greaterThanEqual(this.pos.w, 1), function () {\n this.$return(pb.vec3(0));\n });\n this.$l.roughness = this.roughnessInfo.a;\n this.$l.viewPos = this.pos.xyz;\n this.$l.worldNormal = pb.sub(\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\n pb.vec3(1)\n );\n this.$l.viewVec = pb.normalize(this.viewPos);\n this.$l.viewNormal = pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz;\n this.$l.reflectVec = pb.add(\n pb.reflect(this.viewVec, this.viewNormal),\n SSR_calcJitter(this, this.viewPos, this.roughness)\n );\n this.$l.reflectVecW = pb.mul(this.invViewMatrix, pb.vec4(this.reflectVec, 0)).xyz;\n this.$l.roughness2 = pb.clamp(this.roughness, 0, 1);\n this.$l.env = pb.mul(\n ctx.env!.light.envLight.getRadiance(this, this.reflectVecW, this.roughness2)!,\n this.envLightStrength,\n this.envLightSpecularStrength\n );\n this.$return(pb.min(this.env, pb.vec3(1)));\n });\n pb.func(\n 'resolveReflectance',\n [pb.vec2('uv'), pb.vec3('reflectSceneColor'), pb.vec4('roughnessInfo'), pb.float('alpha')],\n function () {\n this.$l.env = this.resolveEnvRadiance(this.uv, this.roughnessInfo);\n this.$l.reflectance = pb.mix(this.env, this.reflectSceneColor, pb.clamp(this.alpha, 0, 1));\n this.$return(this.reflectance);\n }\n );\n pb.main(function () {\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.targetSize.xy);\n this.$l.roughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.screenUV, 0);\n this.$l.intersectSample = pb.vec4(0);\n this.$l.reflectance = pb.vec3(0);\n this.$if(pb.lessThan(this.roughnessInfo.a, this.ssrMaxRoughness), function () {\n this.intersectSample = pb.textureSampleLevel(this.intersectTex, this.screenUV, 0);\n this.$l.hitAlpha = pb.clamp(this.intersectSample.w, 0, 1);\n this.$l.hitUV = pb.clamp(this.intersectSample.xy, pb.vec2(0), pb.vec2(1));\n this.$if(pb.greaterThan(this.hitAlpha, 0), function () {\n this.$l.indirectIntersectSample = pb.textureSampleLevel(this.intersectTex, this.hitUV, 0);\n this.$l.indirectAlpha = pb.clamp(this.indirectIntersectSample.w, 0, 1);\n this.$l.indirectUV = pb.clamp(this.indirectIntersectSample.xy, pb.vec2(0), pb.vec2(1));\n this.$l.indirectRoughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.hitUV, 0);\n this.$l.indirectReflectance = pb.vec3();\n this.$if(pb.greaterThan(this.indirectAlpha, 0), function () {\n this.$l.indirectReflectSceneColor = pb.textureSampleLevel(\n this.colorTex,\n this.indirectUV,\n 0\n ).rgb;\n this.indirectReflectance = this.resolveReflectance(\n this.hitUV,\n this.indirectReflectSceneColor,\n this.indirectRoughnessInfo,\n this.indirectAlpha\n );\n }).$else(function () {\n this.indirectReflectance = this.resolveEnvRadiance(this.hitUV, this.indirectRoughnessInfo);\n });\n this.$l.reflectSceneColor = pb.textureSampleLevel(this.colorTex, this.hitUV, 0).rgb;\n this.$l.reflectSceneColor = this.resolveSample(\n this.hitUV,\n this.reflectSceneColor,\n this.indirectReflectance,\n this.indirectRoughnessInfo\n );\n this.reflectance = this.resolveReflectance(\n this.screenUV,\n this.reflectSceneColor,\n this.roughnessInfo,\n this.hitAlpha\n );\n }).$else(function () {\n this.reflectance = this.resolveEnvRadiance(this.screenUV, this.roughnessInfo);\n });\n });\n this.$outputs.outColor = pb.vec4(this.reflectance, this.intersectSample.z);\n });\n }\n })!;\n program.name = '@SSR_Resolve';\n return program;\n }\n /** @internal */\n private _createTemporalProgram(ctx: DrawContext) {\n const program = ctx.device.buildRenderProgram({\n vertex(pb) {\n this.flip = pb.int().uniform(0);\n this.$inputs.pos = pb.vec2().attrib('position');\n this.$outputs.uv = pb.vec2();\n pb.main(function () {\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\n this.$if(pb.notEqual(this.flip, 0), function () {\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\n });\n });\n },\n fragment(pb) {\n this.historyColorTex = pb.tex2D().uniform(0);\n this.currentColorTex = pb.tex2D().uniform(0);\n this.currentDepthTex = pb.tex2D().uniform(0);\n this.motionVector = pb.tex2D().uniform(0);\n this.prevMotionVector = pb.tex2D().uniform(0);\n this.texSize = pb.vec2().uniform(0);\n this.temporalWeight = pb.float().uniform(0);\n this.$outputs.outColor = pb.vec4();\n pb.main(function () {\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.texSize);\n this.$l.currentColor = pb.textureSampleLevel(this.currentColorTex, this.screenUV, 0).rgb;\n this.$l.resolvedColor = temporalResolve(\n this,\n this.currentColorTex,\n this.historyColorTex,\n this.currentDepthTex,\n this.motionVector,\n this.prevMotionVector,\n this.screenUV,\n this.texSize,\n 0\n );\n this.$l.w = pb.clamp(this.temporalWeight, 0, 1);\n this.$outputs.outColor = pb.vec4(pb.mix(this.currentColor, this.resolvedColor, this.w), 1);\n });\n }\n })!;\n program.name = '@SSR_Temporal';\n return program;\n }\n /** @internal */\n private _createIntersectProgram(ctx: DrawContext, blur: boolean): Nullable<GPUProgram> {\n const program = ctx.device.buildRenderProgram({\n vertex(pb) {\n this.flip = pb.int().uniform(0);\n this.$inputs.pos = pb.vec2().attrib('position');\n this.$outputs.uv = pb.vec2();\n if (!blur && ctx.env!.light.envLight?.hasRadiance()) {\n ctx.env!.light.envLight.initShaderBindings(pb);\n }\n pb.main(function () {\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\n this.$if(pb.notEqual(this.flip, 0), function () {\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\n });\n });\n },\n fragment(pb) {\n if (!blur) {\n this.colorTex = pb.tex2D().uniform(0);\n if (ctx.env!.light.envLight?.hasRadiance()) {\n this.envLightStrength = pb.float().uniform(0);\n this.envLightSpecularStrength = pb.float().uniform(0);\n ctx.env!.light.envLight.initShaderBindings(pb);\n }\n }\n this.albedoTex = pb.tex2D().uniform(0);\n this.roughnessTex = pb.tex2D().uniform(0);\n this.normalTex = pb.tex2D().uniform(0);\n this.extraTex = pb.tex2D().uniform(0);\n this.depthTex = pb.tex2D().uniform(0);\n this.zGGXLut = pb.tex2D().uniform(0);\n this.cameraNearFar = pb.vec2().uniform(0);\n this.cameraPos = pb.vec3().uniform(0);\n this.invProjMatrix = pb.mat4().uniform(0);\n this.projMatrix = pb.mat4().uniform(0);\n this.viewMatrix = pb.mat4().uniform(0);\n this.invViewMatrix = pb.mat4().uniform(0);\n this.ssrParams = pb.vec4().uniform(0);\n this.ssrMaxRoughness = pb.float().uniform(0);\n this.ssrStrengthMode = pb.int().uniform(0);\n this.targetSize = pb.vec4().uniform(0);\n if (ctx.HiZTexture) {\n this.hizTex = pb.tex2D().uniform(0);\n this.depthMipLevels = pb.int().uniform(0);\n } else {\n this.ssrStride = pb.float().uniform(0);\n }\n this.srgbOut = pb.int().uniform(0);\n this.$outputs.outColor = pb.vec4();\n pb.func('getPosition', [pb.vec2('uv'), pb.mat4('mat')], function () {\n this.$l.linearDepth = ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0);\n this.$l.nonLinearDepth = pb.div(\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\n );\n this.$l.clipSpacePos = pb.vec4(\n pb.sub(pb.mul(this.uv, 2), pb.vec2(1)),\n pb.sub(pb.mul(pb.clamp(this.nonLinearDepth, 0, 1), 2), 1),\n 1\n );\n this.$l.wPos = pb.mul(this.mat, this.clipSpacePos);\n this.$return(pb.vec4(pb.div(this.wPos.xyz, this.wPos.w), this.linearDepth));\n });\n pb.func(\n 'resolveDeferredStrength',\n [pb.vec2('uv'), pb.vec4('roughnessValue'), pb.vec4('viewPosInfo')],\n function () {\n this.$l.roughness = pb.clamp(this.roughnessValue.a, 0.045, 1);\n this.$l.base = pb.textureSampleLevel(this.albedoTex, this.uv, 0);\n this.$if(pb.lessThanEqual(this.base.a, 1e-5), function () {\n this.$return(pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1)));\n });\n this.$l.viewPos = this.viewPosInfo.xyz;\n this.$l.viewVec = pb.neg(pb.normalize(this.viewPos));\n this.$l.worldNormal = pb.sub(\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\n pb.vec3(1)\n );\n this.$l.viewNormal = pb.normalize(pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz);\n this.$l.NoV = pb.clamp(pb.dot(this.viewNormal, this.viewVec), 0.0001, 1);\n this.$l.baseColor = this.base.rgb;\n this.$l.extra = pb.textureSampleLevel(this.extraTex, this.uv, 0);\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\n this.$l.occlusion = pb.clamp(this.roughnessValue.g, 0, 1);\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\n this.$l.specularWeight = pb.clamp(this.extra.a, 0, 1);\n this.$l.f0 = pb.mix(pb.mul(pb.vec3(0.04), this.specStrength), this.baseColor, this.metallic);\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.roughness)), this.f0), this.f0);\n this.$l.kS = pb.add(this.f0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\n this.$l.fab = pb.clamp(\n pb.textureSampleLevel(\n this.zGGXLut,\n pb.clamp(pb.vec2(this.NoV, this.roughness), pb.vec2(0), pb.vec2(1)),\n 0\n ).rg,\n pb.vec2(0),\n pb.vec2(1)\n );\n this.$l.FssEss = pb.add(pb.mul(this.kS, this.fab.x), pb.vec3(this.fab.y));\n this.$return(\n pb.clamp(pb.mul(this.FssEss, this.occlusion, this.specularWeight), pb.vec3(0), pb.vec3(1))\n );\n }\n );\n pb.main(function () {\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.targetSize.xy);\n this.$l.roughnessValue = pb.textureSampleLevel(this.roughnessTex, this.screenUV, 0);\n this.$l.roughness = this.roughnessValue.a;\n if (!blur) {\n this.$l.sceneColor = pb.textureSampleLevel(this.colorTex, this.screenUV, 0).rgb;\n }\n this.$l.color = pb.vec3(0);\n this.$l.a = pb.float(0);\n this.$if(pb.lessThan(this.roughness, this.ssrMaxRoughness), function () {\n this.$l.pos = this.getPosition(this.screenUV, this.invProjMatrix);\n this.$l.linearDepth = this.pos.w;\n this.$if(pb.greaterThanEqual(this.linearDepth, 1), function () {\n if (!blur) {\n this.color = this.sceneColor;\n this.a = 1;\n }\n }).$else(function () {\n this.$l.viewPos = this.pos.xyz;\n this.$l.worldNormal = pb.sub(\n pb.mul(pb.textureSampleLevel(this.normalTex, this.screenUV, 0).rgb, 2),\n pb.vec3(1)\n );\n this.$l.viewVec = pb.normalize(this.viewPos);\n this.$l.viewNormal = pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz;\n this.$l.reflectVec = pb.add(\n pb.reflect(this.viewVec, this.viewNormal),\n SSR_calcJitter(this, this.viewPos, this.roughness)\n );\n this.$l.hitInfo = pb.vec4(0);\n if (ctx.HiZTexture) {\n this.hitInfo = screenSpaceRayTracing_HiZ(\n this,\n this.viewPos,\n this.reflectVec,\n this.viewMatrix,\n this.projMatrix,\n this.invProjMatrix,\n this.cameraNearFar,\n this.depthMipLevels,\n this.ssrParams.y,\n this.ssrParams.x,\n this.ssrParams.z,\n this.targetSize,\n this.hizTex,\n this.normalTex\n );\n } else {\n this.hitInfo = screenSpaceRayTracing_Linear2D(\n this,\n this.viewPos,\n this.reflectVec,\n this.viewMatrix,\n this.projMatrix,\n this.invProjMatrix,\n this.cameraNearFar,\n this.ssrParams.x,\n this.ssrParams.y,\n this.ssrParams.z,\n this.ssrStride,\n this.targetSize,\n this.depthTex,\n this.normalTex,\n !!ctx.camera.ssrCalcThickness\n );\n }\n this.$l.hitAlpha = pb.clamp(this.hitInfo.w, 0, 1);\n this.$l.hitUV = pb.clamp(this.hitInfo.xy, pb.vec2(0), pb.vec2(1));\n if (blur) {\n this.blurRadius = pb.float(0);\n this.$if(pb.greaterThan(this.roughness, 0.001), function () {\n this.$l.coneAngle = pb.mul(pb.min(this.roughness, 0.999), Math.PI * 0.5);\n this.$l.coneLen = this.$choice(\n pb.greaterThan(this.hitAlpha, 0),\n this.hitInfo.z,\n pb.min(this.targetSize.z, this.targetSize.w)\n );\n this.$l.opLen = pb.mul(pb.tan(this.coneAngle), this.coneLen, 2);\n this.$l.a2 = pb.mul(this.opLen, this.opLen);\n this.$l.fh2 = pb.mul(this.coneLen, this.coneLen, 4);\n this.blurRadius = pb.div(\n pb.mul(this.opLen, pb.sub(pb.sqrt(pb.add(this.a2, this.fh2)), this.opLen)),\n pb.mul(this.coneLen, 4)\n );\n });\n this.a = this.hitAlpha;\n this.color = pb.vec3(this.hitUV, pb.clamp(pb.div(this.blurRadius, 255), 0, 1));\n } else {\n if (ctx.env!.light.envLight?.hasRadiance()) {\n this.$l.reflectVecW = pb.mul(this.invViewMatrix, pb.vec4(this.reflectVec, 0)).xyz;\n this.$l.env = pb.mul(\n ctx.env!.light.envLight.getRadiance(this, this.reflectVecW, this.roughness)!,\n this.envLightStrength,\n this.envLightSpecularStrength\n );\n } else {\n this.$l.env = pb.vec3(0);\n }\n this.$l.reflectance = pb.mix(\n this.env,\n pb.textureSampleLevel(this.colorTex, this.hitUV, 0).rgb,\n this.hitAlpha\n );\n this.$l.reflectance = pb.div(this.$l.reflectance, pb.add(this.$l.reflectance, pb.vec3(1)));\n this.$l.strength = pb.vec3();\n this.$if(pb.equal(this.ssrStrengthMode, 0), function () {\n this.strength = pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1));\n })\n .$elseif(pb.equal(this.ssrStrengthMode, 1), function () {\n this.$l.roughAtten = pb.clamp(\n pb.sub(1, pb.div(this.roughness, pb.max(this.ssrMaxRoughness, 1e-4))),\n 0,\n 1\n );\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\n this.$l.f0 = pb.mix(pb.mul(0.04, this.specStrength), 1, this.metallic);\n this.$l.s = pb.mul(this.roughAtten, this.roughAtten, this.f0);\n this.strength = pb.vec3(this.s);\n })\n .$else(function () {\n this.strength = this.resolveDeferredStrength(\n this.screenUV,\n this.roughnessValue,\n this.pos\n );\n });\n this.color = pb.add(\n pb.mul(this.reflectance, this.strength),\n pb.mul(this.sceneColor, pb.sub(pb.vec3(1), this.strength))\n );\n }\n });\n });\n this.$if(pb.equal(this.srgbOut, 0), function () {\n this.$outputs.outColor = pb.vec4(this.color, this.a);\n }).$else(function () {\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.color), this.a);\n });\n });\n }\n });\n if (!program) {\n return null;\n }\n program.name = blur ? '@SSR_Intersect_Blur' : '@SSR_Intersect';\n return program;\n }\n}\n"],"names":["SSR","AbstractPostEffect","_programs","_resolveProgram","_combineProgram","_temporalProgram","_blurBlitterH","_blurBlitterV","_bindgroups","_resolveBindGroup","_combineBindGroup","_temporalBindGroup","_layer","PostEffectLayer","opaque","requireLinearDepthTexture","requireDepthAttachment","requireMotionVectorTexture","ctx","camera","ssrTemporal","setup","s","graph","history","linearDepthHandle","blackboard","get","FrameResources","LinearDepth","texDesc","format","sizeMode","width","height","readCommon","builder","read","dep","dependencies","getLinearDepth","rg","getTexture","linearDepthTexture","intersectHandle","addPass","input","out","createTexture","label","fb","createFramebuffer","colorAttachments","depthAttachment","sceneDepthAttachment","ignoreDepthStencil","setExecute","device","pushDeviceStates","setFramebuffer","getFramebuffer","intersect","popDeviceStates","resolveHandle","inputTex","resolve","sceneColorTexture","reflectHandle","ssrBlurScale","ssrBlurKernelSize","middle","middleFB","outFB","intersectTex","blurSizeScale","kernelRadius","Math","max","stdDev","ssrBlurStdDev","depthCutoff","ssrBlurDepthCutoff","blitterH","BilateralBlurBlitter","renderStates","getDefaultRenderState","blurPass","blitterV","wantTemporal","motionVectorHandle","MotionVector","historySize","prevReflectHandle","importPreviousIfCompatible","RGHistoryResources","SSR_REFLECT","prevMotionVectorHandle","SSR_MOTION_VECTOR","blurredHandle","temporal","finalReflectHandle","output","createOutput","needDepthAttachment","framebuffer","reflectanceTex","copyTexture","fetchSampler","combine","srgbOutput","queueRetainedCommit","motionVectorTexture","color","blitter","blurSizeTex","blurSizeIndex","srcTex","fbTo","size","Vector2","depthTex","sampler","cameraNearFar","setXY","getNearPlane","getFarPlane","srgbOut","blit","inputColorTexture","program","undefined","_createCombineProgrm","roughnessTexture","SSRRoughnessTexture","createBindGroup","bindGroupLayouts","linearSampler","nearestSampler","setTexture","SSRNormalTexture","getGGXLUT","setValue","ssrMaxRoughness","viewMatrix","Matrix4x4","invert","getProjectionMatrix","Vector4","needFlip","setProgram","setBindGroup","drawFullscreenQuad","sceneDepthTexture","intersectTexture","hasEnvRadiance","env","light","envLight","hasRadiance","hash","getHash","_createResolveProgram","bindGroup","normalTexture","worldMatrix","strength","specularStrength","updateBindGroup","blur","Number","HiZTexture","ssrCalcThickness","created","_createIntersectProgram","getWorldPosition","ssrParams","mipLevelCount","ssrStride","currentReflectTex","prevReflectTex","prevMotionVectorTex","outFramebuffer","_createTemporalProgram","ssrTemporalWeight","apply","intersectFramebuffer","pool","fetchTemporalFramebuffer","depthTexture","pingpongFramebuffer","getColorAttachments","ssrSceneColorTexture","historyManager","getHistoryResourceManager","prevSSRReflectTex","tryGetPrevious","prevSSRMotionVectorTex","canTemporal","reflectanceSize","motionVectorSize","releaseFrameBuffer","buildRenderProgram","vertex","pb","flip","int","uniform","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","$if","notEqual","y","neg","fragment","colorTex","tex2D","roughnessTex","albedoTex","extraTex","normalTex","zGGXLut","targetSize","mat4","invProjMatrix","float","ssrStrengthMode","outColor","func","$l","linearDepth","ShaderHelper","sampleLinearDepth","nonLinearDepth","div","sub","x","clipSpacePos","clamp","viewPos4","$return","xyz","w","roughness","roughnessValue","a","base","textureSampleLevel","lessThanEqual","rgb","vec3","getPosition","greaterThanEqual","viewPos","viewVec","normalize","worldNormal","viewNormal","NoV","dot","baseColor","extra","metallic","r","occlusion","g","specStrength","b","specularWeight","f0","mix","Fr","kS","pow","fab","FssEss","reflectance","equal","$elseif","roughAtten","$else","resolveDeferredStrength","sceneColor","screenUV","fragCoord","roughnessInfo","combined","resolveSample","linearToGamma","name","initShaderBindings","invViewMatrix","envLightStrength","envLightSpecularStrength","wPos","mat","reflectVec","reflect","SSR_calcJitter","reflectVecW","roughness2","getRadiance","min","resolveEnvRadiance","reflectSceneColor","alpha","intersectSample","lessThan","hitAlpha","hitUV","greaterThan","indirectIntersectSample","indirectAlpha","indirectUV","indirectRoughnessInfo","indirectReflectance","indirectReflectSceneColor","resolveReflectance","z","historyColorTex","currentColorTex","currentDepthTex","motionVector","prevMotionVector","texSize","temporalWeight","currentColor","resolvedColor","temporalResolve","cameraPos","projMatrix","hizTex","depthMipLevels","viewPosInfo","hitInfo","screenSpaceRayTracing_HiZ","screenSpaceRayTracing_Linear2D","blurRadius","coneAngle","PI","coneLen","$choice","opLen","tan","a2","fh2","sqrt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssr.js","sources":["../../src/posteffect/ssr.ts"],"sourcesContent":["import { AbstractPostEffect, PostEffectLayer } from './posteffect';\r\nimport type { PostEffectSetupContext } from './posteffect';\r\nimport { linearToGamma } from '../shaders/misc';\r\nimport type { BindGroup, FrameBuffer, GPUProgram, Texture2D } from '@zephyr3d/device';\r\nimport type { DrawContext } from '../render';\r\nimport { screenSpaceRayTracing_HiZ, screenSpaceRayTracing_Linear2D, SSR_calcJitter } from '../shaders/ssr';\r\nimport { temporalResolve } from '../shaders/temporal';\r\nimport type { Nullable } from '@zephyr3d/base';\r\nimport { Matrix4x4, Vector2, Vector4 } from '@zephyr3d/base';\r\nimport { copyTexture, fetchSampler } from '../utility/misc';\r\nimport { getGGXLUT } from '../utility/textures/ggxlut';\r\nimport { BilateralBlurBlitter } from '../blitter/bilateralblur';\r\nimport { ShaderHelper } from '../material';\r\nimport { RGHistoryResources } from '../render/rendergraph/history_resources';\r\nimport { FrameResources } from '../render/rendergraph/blackboard';\r\nimport type { RGExecuteContext, RGHandle, RGPassBuilder, RGTextureDesc } from '../render/rendergraph/types';\r\n\r\n/**\r\n * SSR post effect\r\n *\r\n * @remarks\r\n * Internal used in light pass\r\n *\r\n * @internal\r\n */\r\nexport class SSR extends AbstractPostEffect {\r\n private static _programs: Record<string, GPUProgram> = {};\r\n private static _resolveProgram: Record<string, GPUProgram> = {};\r\n private static _combineProgram?: GPUProgram;\r\n private static _temporalProgram?: GPUProgram;\r\n private static _blurBlitterH: Nullable<BilateralBlurBlitter> = null;\r\n private static _blurBlitterV: Nullable<BilateralBlurBlitter> = null;\r\n private _bindgroups: Record<string, BindGroup>;\r\n private _resolveBindGroup: Record<string, BindGroup>;\r\n private _combineBindGroup: Nullable<BindGroup>;\r\n private _temporalBindGroup: Nullable<BindGroup>;\r\n /**\r\n * Creates an instance of SSR post effect\r\n */\r\n constructor() {\r\n super();\r\n this._layer = PostEffectLayer.opaque;\r\n this._bindgroups = {};\r\n this._resolveBindGroup = {};\r\n this._combineBindGroup = null;\r\n this._temporalBindGroup = null;\r\n }\r\n /** {@inheritDoc AbstractPostEffect.requireLinearDepthTexture} */\r\n requireLinearDepthTexture() {\r\n return true;\r\n }\r\n /** {@inheritDoc AbstractPostEffect.requireDepthAttachment} */\r\n requireDepthAttachment() {\r\n return true;\r\n }\r\n /** {@inheritDoc AbstractPostEffect.requireMotionVectorTexture} */\r\n requireMotionVectorTexture(ctx: DrawContext) {\r\n return !!ctx.camera.ssrTemporal;\r\n }\r\n /**\r\n * Declares SSR's internal steps (intersect, resolve, optional bilateral\r\n * blur, optional temporal resolve, combine) as individual render graph\r\n * passes, mirroring the sequence of {@link SSR.apply}.\r\n */\r\n setup(s: PostEffectSetupContext): RGHandle {\r\n const { graph, ctx, history } = s;\r\n const linearDepthHandle = s.blackboard.get(FrameResources.LinearDepth);\r\n const texDesc: RGTextureDesc = {\r\n format: 'rgba16f',\r\n sizeMode: 'absolute',\r\n width: s.width,\r\n height: s.height\r\n };\r\n const readCommon = (builder: RGPassBuilder) => {\r\n if (linearDepthHandle) {\r\n builder.read(linearDepthHandle);\r\n }\r\n // Roughness/normal MRT outputs, HiZ and the scene color copy are reached\r\n // through DrawContext fields; the dependency list carries their handles.\r\n for (const dep of s.dependencies) {\r\n builder.read(dep);\r\n }\r\n };\r\n const getLinearDepth = (rg: RGExecuteContext) =>\r\n linearDepthHandle ? rg.getTexture<Texture2D>(linearDepthHandle) : ctx.linearDepthTexture!;\r\n\r\n // 1. Ray march the scene (HiZ or linear 2D) into the intersect texture.\r\n const intersectHandle = graph.addPass('SSR:Intersect', (builder) => {\r\n builder.read(s.input);\r\n readCommon(builder);\r\n const out = builder.createTexture({ ...texDesc, label: 'SSR:intersect' });\r\n const fb = builder.createFramebuffer({\r\n label: 'SSR:intersectFB',\r\n width: s.width,\r\n height: s.height,\r\n colorAttachments: out,\r\n depthAttachment: s.sceneDepthAttachment,\r\n ignoreDepthStencil: false\r\n });\r\n builder.setExecute((rg) => {\r\n const device = ctx.device;\r\n device.pushDeviceStates();\r\n try {\r\n device.setFramebuffer(rg.getFramebuffer(fb));\r\n this.intersect(ctx, rg.getTexture<Texture2D>(s.input), getLinearDepth(rg), true, false);\r\n } finally {\r\n device.popDeviceStates();\r\n }\r\n });\r\n return out;\r\n });\r\n\r\n // 2. Resolve reflection color from the intersect result.\r\n const resolveHandle = graph.addPass('SSR:Resolve', (builder) => {\r\n builder.read(s.input);\r\n builder.read(intersectHandle);\r\n readCommon(builder);\r\n const out = builder.createTexture({ ...texDesc, label: 'SSR:resolve' });\r\n const fb = builder.createFramebuffer({\r\n label: 'SSR:resolveFB',\r\n width: s.width,\r\n height: s.height,\r\n colorAttachments: out,\r\n depthAttachment: s.sceneDepthAttachment,\r\n ignoreDepthStencil: false\r\n });\r\n builder.setExecute((rg) => {\r\n const device = ctx.device;\r\n device.pushDeviceStates();\r\n try {\r\n device.setFramebuffer(rg.getFramebuffer(fb));\r\n const inputTex = rg.getTexture<Texture2D>(s.input);\r\n this.resolve(\r\n ctx,\r\n ctx.sceneColorTexture ?? inputTex,\r\n getLinearDepth(rg),\r\n rg.getTexture<Texture2D>(intersectHandle)\r\n );\r\n } finally {\r\n device.popDeviceStates();\r\n }\r\n });\r\n return out;\r\n });\r\n\r\n // 3. Optional bilateral blur (horizontal + vertical), guided by the\r\n // per-pixel blur size stored in the intersect texture.\r\n let reflectHandle = resolveHandle;\r\n if (ctx.camera.ssrBlurScale > 0 && ctx.camera.ssrBlurKernelSize > 0) {\r\n reflectHandle = graph.addPass('SSR:Blur', (builder) => {\r\n builder.read(resolveHandle);\r\n builder.read(intersectHandle);\r\n readCommon(builder);\r\n const middle = builder.createTexture({ ...texDesc, label: 'SSR:blurH' });\r\n const out = builder.createTexture({ ...texDesc, label: 'SSR:blur' });\r\n const middleFB = builder.createFramebuffer({\r\n label: 'SSR:blurHFB',\r\n width: s.width,\r\n height: s.height,\r\n colorAttachments: middle,\r\n depthAttachment: s.sceneDepthAttachment,\r\n ignoreDepthStencil: false\r\n });\r\n const outFB = builder.createFramebuffer({\r\n label: 'SSR:blurFB',\r\n width: s.width,\r\n height: s.height,\r\n colorAttachments: out,\r\n depthAttachment: s.sceneDepthAttachment,\r\n ignoreDepthStencil: false\r\n });\r\n builder.setExecute((rg) => {\r\n const device = ctx.device;\r\n device.pushDeviceStates();\r\n try {\r\n const intersectTex = rg.getTexture<Texture2D>(intersectHandle);\r\n const blurSizeScale = 255 * ctx.camera.ssrBlurScale;\r\n const kernelRadius = (Math.max(1, ctx.camera.ssrBlurKernelSize >> 0) - 1) >> 1;\r\n const stdDev = ctx.camera.ssrBlurStdDev;\r\n const depthCutoff = ctx.camera.ssrBlurDepthCutoff;\r\n const blitterH = (SSR._blurBlitterH = SSR._blurBlitterH ?? new BilateralBlurBlitter(false));\r\n blitterH.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\r\n this.blurPass(\r\n ctx,\r\n blitterH,\r\n intersectTex,\r\n 2,\r\n blurSizeScale,\r\n kernelRadius,\r\n stdDev,\r\n depthCutoff,\r\n rg.getTexture<Texture2D>(resolveHandle),\r\n rg.getFramebuffer<FrameBuffer>(middleFB)\r\n );\r\n const blitterV = (SSR._blurBlitterV = SSR._blurBlitterV ?? new BilateralBlurBlitter(true));\r\n blitterV.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\r\n this.blurPass(\r\n ctx,\r\n blitterV,\r\n intersectTex,\r\n 2,\r\n blurSizeScale,\r\n kernelRadius,\r\n stdDev,\r\n depthCutoff,\r\n rg.getTexture<Texture2D>(middle),\r\n rg.getFramebuffer<FrameBuffer>(outFB)\r\n );\r\n } finally {\r\n device.popDeviceStates();\r\n }\r\n });\r\n return out;\r\n });\r\n }\r\n\r\n // 4. Optional temporal resolve against last frame's reflection.\r\n const wantTemporal = !!ctx.camera.ssrTemporal;\r\n const motionVectorHandle = wantTemporal ? s.blackboard.get(FrameResources.MotionVector) : null;\r\n const historySize = { width: s.width, height: s.height };\r\n const prevReflectHandle =\r\n wantTemporal && history && motionVectorHandle\r\n ? history.importPreviousIfCompatible(graph, RGHistoryResources.SSR_REFLECT, texDesc, historySize)\r\n : null;\r\n const prevMotionVectorHandle =\r\n wantTemporal && history && motionVectorHandle\r\n ? history.importPreviousIfCompatible(\r\n graph,\r\n RGHistoryResources.SSR_MOTION_VECTOR,\r\n texDesc,\r\n historySize\r\n )\r\n : null;\r\n if (motionVectorHandle && prevReflectHandle && prevMotionVectorHandle) {\r\n const blurredHandle = reflectHandle;\r\n reflectHandle = graph.addPass('SSR:Temporal', (builder) => {\r\n builder.read(blurredHandle);\r\n builder.read(prevReflectHandle);\r\n builder.read(prevMotionVectorHandle);\r\n builder.read(motionVectorHandle);\r\n readCommon(builder);\r\n const out = builder.createTexture({ ...texDesc, label: 'SSR:temporal' });\r\n const fb = builder.createFramebuffer({\r\n label: 'SSR:temporalFB',\r\n width: s.width,\r\n height: s.height,\r\n colorAttachments: out,\r\n depthAttachment: s.sceneDepthAttachment,\r\n ignoreDepthStencil: false\r\n });\r\n builder.setExecute((rg) => {\r\n const device = ctx.device;\r\n device.pushDeviceStates();\r\n try {\r\n this.temporal(\r\n ctx,\r\n rg.getTexture<Texture2D>(blurredHandle),\r\n getLinearDepth(rg),\r\n rg.getTexture<Texture2D>(prevReflectHandle),\r\n rg.getTexture<Texture2D>(prevMotionVectorHandle),\r\n rg.getFramebuffer<FrameBuffer>(fb)\r\n );\r\n } finally {\r\n device.popDeviceStates();\r\n }\r\n });\r\n return out;\r\n });\r\n }\r\n\r\n // 5. Combine reflections with the scene color and queue history commits.\r\n const finalReflectHandle = reflectHandle;\r\n return graph.addPass('PostEffect:SSR', (builder) => {\r\n builder.read(s.input);\r\n builder.read(finalReflectHandle);\r\n if (motionVectorHandle) {\r\n builder.read(motionVectorHandle);\r\n }\r\n readCommon(builder);\r\n const output = s.createOutput(builder, { needDepthAttachment: true });\r\n builder.setExecute((rg) => {\r\n const device = ctx.device;\r\n device.pushDeviceStates();\r\n try {\r\n device.setFramebuffer(output.framebuffer ? rg.getFramebuffer(output.framebuffer) : null);\r\n const inputTex = rg.getTexture<Texture2D>(s.input);\r\n const reflectanceTex = rg.getTexture<Texture2D>(finalReflectHandle);\r\n copyTexture(\r\n inputTex,\r\n device.getFramebuffer()!,\r\n fetchSampler('clamp_nearest_nomip'),\r\n AbstractPostEffect.getDefaultRenderState(ctx, 'eq')\r\n );\r\n this.combine(ctx, inputTex, reflectanceTex, output.srgbOutput);\r\n if (wantTemporal && history) {\r\n history.queueRetainedCommit(\r\n RGHistoryResources.SSR_REFLECT,\r\n {\r\n format: reflectanceTex.format,\r\n sizeMode: 'absolute',\r\n width: reflectanceTex.width,\r\n height: reflectanceTex.height\r\n },\r\n { width: reflectanceTex.width, height: reflectanceTex.height },\r\n reflectanceTex\r\n );\r\n if (ctx.motionVectorTexture) {\r\n history.queueRetainedCommit(\r\n RGHistoryResources.SSR_MOTION_VECTOR,\r\n {\r\n format: ctx.motionVectorTexture.format,\r\n sizeMode: 'absolute',\r\n width: ctx.motionVectorTexture.width,\r\n height: ctx.motionVectorTexture.height\r\n },\r\n { width: ctx.motionVectorTexture.width, height: ctx.motionVectorTexture.height },\r\n ctx.motionVectorTexture\r\n );\r\n }\r\n }\r\n } finally {\r\n device.popDeviceStates();\r\n }\r\n });\r\n return output.color;\r\n });\r\n }\r\n /** @internal */\r\n blurPass(\r\n ctx: DrawContext,\r\n blitter: BilateralBlurBlitter,\r\n blurSizeTex: Texture2D,\r\n blurSizeIndex: number,\r\n blurSizeScale: number,\r\n kernelRadius: number,\r\n stdDev: number,\r\n depthCutoff: number,\r\n srcTex: Texture2D,\r\n fbTo: FrameBuffer\r\n ) {\r\n const size = new Vector2(srcTex.width, srcTex.height);\r\n blitter.kernelRadius = kernelRadius;\r\n blitter.stdDev = stdDev;\r\n blitter.size = size;\r\n blitter.depthTex = ctx.linearDepthTexture ?? null;\r\n blitter.depthCutoff = depthCutoff;\r\n blitter.blurSizeTex = blurSizeTex;\r\n blitter.blurSizeIndex = blurSizeIndex;\r\n blitter.blurSizeScale = blurSizeScale;\r\n blitter.sampler = fetchSampler('clamp_nearest_nomip');\r\n blitter.cameraNearFar.setXY(ctx.camera.getNearPlane(), ctx.camera.getFarPlane());\r\n blitter.srgbOut = false;\r\n blitter.blit(srcTex, fbTo, fetchSampler('clamp_linear_nomip'));\r\n }\r\n /** @internal */\r\n combine(ctx: DrawContext, inputColorTexture: Texture2D, reflectanceTex: Texture2D, srgbOut: boolean) {\r\n const device = ctx.device;\r\n let program = SSR._combineProgram;\r\n if (program === undefined) {\r\n program = this._createCombineProgrm(ctx);\r\n SSR._combineProgram = program;\r\n }\r\n const roughnessTexture = ctx.SSRRoughnessTexture!;\r\n if (!this._combineBindGroup) {\r\n this._combineBindGroup = device.createBindGroup(program!.bindGroupLayouts[0]);\r\n }\r\n const linearSampler = fetchSampler('clamp_linear');\r\n const nearestSampler = fetchSampler('clamp_nearest');\r\n this._combineBindGroup.setTexture('colorTex', inputColorTexture, linearSampler);\r\n this._combineBindGroup.setTexture('reflectanceTex', reflectanceTex, linearSampler);\r\n this._combineBindGroup.setTexture('roughnessTex', roughnessTexture, linearSampler);\r\n this._combineBindGroup.setTexture('albedoTex', inputColorTexture, linearSampler);\r\n this._combineBindGroup.setTexture('extraTex', inputColorTexture, nearestSampler);\r\n this._combineBindGroup.setTexture('normalTex', ctx.SSRNormalTexture!, nearestSampler);\r\n this._combineBindGroup.setTexture('depthTex', ctx.linearDepthTexture!, nearestSampler);\r\n this._combineBindGroup.setTexture('zGGXLut', getGGXLUT(1024), fetchSampler('clamp_nearest_nomip'));\r\n this._combineBindGroup.setValue('ssrMaxRoughness', ctx.camera.ssrMaxRoughness);\r\n this._combineBindGroup.setValue('ssrStrengthMode', 0);\r\n this._combineBindGroup.setValue(\r\n 'cameraNearFar',\r\n new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane())\r\n );\r\n this._combineBindGroup.setValue('viewMatrix', ctx.camera.viewMatrix);\r\n this._combineBindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\r\n this._combineBindGroup.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 this._combineBindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n this._combineBindGroup.setValue('srgbOut', srgbOut ? 1 : 0);\r\n device.setProgram(program);\r\n device.setBindGroup(0, this._combineBindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\r\n }\r\n /** @internal */\r\n resolve(\r\n ctx: DrawContext,\r\n inputColorTexture: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n intersectTexture: Texture2D\r\n ) {\r\n const device = ctx.device;\r\n const hasEnvRadiance = !!ctx.env!.light.envLight?.hasRadiance();\r\n const hash = hasEnvRadiance ? ctx.env!.light.getHash() : '';\r\n let program = SSR._resolveProgram[hash];\r\n if (program === undefined) {\r\n program = this._createResolveProgram(ctx);\r\n SSR._resolveProgram[hash] = program;\r\n }\r\n let bindGroup = this._resolveBindGroup[hash];\r\n if (!bindGroup) {\r\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n this._resolveBindGroup[hash] = bindGroup;\r\n }\r\n const nearestSampler = fetchSampler('clamp_nearest');\r\n const linearSampler = fetchSampler('clamp_linear');\r\n const roughnessTexture = ctx.SSRRoughnessTexture!;\r\n const normalTexture = ctx.SSRNormalTexture!;\r\n bindGroup.setTexture('colorTex', inputColorTexture, linearSampler);\r\n bindGroup.setTexture('intersectTex', intersectTexture, nearestSampler);\r\n bindGroup.setTexture('roughnessTex', roughnessTexture, nearestSampler);\r\n bindGroup.setTexture('normalTex', normalTexture, nearestSampler);\r\n bindGroup.setTexture('albedoTex', inputColorTexture, linearSampler);\r\n bindGroup.setTexture('extraTex', inputColorTexture, nearestSampler);\r\n bindGroup.setTexture('depthTex', sceneDepthTexture, nearestSampler);\r\n bindGroup.setTexture('zGGXLut', getGGXLUT(1024), fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setValue('ssrMaxRoughness', ctx.camera.ssrMaxRoughness);\r\n bindGroup.setValue('ssrStrengthMode', 0);\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 sceneDepthTexture.width,\r\n sceneDepthTexture.height\r\n )\r\n );\r\n bindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\r\n bindGroup.setValue('viewMatrix', ctx.camera.viewMatrix);\r\n bindGroup.setValue('invViewMatrix', ctx.camera.worldMatrix);\r\n if (hasEnvRadiance) {\r\n bindGroup.setValue('envLightStrength', ctx.env!.light.strength);\r\n bindGroup.setValue('envLightSpecularStrength', ctx.env!.light.specularStrength ?? 1);\r\n ctx.env!.light.envLight.updateBindGroup(bindGroup);\r\n }\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(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\r\n }\r\n /** @internal */\r\n intersect(\r\n ctx: DrawContext,\r\n inputColorTexture: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n blur: boolean,\r\n srgbOut: boolean\r\n ) {\r\n const device = ctx.device;\r\n const hasEnvRadiance = !!ctx.env!.light.envLight?.hasRadiance();\r\n const hash = `${Number(blur)}:${\r\n hasEnvRadiance ? ctx.env!.light.getHash() : ''\r\n }:${!!ctx.HiZTexture}:${!!ctx.camera.ssrCalcThickness}`;\r\n let program = SSR._programs[hash];\r\n if (program === undefined) {\r\n const created = this._createIntersectProgram(ctx, blur);\r\n if (!created) {\r\n return;\r\n }\r\n program = created;\r\n SSR._programs[hash] = program;\r\n }\r\n let bindGroup = this._bindgroups[hash];\r\n if (!bindGroup) {\r\n bindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n this._bindgroups[hash] = bindGroup;\r\n }\r\n const nearestSampler = fetchSampler('clamp_nearest');\r\n const linearSampler = fetchSampler('clamp_linear');\r\n const roughnessTexture = ctx.SSRRoughnessTexture!;\r\n const normalTexture = ctx.SSRNormalTexture!;\r\n if (!blur) {\r\n bindGroup.setTexture('colorTex', inputColorTexture, linearSampler);\r\n if (hasEnvRadiance) {\r\n bindGroup.setValue('envLightStrength', ctx.env!.light.strength);\r\n bindGroup.setValue('envLightSpecularStrength', ctx.env!.light.specularStrength ?? 1);\r\n ctx.env!.light.envLight.updateBindGroup(bindGroup);\r\n }\r\n }\r\n bindGroup.setTexture('albedoTex', inputColorTexture, linearSampler);\r\n bindGroup.setTexture('roughnessTex', roughnessTexture, nearestSampler);\r\n bindGroup.setTexture('normalTex', normalTexture, nearestSampler);\r\n bindGroup.setTexture('extraTex', inputColorTexture, nearestSampler);\r\n bindGroup.setTexture('depthTex', sceneDepthTexture, nearestSampler);\r\n bindGroup.setTexture('zGGXLut', getGGXLUT(1024), fetchSampler('clamp_nearest_nomip'));\r\n bindGroup.setValue('cameraNearFar', new Vector2(ctx.camera.getNearPlane(), ctx.camera.getFarPlane()));\r\n bindGroup.setValue('cameraPos', ctx.camera.getWorldPosition());\r\n bindGroup.setValue('invProjMatrix', Matrix4x4.invert(ctx.camera.getProjectionMatrix()));\r\n bindGroup.setValue('projMatrix', ctx.camera.getProjectionMatrix());\r\n bindGroup.setValue('viewMatrix', ctx.camera.viewMatrix);\r\n bindGroup.setValue('invViewMatrix', ctx.camera.worldMatrix);\r\n bindGroup.setValue('ssrParams', ctx.camera.ssrParams);\r\n bindGroup.setValue('ssrMaxRoughness', ctx.camera.ssrMaxRoughness);\r\n bindGroup.setValue('ssrStrengthMode', 0);\r\n if (ctx.HiZTexture) {\r\n bindGroup.setTexture('hizTex', ctx.HiZTexture, nearestSampler);\r\n bindGroup.setValue('depthMipLevels', ctx.HiZTexture.mipLevelCount);\r\n bindGroup.setValue(\r\n 'targetSize',\r\n new Vector4(\r\n sceneDepthTexture.width,\r\n sceneDepthTexture.height,\r\n ctx.HiZTexture.width,\r\n ctx.HiZTexture.height\r\n )\r\n );\r\n } else {\r\n bindGroup.setValue('ssrStride', ctx.camera.ssrStride);\r\n bindGroup.setValue(\r\n 'targetSize',\r\n new Vector4(\r\n sceneDepthTexture.width,\r\n sceneDepthTexture.height,\r\n sceneDepthTexture.width,\r\n sceneDepthTexture.height\r\n )\r\n );\r\n }\r\n bindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n bindGroup.setValue('srgbOut', srgbOut ? 1 : 0);\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\r\n }\r\n /** @internal */\r\n temporal(\r\n ctx: DrawContext,\r\n currentReflectTex: Texture2D,\r\n sceneDepthTexture: Texture2D,\r\n prevReflectTex: Texture2D,\r\n prevMotionVectorTex: Texture2D,\r\n outFramebuffer: FrameBuffer\r\n ) {\r\n const device = ctx.device;\r\n let program = SSR._temporalProgram;\r\n if (!program) {\r\n program = this._createTemporalProgram(ctx);\r\n SSR._temporalProgram = program;\r\n }\r\n if (!this._temporalBindGroup) {\r\n this._temporalBindGroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n }\r\n this._temporalBindGroup.setTexture('historyColorTex', prevReflectTex, fetchSampler('clamp_linear_nomip'));\r\n this._temporalBindGroup.setTexture(\r\n 'currentColorTex',\r\n currentReflectTex,\r\n fetchSampler('clamp_nearest_nomip')\r\n );\r\n this._temporalBindGroup.setTexture(\r\n 'currentDepthTex',\r\n sceneDepthTexture,\r\n fetchSampler('clamp_nearest_nomip')\r\n );\r\n this._temporalBindGroup.setTexture(\r\n 'motionVector',\r\n ctx.motionVectorTexture!,\r\n fetchSampler('clamp_nearest_nomip')\r\n );\r\n this._temporalBindGroup.setTexture(\r\n 'prevMotionVector',\r\n prevMotionVectorTex,\r\n fetchSampler('clamp_nearest_nomip')\r\n );\r\n this._temporalBindGroup.setValue('flip', this.needFlip(device) ? 1 : 0);\r\n this._temporalBindGroup.setValue(\r\n 'texSize',\r\n new Vector2(sceneDepthTexture.width, sceneDepthTexture.height)\r\n );\r\n this._temporalBindGroup.setValue('temporalWeight', ctx.camera.ssrTemporalWeight);\r\n device.setFramebuffer(outFramebuffer);\r\n device.setProgram(program);\r\n device.setBindGroup(0, this._temporalBindGroup);\r\n this.drawFullscreenQuad(AbstractPostEffect.getDefaultRenderState(ctx, 'gt'));\r\n }\r\n /** {@inheritDoc AbstractPostEffect.apply} */\r\n apply(ctx: DrawContext, inputColorTexture: Texture2D, sceneDepthTexture: Texture2D, srgbOutput: boolean) {\r\n const device = ctx.device;\r\n device.pushDeviceStates();\r\n copyTexture(\r\n inputColorTexture,\r\n device.getFramebuffer()!,\r\n fetchSampler('clamp_nearest_nomip'),\r\n AbstractPostEffect.getDefaultRenderState(ctx, 'eq')\r\n );\r\n\r\n const intersectFramebuffer = device.pool.fetchTemporalFramebuffer(\r\n false,\r\n inputColorTexture.width,\r\n inputColorTexture.height,\r\n 'rgba16f',\r\n ctx.depthTexture,\r\n false\r\n );\r\n const pingpongFramebuffer = [\r\n device.pool.fetchTemporalFramebuffer(\r\n false,\r\n inputColorTexture.width,\r\n inputColorTexture.height,\r\n 'rgba16f',\r\n ctx.depthTexture,\r\n false\r\n ),\r\n device.pool.fetchTemporalFramebuffer(\r\n false,\r\n inputColorTexture.width,\r\n inputColorTexture.height,\r\n 'rgba16f',\r\n ctx.depthTexture,\r\n false\r\n )\r\n ];\r\n device.setFramebuffer(intersectFramebuffer);\r\n this.intersect(ctx, inputColorTexture, sceneDepthTexture, true, false);\r\n const intersectTex = intersectFramebuffer.getColorAttachments()[0] as Texture2D;\r\n device.setFramebuffer(pingpongFramebuffer[0]);\r\n const ssrSceneColorTexture = ctx.sceneColorTexture ?? inputColorTexture;\r\n this.resolve(ctx, ssrSceneColorTexture, sceneDepthTexture, intersectTex);\r\n if (ctx.camera.ssrBlurScale > 0 && ctx.camera.ssrBlurKernelSize > 0) {\r\n const blurSizeScale = 255 * ctx.camera.ssrBlurScale;\r\n const kernelRadius = (Math.max(1, ctx.camera.ssrBlurKernelSize >> 0) - 1) >> 1;\r\n const stdDev = ctx.camera.ssrBlurStdDev;\r\n const depthCutoff = ctx.camera.ssrBlurDepthCutoff;\r\n const blitterH = (SSR._blurBlitterH = SSR._blurBlitterH ?? new BilateralBlurBlitter(false));\r\n blitterH.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\r\n this.blurPass(\r\n ctx,\r\n blitterH,\r\n intersectTex,\r\n 2,\r\n blurSizeScale,\r\n kernelRadius,\r\n stdDev,\r\n depthCutoff,\r\n pingpongFramebuffer[0].getColorAttachments()[0] as Texture2D,\r\n pingpongFramebuffer[1]\r\n );\r\n const blitterV = (SSR._blurBlitterV = SSR._blurBlitterV ?? new BilateralBlurBlitter(true));\r\n blitterV.renderStates = AbstractPostEffect.getDefaultRenderState(ctx, 'gt');\r\n this.blurPass(\r\n ctx,\r\n blitterV,\r\n intersectTex,\r\n 2,\r\n blurSizeScale,\r\n kernelRadius,\r\n stdDev,\r\n depthCutoff,\r\n pingpongFramebuffer[1].getColorAttachments()[0] as Texture2D,\r\n pingpongFramebuffer[0]\r\n );\r\n }\r\n const historyManager = ctx.camera.getHistoryResourceManager();\r\n let reflectanceTex = pingpongFramebuffer[0].getColorAttachments()[0] as Texture2D;\r\n const prevSSRReflectTex = historyManager!.tryGetPrevious(RGHistoryResources.SSR_REFLECT);\r\n const prevSSRMotionVectorTex = historyManager!.tryGetPrevious(RGHistoryResources.SSR_MOTION_VECTOR);\r\n const canTemporal =\r\n ctx.camera.ssrTemporal &&\r\n !!ctx.motionVectorTexture &&\r\n !!prevSSRReflectTex &&\r\n !!prevSSRMotionVectorTex &&\r\n prevSSRReflectTex.width === reflectanceTex.width &&\r\n prevSSRReflectTex.height === reflectanceTex.height;\r\n if (canTemporal) {\r\n this.temporal(\r\n ctx,\r\n reflectanceTex,\r\n sceneDepthTexture,\r\n prevSSRReflectTex as Texture2D,\r\n prevSSRMotionVectorTex as Texture2D,\r\n pingpongFramebuffer[1]\r\n );\r\n reflectanceTex = pingpongFramebuffer[1].getColorAttachments()[0] as Texture2D;\r\n }\r\n device.popDeviceStates();\r\n this.combine(ctx, inputColorTexture, reflectanceTex, srgbOutput);\r\n if (ctx.camera.ssrTemporal) {\r\n const reflectanceSize = { width: reflectanceTex.width, height: reflectanceTex.height };\r\n historyManager!.queueRetainedCommit(\r\n RGHistoryResources.SSR_REFLECT,\r\n {\r\n format: reflectanceTex.format,\r\n sizeMode: 'absolute',\r\n width: reflectanceTex.width,\r\n height: reflectanceTex.height\r\n },\r\n reflectanceSize,\r\n reflectanceTex\r\n );\r\n }\r\n if (ctx.camera.ssrTemporal && ctx.motionVectorTexture) {\r\n const motionVectorSize = {\r\n width: ctx.motionVectorTexture.width,\r\n height: ctx.motionVectorTexture.height\r\n };\r\n historyManager!.queueRetainedCommit(\r\n RGHistoryResources.SSR_MOTION_VECTOR,\r\n {\r\n format: ctx.motionVectorTexture.format,\r\n sizeMode: 'absolute',\r\n width: ctx.motionVectorTexture.width,\r\n height: ctx.motionVectorTexture.height\r\n },\r\n motionVectorSize,\r\n ctx.motionVectorTexture\r\n );\r\n }\r\n device.pool.releaseFrameBuffer(intersectFramebuffer);\r\n device.pool.releaseFrameBuffer(pingpongFramebuffer[0]);\r\n device.pool.releaseFrameBuffer(pingpongFramebuffer[1]);\r\n }\r\n /** @internal */\r\n private _createCombineProgrm(ctx: DrawContext) {\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.reflectanceTex = pb.tex2D().uniform(0);\r\n this.roughnessTex = pb.tex2D().uniform(0);\r\n this.albedoTex = pb.tex2D().uniform(0);\r\n this.extraTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.zGGXLut = pb.tex2D().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.viewMatrix = pb.mat4().uniform(0);\r\n this.invProjMatrix = pb.mat4().uniform(0);\r\n this.ssrMaxRoughness = pb.float().uniform(0);\r\n this.ssrStrengthMode = pb.int().uniform(0);\r\n this.srgbOut = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('getPosition', [pb.vec2('uv')], function () {\r\n this.$l.linearDepth = ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0);\r\n this.$l.nonLinearDepth = pb.div(\r\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\r\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\r\n );\r\n this.$l.clipSpacePos = 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.viewPos4 = pb.mul(this.invProjMatrix, this.clipSpacePos);\r\n this.$return(pb.vec4(pb.div(this.viewPos4.xyz, this.viewPos4.w), this.linearDepth));\r\n });\r\n pb.func('resolveDeferredStrength', [pb.vec2('uv'), pb.vec4('roughnessValue')], function () {\r\n this.$l.roughness = pb.clamp(this.roughnessValue.a, 0.045, 1);\r\n this.$l.base = pb.textureSampleLevel(this.albedoTex, this.uv, 0);\r\n // Hybrid may merge forward-only SSR surface data into the roughness MRT while the\r\n // deferred GBuffer remains empty at those pixels. Fall back to forward SSR semantics\r\n // there instead of decoding the mixed texture as deferred metallic/occlusion/F0 data.\r\n this.$if(pb.lessThanEqual(this.base.a, 1e-5), function () {\r\n this.$return(pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1)));\r\n });\r\n this.$l.pos = this.getPosition(this.uv);\r\n this.$if(pb.greaterThanEqual(this.pos.w, 1), function () {\r\n this.$return(pb.vec3(0));\r\n });\r\n this.$l.viewPos = this.pos.xyz;\r\n this.$l.viewVec = pb.neg(pb.normalize(this.viewPos));\r\n this.$l.worldNormal = pb.sub(\r\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\r\n pb.vec3(1)\r\n );\r\n this.$l.viewNormal = pb.normalize(pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz);\r\n this.$l.NoV = pb.clamp(pb.dot(this.viewNormal, this.viewVec), 0.0001, 1);\r\n this.$l.baseColor = this.base.rgb;\r\n this.$l.extra = pb.textureSampleLevel(this.extraTex, this.uv, 0);\r\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\r\n this.$l.occlusion = pb.clamp(this.roughnessValue.g, 0, 1);\r\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\r\n this.$l.specularWeight = pb.clamp(this.extra.a, 0, 1);\r\n this.$l.f0 = pb.mix(pb.mul(pb.vec3(0.04), this.specStrength), this.baseColor, this.metallic);\r\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.roughness)), this.f0), this.f0);\r\n this.$l.kS = pb.add(this.f0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n this.$l.fab = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.roughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ).rg,\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.FssEss = pb.add(pb.mul(this.kS, this.fab.x), pb.vec3(this.fab.y));\r\n this.$return(\r\n pb.clamp(pb.mul(this.FssEss, this.occlusion, this.specularWeight), pb.vec3(0), pb.vec3(1))\r\n );\r\n });\r\n pb.func(\r\n 'resolveSample',\r\n [pb.vec2('uv'), pb.vec3('sceneColor'), pb.vec3('reflectance'), pb.vec4('roughnessValue')],\r\n function () {\r\n this.$l.r = pb.div(this.reflectance, pb.add(this.reflectance, pb.vec3(1)));\r\n this.$l.strength = pb.vec3();\r\n this.$if(pb.equal(this.ssrStrengthMode, 0), function () {\r\n this.strength = pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1));\r\n })\r\n .$elseif(pb.equal(this.ssrStrengthMode, 1), function () {\r\n this.$l.roughAtten = pb.clamp(\r\n pb.sub(1, pb.div(this.roughnessValue.a, pb.max(this.ssrMaxRoughness, 1e-4))),\r\n 0,\r\n 1\r\n );\r\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\r\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\r\n this.$l.f0 = pb.mix(pb.mul(0.04, this.specStrength), 1, this.metallic);\r\n this.$l.s = pb.mul(this.roughAtten, this.roughAtten, this.f0);\r\n this.strength = pb.vec3(this.s);\r\n })\r\n .$else(function () {\r\n this.strength = this.resolveDeferredStrength(this.uv, this.roughnessValue);\r\n });\r\n this.color = pb.add(\r\n pb.mul(this.r, this.strength),\r\n pb.mul(this.sceneColor, pb.sub(pb.vec3(1), this.strength))\r\n );\r\n this.$return(this.color);\r\n }\r\n );\r\n pb.main(function () {\r\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.targetSize.xy);\r\n this.$l.sceneColor = pb.textureSampleLevel(this.colorTex, this.screenUV, 0).rgb;\r\n this.$l.roughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.screenUV, 0);\r\n this.$l.combined = pb.vec3();\r\n this.$if(pb.greaterThanEqual(this.roughnessInfo.a, this.ssrMaxRoughness), function () {\r\n this.combined = this.sceneColor;\r\n }).$else(function () {\r\n this.$l.reflectance = pb.textureSampleLevel(this.reflectanceTex, this.screenUV, 0).rgb;\r\n this.combined = this.resolveSample(\r\n this.screenUV,\r\n this.sceneColor,\r\n this.reflectance,\r\n this.roughnessInfo\r\n );\r\n });\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.combined, 1);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.combined), 1);\r\n });\r\n });\r\n }\r\n })!;\r\n program.name = '@SSR_Combine';\r\n return program;\r\n }\r\n /** @internal */\r\n private _createResolveProgram(ctx: DrawContext) {\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 if (ctx.env!.light.envLight?.hasRadiance()) {\r\n ctx.env!.light.envLight.initShaderBindings(pb);\r\n }\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.intersectTex = pb.tex2D().uniform(0);\r\n this.roughnessTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.albedoTex = pb.tex2D().uniform(0);\r\n this.extraTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.zGGXLut = pb.tex2D().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n this.viewMatrix = pb.mat4().uniform(0);\r\n this.invViewMatrix = pb.mat4().uniform(0);\r\n this.invProjMatrix = pb.mat4().uniform(0);\r\n this.ssrMaxRoughness = pb.float().uniform(0);\r\n this.ssrStrengthMode = pb.int().uniform(0);\r\n if (ctx.env!.light.envLight?.hasRadiance()) {\r\n this.envLightStrength = pb.float().uniform(0);\r\n this.envLightSpecularStrength = pb.float().uniform(0);\r\n ctx.env!.light.envLight.initShaderBindings(pb);\r\n }\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('getPosition', [pb.vec2('uv'), pb.mat4('mat')], function () {\r\n this.$l.linearDepth = ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0);\r\n this.$l.nonLinearDepth = pb.div(\r\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\r\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\r\n );\r\n this.$l.clipSpacePos = 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.wPos = pb.mul(this.mat, this.clipSpacePos);\r\n this.$return(pb.vec4(pb.div(this.wPos.xyz, this.wPos.w), this.linearDepth));\r\n });\r\n pb.func('resolveDeferredStrength', [pb.vec2('uv'), pb.vec4('roughnessValue')], function () {\r\n this.$l.roughness = pb.clamp(this.roughnessValue.a, 0.045, 1);\r\n this.$l.base = pb.textureSampleLevel(this.albedoTex, this.uv, 0);\r\n this.$if(pb.lessThanEqual(this.base.a, 1e-5), function () {\r\n this.$return(pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1)));\r\n });\r\n this.$l.pos = this.getPosition(this.uv, this.invProjMatrix);\r\n this.$if(pb.greaterThanEqual(this.pos.w, 1), function () {\r\n this.$return(pb.vec3(0));\r\n });\r\n this.$l.viewPos = this.pos.xyz;\r\n this.$l.viewVec = pb.neg(pb.normalize(this.viewPos));\r\n this.$l.worldNormal = pb.sub(\r\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\r\n pb.vec3(1)\r\n );\r\n this.$l.viewNormal = pb.normalize(pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz);\r\n this.$l.NoV = pb.clamp(pb.dot(this.viewNormal, this.viewVec), 0.0001, 1);\r\n this.$l.baseColor = this.base.rgb;\r\n this.$l.extra = pb.textureSampleLevel(this.extraTex, this.uv, 0);\r\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\r\n this.$l.occlusion = pb.clamp(this.roughnessValue.g, 0, 1);\r\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\r\n this.$l.specularWeight = pb.clamp(this.extra.a, 0, 1);\r\n this.$l.f0 = pb.mix(pb.mul(pb.vec3(0.04), this.specStrength), this.baseColor, this.metallic);\r\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.roughness)), this.f0), this.f0);\r\n this.$l.kS = pb.add(this.f0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n this.$l.fab = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.roughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ).rg,\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.FssEss = pb.add(pb.mul(this.kS, this.fab.x), pb.vec3(this.fab.y));\r\n this.$return(\r\n pb.clamp(pb.mul(this.FssEss, this.occlusion, this.specularWeight), pb.vec3(0), pb.vec3(1))\r\n );\r\n });\r\n pb.func(\r\n 'resolveSample',\r\n [pb.vec2('uv'), pb.vec3('sceneColor'), pb.vec3('reflectance'), pb.vec4('roughnessValue')],\r\n function () {\r\n this.$l.r = pb.div(this.reflectance, pb.add(this.reflectance, pb.vec3(1)));\r\n this.$l.strength = pb.vec3();\r\n this.$if(pb.equal(this.ssrStrengthMode, 0), function () {\r\n this.strength = pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1));\r\n })\r\n .$elseif(pb.equal(this.ssrStrengthMode, 1), function () {\r\n this.$l.roughAtten = pb.clamp(\r\n pb.sub(1, pb.div(this.roughnessValue.a, pb.max(this.ssrMaxRoughness, 1e-4))),\r\n 0,\r\n 1\r\n );\r\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\r\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\r\n this.$l.f0 = pb.mix(pb.mul(0.04, this.specStrength), 1, this.metallic);\r\n this.$l.s = pb.mul(this.roughAtten, this.roughAtten, this.f0);\r\n this.strength = pb.vec3(this.s);\r\n })\r\n .$else(function () {\r\n this.strength = this.resolveDeferredStrength(this.uv, this.roughnessValue);\r\n });\r\n this.color = pb.add(\r\n pb.mul(this.r, this.strength),\r\n pb.mul(this.sceneColor, pb.sub(pb.vec3(1), this.strength))\r\n );\r\n this.$return(this.color);\r\n }\r\n );\r\n pb.func('resolveEnvRadiance', [pb.vec2('uv'), pb.vec4('roughnessInfo')], function () {\r\n if (!ctx.env!.light.envLight?.hasRadiance()) {\r\n this.$return(pb.vec3(0));\r\n return;\r\n }\r\n this.$l.pos = this.getPosition(this.uv, this.invProjMatrix);\r\n this.$if(pb.greaterThanEqual(this.pos.w, 1), function () {\r\n this.$return(pb.vec3(0));\r\n });\r\n this.$l.roughness = this.roughnessInfo.a;\r\n this.$l.viewPos = this.pos.xyz;\r\n this.$l.worldNormal = pb.sub(\r\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\r\n pb.vec3(1)\r\n );\r\n this.$l.viewVec = pb.normalize(this.viewPos);\r\n this.$l.viewNormal = pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz;\r\n this.$l.reflectVec = pb.add(\r\n pb.reflect(this.viewVec, this.viewNormal),\r\n SSR_calcJitter(this, this.viewPos, this.roughness)\r\n );\r\n this.$l.reflectVecW = pb.mul(this.invViewMatrix, pb.vec4(this.reflectVec, 0)).xyz;\r\n this.$l.roughness2 = pb.clamp(this.roughness, 0, 1);\r\n this.$l.env = pb.mul(\r\n ctx.env!.light.envLight.getRadiance(this, this.reflectVecW, this.roughness2)!,\r\n this.envLightStrength,\r\n this.envLightSpecularStrength\r\n );\r\n this.$return(pb.min(this.env, pb.vec3(1)));\r\n });\r\n pb.func(\r\n 'resolveReflectance',\r\n [pb.vec2('uv'), pb.vec3('reflectSceneColor'), pb.vec4('roughnessInfo'), pb.float('alpha')],\r\n function () {\r\n this.$l.env = this.resolveEnvRadiance(this.uv, this.roughnessInfo);\r\n this.$l.reflectance = pb.mix(this.env, this.reflectSceneColor, pb.clamp(this.alpha, 0, 1));\r\n this.$return(this.reflectance);\r\n }\r\n );\r\n pb.main(function () {\r\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.targetSize.xy);\r\n this.$l.roughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.screenUV, 0);\r\n this.$l.intersectSample = pb.vec4(0);\r\n this.$l.reflectance = pb.vec3(0);\r\n this.$if(pb.lessThan(this.roughnessInfo.a, this.ssrMaxRoughness), function () {\r\n this.intersectSample = pb.textureSampleLevel(this.intersectTex, this.screenUV, 0);\r\n this.$l.hitAlpha = pb.clamp(this.intersectSample.w, 0, 1);\r\n this.$l.hitUV = pb.clamp(this.intersectSample.xy, pb.vec2(0), pb.vec2(1));\r\n this.$if(pb.greaterThan(this.hitAlpha, 0), function () {\r\n this.$l.indirectIntersectSample = pb.textureSampleLevel(this.intersectTex, this.hitUV, 0);\r\n this.$l.indirectAlpha = pb.clamp(this.indirectIntersectSample.w, 0, 1);\r\n this.$l.indirectUV = pb.clamp(this.indirectIntersectSample.xy, pb.vec2(0), pb.vec2(1));\r\n this.$l.indirectRoughnessInfo = pb.textureSampleLevel(this.roughnessTex, this.hitUV, 0);\r\n this.$l.indirectReflectance = pb.vec3();\r\n this.$if(pb.greaterThan(this.indirectAlpha, 0), function () {\r\n this.$l.indirectReflectSceneColor = pb.textureSampleLevel(\r\n this.colorTex,\r\n this.indirectUV,\r\n 0\r\n ).rgb;\r\n this.indirectReflectance = this.resolveReflectance(\r\n this.hitUV,\r\n this.indirectReflectSceneColor,\r\n this.indirectRoughnessInfo,\r\n this.indirectAlpha\r\n );\r\n }).$else(function () {\r\n this.indirectReflectance = this.resolveEnvRadiance(this.hitUV, this.indirectRoughnessInfo);\r\n });\r\n this.$l.reflectSceneColor = pb.textureSampleLevel(this.colorTex, this.hitUV, 0).rgb;\r\n this.$l.reflectSceneColor = this.resolveSample(\r\n this.hitUV,\r\n this.reflectSceneColor,\r\n this.indirectReflectance,\r\n this.indirectRoughnessInfo\r\n );\r\n this.reflectance = this.resolveReflectance(\r\n this.screenUV,\r\n this.reflectSceneColor,\r\n this.roughnessInfo,\r\n this.hitAlpha\r\n );\r\n }).$else(function () {\r\n this.reflectance = this.resolveEnvRadiance(this.screenUV, this.roughnessInfo);\r\n });\r\n });\r\n this.$outputs.outColor = pb.vec4(this.reflectance, this.intersectSample.z);\r\n });\r\n }\r\n })!;\r\n program.name = '@SSR_Resolve';\r\n return program;\r\n }\r\n /** @internal */\r\n private _createTemporalProgram(ctx: DrawContext) {\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.historyColorTex = pb.tex2D().uniform(0);\r\n this.currentColorTex = pb.tex2D().uniform(0);\r\n this.currentDepthTex = pb.tex2D().uniform(0);\r\n this.motionVector = pb.tex2D().uniform(0);\r\n this.prevMotionVector = pb.tex2D().uniform(0);\r\n this.texSize = pb.vec2().uniform(0);\r\n this.temporalWeight = pb.float().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.main(function () {\r\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.texSize);\r\n this.$l.currentColor = pb.textureSampleLevel(this.currentColorTex, this.screenUV, 0).rgb;\r\n this.$l.resolvedColor = temporalResolve(\r\n this,\r\n this.currentColorTex,\r\n this.historyColorTex,\r\n this.currentDepthTex,\r\n this.motionVector,\r\n this.prevMotionVector,\r\n this.screenUV,\r\n this.texSize,\r\n 0\r\n );\r\n this.$l.w = pb.clamp(this.temporalWeight, 0, 1);\r\n this.$outputs.outColor = pb.vec4(pb.mix(this.currentColor, this.resolvedColor, this.w), 1);\r\n });\r\n }\r\n })!;\r\n program.name = '@SSR_Temporal';\r\n return program;\r\n }\r\n /** @internal */\r\n private _createIntersectProgram(ctx: DrawContext, blur: boolean): Nullable<GPUProgram> {\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 if (!blur && ctx.env!.light.envLight?.hasRadiance()) {\r\n ctx.env!.light.envLight.initShaderBindings(pb);\r\n }\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 (!blur) {\r\n this.colorTex = pb.tex2D().uniform(0);\r\n if (ctx.env!.light.envLight?.hasRadiance()) {\r\n this.envLightStrength = pb.float().uniform(0);\r\n this.envLightSpecularStrength = pb.float().uniform(0);\r\n ctx.env!.light.envLight.initShaderBindings(pb);\r\n }\r\n }\r\n this.albedoTex = pb.tex2D().uniform(0);\r\n this.roughnessTex = pb.tex2D().uniform(0);\r\n this.normalTex = pb.tex2D().uniform(0);\r\n this.extraTex = pb.tex2D().uniform(0);\r\n this.depthTex = pb.tex2D().uniform(0);\r\n this.zGGXLut = pb.tex2D().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.cameraPos = pb.vec3().uniform(0);\r\n this.invProjMatrix = pb.mat4().uniform(0);\r\n this.projMatrix = pb.mat4().uniform(0);\r\n this.viewMatrix = pb.mat4().uniform(0);\r\n this.invViewMatrix = pb.mat4().uniform(0);\r\n this.ssrParams = pb.vec4().uniform(0);\r\n this.ssrMaxRoughness = pb.float().uniform(0);\r\n this.ssrStrengthMode = pb.int().uniform(0);\r\n this.targetSize = pb.vec4().uniform(0);\r\n if (ctx.HiZTexture) {\r\n this.hizTex = pb.tex2D().uniform(0);\r\n this.depthMipLevels = pb.int().uniform(0);\r\n } else {\r\n this.ssrStride = pb.float().uniform(0);\r\n }\r\n this.srgbOut = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.func('getPosition', [pb.vec2('uv'), pb.mat4('mat')], function () {\r\n this.$l.linearDepth = ShaderHelper.sampleLinearDepth(this, this.depthTex, this.uv, 0);\r\n this.$l.nonLinearDepth = pb.div(\r\n pb.sub(pb.div(this.cameraNearFar.x, this.linearDepth), this.cameraNearFar.y),\r\n pb.sub(this.cameraNearFar.x, this.cameraNearFar.y)\r\n );\r\n this.$l.clipSpacePos = 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.wPos = pb.mul(this.mat, this.clipSpacePos);\r\n this.$return(pb.vec4(pb.div(this.wPos.xyz, this.wPos.w), this.linearDepth));\r\n });\r\n pb.func(\r\n 'resolveDeferredStrength',\r\n [pb.vec2('uv'), pb.vec4('roughnessValue'), pb.vec4('viewPosInfo')],\r\n function () {\r\n this.$l.roughness = pb.clamp(this.roughnessValue.a, 0.045, 1);\r\n this.$l.base = pb.textureSampleLevel(this.albedoTex, this.uv, 0);\r\n this.$if(pb.lessThanEqual(this.base.a, 1e-5), function () {\r\n this.$return(pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1)));\r\n });\r\n this.$l.viewPos = this.viewPosInfo.xyz;\r\n this.$l.viewVec = pb.neg(pb.normalize(this.viewPos));\r\n this.$l.worldNormal = pb.sub(\r\n pb.mul(pb.textureSampleLevel(this.normalTex, this.uv, 0).rgb, 2),\r\n pb.vec3(1)\r\n );\r\n this.$l.viewNormal = pb.normalize(pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz);\r\n this.$l.NoV = pb.clamp(pb.dot(this.viewNormal, this.viewVec), 0.0001, 1);\r\n this.$l.baseColor = this.base.rgb;\r\n this.$l.extra = pb.textureSampleLevel(this.extraTex, this.uv, 0);\r\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\r\n this.$l.occlusion = pb.clamp(this.roughnessValue.g, 0, 1);\r\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\r\n this.$l.specularWeight = pb.clamp(this.extra.a, 0, 1);\r\n this.$l.f0 = pb.mix(pb.mul(pb.vec3(0.04), this.specStrength), this.baseColor, this.metallic);\r\n this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.roughness)), this.f0), this.f0);\r\n this.$l.kS = pb.add(this.f0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));\r\n this.$l.fab = pb.clamp(\r\n pb.textureSampleLevel(\r\n this.zGGXLut,\r\n pb.clamp(pb.vec2(this.NoV, this.roughness), pb.vec2(0), pb.vec2(1)),\r\n 0\r\n ).rg,\r\n pb.vec2(0),\r\n pb.vec2(1)\r\n );\r\n this.$l.FssEss = pb.add(pb.mul(this.kS, this.fab.x), pb.vec3(this.fab.y));\r\n this.$return(\r\n pb.clamp(pb.mul(this.FssEss, this.occlusion, this.specularWeight), pb.vec3(0), pb.vec3(1))\r\n );\r\n }\r\n );\r\n pb.main(function () {\r\n this.$l.screenUV = pb.div(pb.vec2(this.$builtins.fragCoord.xy), this.targetSize.xy);\r\n this.$l.roughnessValue = pb.textureSampleLevel(this.roughnessTex, this.screenUV, 0);\r\n this.$l.roughness = this.roughnessValue.a;\r\n if (!blur) {\r\n this.$l.sceneColor = pb.textureSampleLevel(this.colorTex, this.screenUV, 0).rgb;\r\n }\r\n this.$l.color = pb.vec3(0);\r\n this.$l.a = pb.float(0);\r\n this.$if(pb.lessThan(this.roughness, this.ssrMaxRoughness), function () {\r\n this.$l.pos = this.getPosition(this.screenUV, this.invProjMatrix);\r\n this.$l.linearDepth = this.pos.w;\r\n this.$if(pb.greaterThanEqual(this.linearDepth, 1), function () {\r\n if (!blur) {\r\n this.color = this.sceneColor;\r\n this.a = 1;\r\n }\r\n }).$else(function () {\r\n this.$l.viewPos = this.pos.xyz;\r\n this.$l.worldNormal = pb.sub(\r\n pb.mul(pb.textureSampleLevel(this.normalTex, this.screenUV, 0).rgb, 2),\r\n pb.vec3(1)\r\n );\r\n this.$l.viewVec = pb.normalize(this.viewPos);\r\n this.$l.viewNormal = pb.mul(this.viewMatrix, pb.vec4(this.worldNormal, 0)).xyz;\r\n this.$l.reflectVec = pb.add(\r\n pb.reflect(this.viewVec, this.viewNormal),\r\n SSR_calcJitter(this, this.viewPos, this.roughness)\r\n );\r\n this.$l.hitInfo = pb.vec4(0);\r\n if (ctx.HiZTexture) {\r\n this.hitInfo = screenSpaceRayTracing_HiZ(\r\n this,\r\n this.viewPos,\r\n this.reflectVec,\r\n this.viewMatrix,\r\n this.projMatrix,\r\n this.invProjMatrix,\r\n this.cameraNearFar,\r\n this.depthMipLevels,\r\n this.ssrParams.y,\r\n this.ssrParams.x,\r\n this.ssrParams.z,\r\n this.targetSize,\r\n this.hizTex,\r\n this.normalTex\r\n );\r\n } else {\r\n this.hitInfo = screenSpaceRayTracing_Linear2D(\r\n this,\r\n this.viewPos,\r\n this.reflectVec,\r\n this.viewMatrix,\r\n this.projMatrix,\r\n this.invProjMatrix,\r\n this.cameraNearFar,\r\n this.ssrParams.x,\r\n this.ssrParams.y,\r\n this.ssrParams.z,\r\n this.ssrStride,\r\n this.targetSize,\r\n this.depthTex,\r\n this.normalTex,\r\n !!ctx.camera.ssrCalcThickness\r\n );\r\n }\r\n this.$l.hitAlpha = pb.clamp(this.hitInfo.w, 0, 1);\r\n this.$l.hitUV = pb.clamp(this.hitInfo.xy, pb.vec2(0), pb.vec2(1));\r\n if (blur) {\r\n this.blurRadius = pb.float(0);\r\n this.$if(pb.greaterThan(this.roughness, 0.001), function () {\r\n this.$l.coneAngle = pb.mul(pb.min(this.roughness, 0.999), Math.PI * 0.5);\r\n this.$l.coneLen = this.$choice(\r\n pb.greaterThan(this.hitAlpha, 0),\r\n this.hitInfo.z,\r\n pb.min(this.targetSize.z, this.targetSize.w)\r\n );\r\n this.$l.opLen = pb.mul(pb.tan(this.coneAngle), this.coneLen, 2);\r\n this.$l.a2 = pb.mul(this.opLen, this.opLen);\r\n this.$l.fh2 = pb.mul(this.coneLen, this.coneLen, 4);\r\n this.blurRadius = pb.div(\r\n pb.mul(this.opLen, pb.sub(pb.sqrt(pb.add(this.a2, this.fh2)), this.opLen)),\r\n pb.mul(this.coneLen, 4)\r\n );\r\n });\r\n this.a = this.hitAlpha;\r\n this.color = pb.vec3(this.hitUV, pb.clamp(pb.div(this.blurRadius, 255), 0, 1));\r\n } else {\r\n if (ctx.env!.light.envLight?.hasRadiance()) {\r\n this.$l.reflectVecW = pb.mul(this.invViewMatrix, pb.vec4(this.reflectVec, 0)).xyz;\r\n this.$l.env = pb.mul(\r\n ctx.env!.light.envLight.getRadiance(this, this.reflectVecW, this.roughness)!,\r\n this.envLightStrength,\r\n this.envLightSpecularStrength\r\n );\r\n } else {\r\n this.$l.env = pb.vec3(0);\r\n }\r\n this.$l.reflectance = pb.mix(\r\n this.env,\r\n pb.textureSampleLevel(this.colorTex, this.hitUV, 0).rgb,\r\n this.hitAlpha\r\n );\r\n this.$l.reflectance = pb.div(this.$l.reflectance, pb.add(this.$l.reflectance, pb.vec3(1)));\r\n this.$l.strength = pb.vec3();\r\n this.$if(pb.equal(this.ssrStrengthMode, 0), function () {\r\n this.strength = pb.clamp(this.roughnessValue.rgb, pb.vec3(0), pb.vec3(1));\r\n })\r\n .$elseif(pb.equal(this.ssrStrengthMode, 1), function () {\r\n this.$l.roughAtten = pb.clamp(\r\n pb.sub(1, pb.div(this.roughness, pb.max(this.ssrMaxRoughness, 1e-4))),\r\n 0,\r\n 1\r\n );\r\n this.$l.metallic = pb.clamp(this.roughnessValue.r, 0, 1);\r\n this.$l.specStrength = pb.clamp(this.roughnessValue.b, 0, 1);\r\n this.$l.f0 = pb.mix(pb.mul(0.04, this.specStrength), 1, this.metallic);\r\n this.$l.s = pb.mul(this.roughAtten, this.roughAtten, this.f0);\r\n this.strength = pb.vec3(this.s);\r\n })\r\n .$else(function () {\r\n this.strength = this.resolveDeferredStrength(\r\n this.screenUV,\r\n this.roughnessValue,\r\n this.pos\r\n );\r\n });\r\n this.color = pb.add(\r\n pb.mul(this.reflectance, this.strength),\r\n pb.mul(this.sceneColor, pb.sub(pb.vec3(1), this.strength))\r\n );\r\n }\r\n });\r\n });\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.color, this.a);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.color), this.a);\r\n });\r\n });\r\n }\r\n });\r\n if (!program) {\r\n return null;\r\n }\r\n program.name = blur ? '@SSR_Intersect_Blur' : '@SSR_Intersect';\r\n return program;\r\n }\r\n}\r\n"],"names":["SSR","AbstractPostEffect","_programs","_resolveProgram","_combineProgram","_temporalProgram","_blurBlitterH","_blurBlitterV","_bindgroups","_resolveBindGroup","_combineBindGroup","_temporalBindGroup","_layer","PostEffectLayer","opaque","requireLinearDepthTexture","requireDepthAttachment","requireMotionVectorTexture","ctx","camera","ssrTemporal","setup","s","graph","history","linearDepthHandle","blackboard","get","FrameResources","LinearDepth","texDesc","format","sizeMode","width","height","readCommon","builder","read","dep","dependencies","getLinearDepth","rg","getTexture","linearDepthTexture","intersectHandle","addPass","input","out","createTexture","label","fb","createFramebuffer","colorAttachments","depthAttachment","sceneDepthAttachment","ignoreDepthStencil","setExecute","device","pushDeviceStates","setFramebuffer","getFramebuffer","intersect","popDeviceStates","resolveHandle","inputTex","resolve","sceneColorTexture","reflectHandle","ssrBlurScale","ssrBlurKernelSize","middle","middleFB","outFB","intersectTex","blurSizeScale","kernelRadius","Math","max","stdDev","ssrBlurStdDev","depthCutoff","ssrBlurDepthCutoff","blitterH","BilateralBlurBlitter","renderStates","getDefaultRenderState","blurPass","blitterV","wantTemporal","motionVectorHandle","MotionVector","historySize","prevReflectHandle","importPreviousIfCompatible","RGHistoryResources","SSR_REFLECT","prevMotionVectorHandle","SSR_MOTION_VECTOR","blurredHandle","temporal","finalReflectHandle","output","createOutput","needDepthAttachment","framebuffer","reflectanceTex","copyTexture","fetchSampler","combine","srgbOutput","queueRetainedCommit","motionVectorTexture","color","blitter","blurSizeTex","blurSizeIndex","srcTex","fbTo","size","Vector2","depthTex","sampler","cameraNearFar","setXY","getNearPlane","getFarPlane","srgbOut","blit","inputColorTexture","program","undefined","_createCombineProgrm","roughnessTexture","SSRRoughnessTexture","createBindGroup","bindGroupLayouts","linearSampler","nearestSampler","setTexture","SSRNormalTexture","getGGXLUT","setValue","ssrMaxRoughness","viewMatrix","Matrix4x4","invert","getProjectionMatrix","Vector4","needFlip","setProgram","setBindGroup","drawFullscreenQuad","sceneDepthTexture","intersectTexture","hasEnvRadiance","env","light","envLight","hasRadiance","hash","getHash","_createResolveProgram","bindGroup","normalTexture","worldMatrix","strength","specularStrength","updateBindGroup","blur","Number","HiZTexture","ssrCalcThickness","created","_createIntersectProgram","getWorldPosition","ssrParams","mipLevelCount","ssrStride","currentReflectTex","prevReflectTex","prevMotionVectorTex","outFramebuffer","_createTemporalProgram","ssrTemporalWeight","apply","intersectFramebuffer","pool","fetchTemporalFramebuffer","depthTexture","pingpongFramebuffer","getColorAttachments","ssrSceneColorTexture","historyManager","getHistoryResourceManager","prevSSRReflectTex","tryGetPrevious","prevSSRMotionVectorTex","canTemporal","reflectanceSize","motionVectorSize","releaseFrameBuffer","buildRenderProgram","vertex","pb","flip","int","uniform","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","$if","notEqual","y","neg","fragment","colorTex","tex2D","roughnessTex","albedoTex","extraTex","normalTex","zGGXLut","targetSize","mat4","invProjMatrix","float","ssrStrengthMode","outColor","func","$l","linearDepth","ShaderHelper","sampleLinearDepth","nonLinearDepth","div","sub","x","clipSpacePos","clamp","viewPos4","$return","xyz","w","roughness","roughnessValue","a","base","textureSampleLevel","lessThanEqual","rgb","vec3","getPosition","greaterThanEqual","viewPos","viewVec","normalize","worldNormal","viewNormal","NoV","dot","baseColor","extra","metallic","r","occlusion","g","specStrength","b","specularWeight","f0","mix","Fr","kS","pow","fab","FssEss","reflectance","equal","$elseif","roughAtten","$else","resolveDeferredStrength","sceneColor","screenUV","fragCoord","roughnessInfo","combined","resolveSample","linearToGamma","name","initShaderBindings","invViewMatrix","envLightStrength","envLightSpecularStrength","wPos","mat","reflectVec","reflect","SSR_calcJitter","reflectVecW","roughness2","getRadiance","min","resolveEnvRadiance","reflectSceneColor","alpha","intersectSample","lessThan","hitAlpha","hitUV","greaterThan","indirectIntersectSample","indirectAlpha","indirectUV","indirectRoughnessInfo","indirectReflectance","indirectReflectSceneColor","resolveReflectance","z","historyColorTex","currentColorTex","currentDepthTex","motionVector","prevMotionVector","texSize","temporalWeight","currentColor","resolvedColor","temporalResolve","cameraPos","projMatrix","hizTex","depthMipLevels","viewPosInfo","hitInfo","screenSpaceRayTracing_HiZ","screenSpaceRayTracing_Linear2D","blurRadius","coneAngle","PI","coneLen","$choice","opLen","tan","a2","fh2","sqrt"],"mappings":"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"}
|