@zephyr3d/scene 0.9.8 → 0.9.10

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/index.js CHANGED
@@ -102,7 +102,9 @@ export { GrassInstances, GrassLayer, GrassQuadtreeNode, GrassRenderer } from './
102
102
  export { RaycastVisitor } from './scene/raycast_visitor.js';
103
103
  export { ScriptAttachment, normalizeScriptAttachmentConfig, normalizeScriptAttachments } from './scene/script_attachment.js';
104
104
  export { AnimationClip } from './animation/animation.js';
105
- export { AnimationSet } from './animation/animationset.js';
105
+ export { AnimationPlayback, AnimationSet } from './animation/animationset.js';
106
+ export { AnimationTimeline, AnimationTimelineRunner } from './animation/animationtimeline.js';
107
+ export { AnimationController } from './animation/animationcontroller.js';
106
108
  export { AnimationTrack } from './animation/animationtrack.js';
107
109
  export { NodeTranslationTrack } from './animation/translationtrack.js';
108
110
  export { NodeRotationTrack } from './animation/rotationtrack.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"esm.js","sources":["../../src/shadow/esm.ts"],"sourcesContent":["import type { FrameBuffer, TextureFormat, PBShaderExp, PBInsideFunctionScope } from '@zephyr3d/device';\nimport { ShadowImpl } from './shadow_impl';\nimport type { BlitType } from '../blitter';\nimport { GaussianBlurBlitter } from '../blitter';\nimport { computeShadowMapDepth, filterShadowESM } from '../shaders/shadow';\nimport { decodeNormalizedFloatFromRGBA, encodeNormalizedFloatToRGBA } from '../shaders/misc';\nimport { LIGHT_TYPE_POINT } from '../values';\nimport type { ShadowMapParams, ShadowMapType } from './shadowmapper';\nimport { ShaderHelper } from '../material/shader/helper';\nimport { getDevice } from '../app/api';\nimport { Vector4, type Nullable } from '@zephyr3d/base';\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\n\ntype ESMImplData = {\n blurFramebuffer: Nullable<FrameBuffer>;\n blurFramebuffer2: Nullable<FrameBuffer>;\n};\n\nclass BlurBlitter extends GaussianBlurBlitter {\n protected _packFloat = false;\n get packFloat() {\n return this._packFloat;\n }\n set packFloat(b) {\n if (this._packFloat !== !!b) {\n this._packFloat = !!b;\n this.invalidateHash();\n }\n }\n readTexel(\n scope: PBInsideFunctionScope,\n type: BlitType,\n srcTex: PBShaderExp,\n srcUV: PBShaderExp,\n srcLayer: PBShaderExp,\n sampleType: 'float' | 'int' | 'uint'\n ) {\n const pb = scope.$builder;\n const texel = super.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\n if (this.packFloat) {\n return pb.vec4(decodeNormalizedFloatFromRGBA(scope, texel), 1, 0, 1);\n } else {\n return texel;\n }\n }\n filter(\n scope: PBInsideFunctionScope,\n type: BlitType,\n srcTex: PBShaderExp,\n srcUV: PBShaderExp,\n srcLayer: PBShaderExp,\n sampleType: 'float' | 'int' | 'uint'\n ) {\n const that = this;\n const pb = scope.$builder;\n scope.incrementalGaussian = pb.vec3();\n scope.incrementalGaussian.x = pb.div(1, pb.mul(scope.sigma, Math.sqrt(2 * Math.PI)));\n scope.incrementalGaussian.y = pb.exp(pb.div(-0.5, pb.mul(scope.sigma, scope.sigma)));\n scope.incrementalGaussian.z = pb.mul(scope.incrementalGaussian.y, scope.incrementalGaussian.y);\n scope.coefficientSum = pb.float(0);\n scope.coverageSum = pb.float(0);\n scope.d0 = that.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\n scope.coverage0 = pb.clamp(scope.d0.y, 0, 1);\n scope.coefficientSum = pb.add(scope.coefficientSum, scope.incrementalGaussian.x);\n scope.coverageSum = pb.add(scope.coverageSum, pb.mul(scope.incrementalGaussian.x, scope.coverage0));\n\n if (that.logSpace) {\n scope.maxLogValue = pb.float(-1e20);\n scope.logValue0 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.multiplier) : scope.d0.x;\n scope.$if(pb.greaterThan(scope.coverage0, 0.000001), function () {\n this.maxLogValue = this.logValue0;\n });\n } else {\n scope.depthSum = pb.mul(scope.incrementalGaussian.x, scope.coverage0, scope.d0.x);\n }\n\n scope.incrementalGaussian = pb.vec3(\n pb.mul(scope.incrementalGaussian.xy, scope.incrementalGaussian.yz),\n scope.incrementalGaussian.z\n );\n scope.$for(pb.float('i'), 1, scope.numBlurPixelsPerSide, function () {\n this.$l.blurOffset = pb.mul(this.blurMultiplyVec, this.blurSize, this.i);\n this.$l.d1 = that.readTexel(scope, type, srcTex, pb.sub(srcUV, this.blurOffset), srcLayer, sampleType);\n this.$l.d2 = that.readTexel(scope, type, srcTex, pb.add(srcUV, this.blurOffset), srcLayer, sampleType);\n this.$l.coverage1 = pb.clamp(this.d1.y, 0, 1);\n this.$l.coverage2 = pb.clamp(this.d2.y, 0, 1);\n this.coefficientSum = pb.add(this.coefficientSum, pb.mul(this.incrementalGaussian.x, 2));\n this.coverageSum = pb.add(\n this.coverageSum,\n pb.mul(this.incrementalGaussian.x, pb.add(this.coverage1, this.coverage2))\n );\n if (that.logSpace) {\n this.$l.logValue1 = that._phase === 'horizonal' ? pb.mul(this.d1.x, this.multiplier) : this.d1.x;\n this.$l.logValue2 = that._phase === 'horizonal' ? pb.mul(this.d2.x, this.multiplier) : this.d2.x;\n this.$if(pb.greaterThan(this.coverage1, 0.000001), function () {\n this.maxLogValue = pb.max(this.maxLogValue, this.logValue1);\n });\n this.$if(pb.greaterThan(this.coverage2, 0.000001), function () {\n this.maxLogValue = pb.max(this.maxLogValue, this.logValue2);\n });\n } else {\n this.depthSum = pb.add(\n this.depthSum,\n pb.mul(\n this.incrementalGaussian.x,\n pb.add(pb.mul(this.coverage1, this.d1.x), pb.mul(this.coverage2, this.d2.x))\n )\n );\n }\n this.incrementalGaussian = pb.vec3(\n pb.mul(this.incrementalGaussian.xy, this.incrementalGaussian.yz),\n this.incrementalGaussian.z\n );\n });\n\n if (that.logSpace) {\n scope.incrementalGaussian.x = pb.div(1, pb.mul(scope.sigma, Math.sqrt(2 * Math.PI)));\n scope.incrementalGaussian.y = pb.exp(pb.div(-0.5, pb.mul(scope.sigma, scope.sigma)));\n scope.incrementalGaussian.z = pb.mul(scope.incrementalGaussian.y, scope.incrementalGaussian.y);\n scope.momentSum = pb.float(0);\n scope.$if(pb.greaterThan(scope.coverage0, 0.000001), function () {\n this.momentSum = pb.add(\n this.momentSum,\n pb.mul(\n this.incrementalGaussian.x,\n this.coverage0,\n pb.exp(pb.min(87, pb.sub(this.logValue0, this.maxLogValue)))\n )\n );\n });\n scope.incrementalGaussian = pb.vec3(\n pb.mul(scope.incrementalGaussian.xy, scope.incrementalGaussian.yz),\n scope.incrementalGaussian.z\n );\n scope.$for(pb.float('i'), 1, scope.numBlurPixelsPerSide, function () {\n this.$l.blurOffset = pb.mul(this.blurMultiplyVec, this.blurSize, this.i);\n this.$l.d1 = that.readTexel(\n scope,\n type,\n srcTex,\n pb.sub(srcUV, this.blurOffset),\n srcLayer,\n sampleType\n );\n this.$l.d2 = that.readTexel(\n scope,\n type,\n srcTex,\n pb.add(srcUV, this.blurOffset),\n srcLayer,\n sampleType\n );\n this.$l.coverage1 = pb.clamp(this.d1.y, 0, 1);\n this.$l.coverage2 = pb.clamp(this.d2.y, 0, 1);\n this.$l.logValue1 = that._phase === 'horizonal' ? pb.mul(this.d1.x, this.multiplier) : this.d1.x;\n this.$l.logValue2 = that._phase === 'horizonal' ? pb.mul(this.d2.x, this.multiplier) : this.d2.x;\n this.$if(pb.greaterThan(this.coverage1, 0.000001), function () {\n this.momentSum = pb.add(\n this.momentSum,\n pb.mul(\n this.incrementalGaussian.x,\n this.coverage1,\n pb.exp(pb.min(87, pb.sub(this.logValue1, this.maxLogValue)))\n )\n );\n });\n this.$if(pb.greaterThan(this.coverage2, 0.000001), function () {\n this.momentSum = pb.add(\n this.momentSum,\n pb.mul(\n this.incrementalGaussian.x,\n this.coverage2,\n pb.exp(pb.min(87, pb.sub(this.logValue2, this.maxLogValue)))\n )\n );\n });\n this.incrementalGaussian = pb.vec3(\n pb.mul(this.incrementalGaussian.xy, this.incrementalGaussian.yz),\n this.incrementalGaussian.z\n );\n });\n scope.$l.moment = pb.float(0);\n scope.$if(pb.greaterThan(scope.coverageSum, 0.000001), function () {\n this.moment = pb.add(this.maxLogValue, pb.log(pb.div(this.momentSum, this.coverageSum)));\n });\n return pb.vec4(scope.moment, pb.div(scope.coverageSum, scope.coefficientSum), 0, 1);\n } else {\n scope.$l.depth = pb.float(1);\n scope.$if(pb.greaterThan(scope.coverageSum, 0.000001), function () {\n this.depth = pb.div(this.depthSum, this.coverageSum);\n });\n return pb.vec4(scope.depth, pb.div(scope.coverageSum, scope.coefficientSum), 0, 1);\n }\n }\n writeTexel(scope: PBInsideFunctionScope, type: BlitType, srcUV: PBShaderExp, texel: PBShaderExp) {\n const outTexel = super.writeTexel(scope, type, srcUV, texel);\n if (this.packFloat) {\n return encodeNormalizedFloatToRGBA(scope, outTexel.r);\n } else {\n return outTexel;\n }\n }\n protected calcHash() {\n return `${super.calcHash()}-${Number(this.packFloat)}`;\n }\n}\n\n/** @internal */\nexport class ESM extends ShadowImpl {\n /** @internal */\n protected _depthScale: number;\n /** @internal */\n protected _blur: boolean;\n /** @internal */\n protected _kernelSize: number;\n /** @internal */\n protected _blurSize: number;\n /** @internal */\n protected _logSpace: boolean;\n /** @internal */\n protected _blitterH: BlurBlitter;\n /** @internal */\n protected _blitterV: BlurBlitter;\n /** @internal */\n protected _mipmap: boolean;\n constructor(kernelSize?: number, blurSize?: number, depthScale?: number) {\n super();\n this._blur = true;\n this._depthScale = depthScale ?? 500;\n this._kernelSize = kernelSize ?? 5;\n this._blurSize = blurSize ?? 1;\n this._logSpace = true;\n this._mipmap = true;\n this._blitterH = new BlurBlitter('horizonal', this._kernelSize, 4, 1 / 1024);\n this._blitterV = new BlurBlitter('vertical', this._kernelSize, 4, 1 / 1024);\n }\n resourceDirty() {\n return this._resourceDirty;\n }\n get blur() {\n return this._blur;\n }\n set blur(val) {\n if (this._blur !== !!val) {\n this._blur = !!val;\n this._resourceDirty = true;\n }\n }\n get mipmap() {\n return this._mipmap;\n }\n set mipmap(b) {\n if (this._mipmap !== !!b) {\n this._mipmap = !!b;\n if (this._blur) {\n this._resourceDirty = true;\n }\n }\n }\n get kernelSize() {\n return this._kernelSize;\n }\n set kernelSize(val) {\n this._kernelSize = val;\n }\n get blurSize() {\n return this._blurSize;\n }\n set blurSize(val) {\n this._blurSize = val;\n }\n get logSpace() {\n return this._logSpace;\n }\n set logSpace(val) {\n this._logSpace = !!val;\n }\n getType() {\n return 'esm' as const;\n }\n getShadowMapBorder(_shadowMapParams: ShadowMapParams) {\n return this._blur ? Math.ceil(((this._kernelSize + 1) / 2) * this._blurSize) : 0;\n }\n getShadowMapClearColor(shadowMapParams: ShadowMapParams) {\n const colorAttachment = shadowMapParams.shadowMapFramebuffer?.getColorAttachments()[0];\n return colorAttachment\n ? colorAttachment.format === 'rgba8unorm'\n ? new Vector4(0, 0, 0, 1)\n : new Vector4(1, 0, 0, 1)\n : null;\n }\n getShadowMap(shadowMapParams: ShadowMapParams) {\n const implData = shadowMapParams.implData as ESMImplData;\n return (\n implData\n ? implData.blurFramebuffer2!.getColorAttachments()[0]\n : shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0]\n ) as ShadowMapType;\n }\n /** @internal */\n fetchTemporalFramebuffer(\n autoRelease: boolean,\n lightType: number,\n numCascades: number,\n width: number,\n height: number,\n colorFormat: TextureFormat,\n depthFormat: Nullable<TextureFormat>,\n mipmapping?: boolean\n ) {\n const device = getDevice();\n const useTextureArray = numCascades > 1 && device.type !== 'webgl';\n const colorAttachments = colorFormat\n ? useTextureArray\n ? [\n device.pool.fetchTemporalTexture2DArray(\n false,\n colorFormat,\n width,\n height,\n numCascades,\n mipmapping\n )\n ]\n : lightType === LIGHT_TYPE_POINT\n ? [device.pool.fetchTemporalTextureCube(false, colorFormat, width, mipmapping)]\n : [device.pool.fetchTemporalTexture2D(false, colorFormat, width, height, mipmapping)]\n : null;\n const depthAttachment = depthFormat\n ? useTextureArray\n ? device.pool.fetchTemporalTexture2DArray(false, depthFormat, width, height, numCascades, false)\n : device.type !== 'webgl' && lightType === LIGHT_TYPE_POINT\n ? device.pool.fetchTemporalTextureCube(false, depthFormat, width, false)\n : device.pool.fetchTemporalTexture2D(false, depthFormat, width, height, false)\n : null;\n const fb = device.pool.createTemporalFramebuffer(autoRelease, colorAttachments!, depthAttachment);\n if (colorAttachments) {\n device.pool.releaseTexture(colorAttachments[0]);\n }\n if (depthAttachment) {\n device.pool.releaseTexture(depthAttachment);\n }\n return fb;\n }\n doUpdateResources(shadowMapParams: ShadowMapParams) {\n const implData: ESMImplData = {\n blurFramebuffer: null,\n blurFramebuffer2: null\n };\n shadowMapParams.implData = implData;\n const colorFormat = this.getShadowMapColorFormat(shadowMapParams)!;\n const shadowMapWidth = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].width;\n const shadowMapHeight = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].height;\n if (this._blur) {\n shadowMapParams.implData = {\n blurFramebuffer: this.fetchTemporalFramebuffer(\n true,\n shadowMapParams.lightType,\n shadowMapParams.numShadowCascades,\n shadowMapWidth,\n shadowMapHeight,\n colorFormat,\n null,\n false\n ),\n blurFramebuffer2: this.fetchTemporalFramebuffer(\n true,\n shadowMapParams.lightType,\n shadowMapParams.numShadowCascades,\n shadowMapWidth,\n shadowMapHeight,\n colorFormat,\n null,\n true\n )\n };\n } else {\n shadowMapParams.implData = null;\n }\n shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);\n shadowMapParams.shadowMapSampler = shadowMapParams.shadowMap?.getDefaultSampler(false) ?? null;\n }\n postRenderShadowMap(shadowMapParams: ShadowMapParams) {\n if (shadowMapParams.implData) {\n const implData = shadowMapParams.implData as ESMImplData;\n const colorAttachment = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0];\n const packFloat = colorAttachment.format === 'rgba8unorm';\n const logSpace = this._logSpace && !packFloat;\n this._blitterH.blurSize = this._blurSize / colorAttachment.width;\n this._blitterH.kernelSize = this._kernelSize;\n this._blitterH.logSpace = logSpace;\n this._blitterH.logSpaceMultiplier = this._depthScale;\n this._blitterH.packFloat = packFloat;\n this._blitterV.blurSize = this._blurSize / colorAttachment.height;\n this._blitterV.kernelSize = this._kernelSize;\n this._blitterV.logSpace = logSpace;\n this._blitterV.logSpaceMultiplier = this._depthScale;\n this._blitterV.packFloat = packFloat;\n this._blitterH.blit(colorAttachment as any, implData.blurFramebuffer!);\n this._blitterV.blit(\n implData.blurFramebuffer!.getColorAttachments()[0] as any,\n implData.blurFramebuffer2!\n );\n }\n }\n getDepthScale() {\n return this._depthScale;\n }\n setDepthScale(val: number) {\n this._depthScale = val;\n }\n getShaderHash() {\n return `${this._blur ? 1 : 0}${this._logSpace ? 1 : 0}`;\n }\n getShadowMapColorFormat(_shadowMapParams: ShadowMapParams) {\n const device = getDevice();\n return device.getDeviceCaps().textureCaps.supportFloatColorBuffer &&\n device.getDeviceCaps().textureCaps.supportLinearFloatTexture\n ? device.type === 'webgl'\n ? 'rgba32f'\n : 'rg32f'\n : device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer &&\n device.getDeviceCaps().textureCaps.supportLinearHalfFloatTexture\n ? device.type === 'webgl'\n ? 'rgba16f'\n : 'rg16f'\n : 'rgba8unorm';\n }\n getShadowMapDepthFormat(_shadowMapParams: ShadowMapParams) {\n return 'd24s8' as const;\n }\n computeShadowMapDepth(\n shadowMapParams: ShadowMapParams,\n scope: PBInsideFunctionScope,\n worldPos: PBShaderExp\n ) {\n const pb = scope.$builder;\n const depth = computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap!.format);\n return shadowMapParams.shadowMap!.format === 'rgba8unorm' ? depth : pb.vec4(depth.x, 1, 0, 1);\n }\n computeShadowCSM(\n shadowMapParams: ShadowMapParams,\n scope: PBInsideFunctionScope,\n shadowVertex: PBShaderExp,\n NdotL: PBShaderExp,\n split: PBShaderExp\n ) {\n const funcNameComputeShadowCSM = 'lib_computeShadowCSM';\n const pb = scope.$builder;\n const logSpace = this._blur && this._logSpace && shadowMapParams.shadowMap!.format !== 'rgba8unorm';\n pb.func(\n funcNameComputeShadowCSM,\n [pb.vec4('shadowVertex'), pb.float('NdotL'), pb.int('split')],\n function () {\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\n this.$l.inShadow = pb.all(\n pb.bvec2(\n pb.all(\n pb.bvec4(\n pb.greaterThanEqual(this.shadowCoord.x, 0),\n pb.lessThanEqual(this.shadowCoord.x, 1),\n pb.greaterThanEqual(this.shadowCoord.y, 0),\n pb.lessThanEqual(this.shadowCoord.y, 1)\n )\n ),\n pb.lessThanEqual(this.shadowCoord.z, 1)\n )\n );\n this.$l.shadow = pb.float(1);\n this.$if(this.inShadow, function () {\n this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);\n this.shadow = filterShadowESM(\n this,\n shadowMapParams.lightType,\n shadowMapParams.shadowMap!.format,\n logSpace,\n this.shadowCoord,\n this.split,\n this.shadowBias\n );\n });\n this.$return(this.shadow);\n }\n );\n return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split) as PBShaderExp;\n }\n computeShadow(\n shadowMapParams: ShadowMapParams,\n scope: PBInsideFunctionScope,\n shadowVertex: PBShaderExp,\n NdotL: PBShaderExp\n ) {\n const funcNameComputeShadow = 'lib_computeShadow';\n const pb = scope.$builder;\n const logSpace = this._blur && this._logSpace && shadowMapParams.shadowMap!.format !== 'rgba8unorm';\n pb.func(funcNameComputeShadow, [pb.vec4('shadowVertex'), pb.float('NdotL')], function () {\n if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {\n this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);\n this.$l.distance = pb.div(\n pb.length(this.dir),\n ShaderHelper.getLightPositionAndRangeForShadow(this).w\n );\n this.$l.shadowBias = computeShadowBias(\n shadowMapParams.lightType,\n this,\n this.distance,\n this.NdotL,\n true\n );\n this.$return(\n filterShadowESM(\n this,\n LIGHT_TYPE_POINT,\n shadowMapParams.shadowMap!.format,\n logSpace,\n this.dir,\n undefined,\n this.shadowBias\n )\n );\n } else {\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\n this.$l.inShadow = pb.all(\n pb.bvec2(\n pb.all(\n pb.bvec4(\n pb.greaterThanEqual(this.shadowCoord.x, 0),\n pb.lessThanEqual(this.shadowCoord.x, 1),\n pb.greaterThanEqual(this.shadowCoord.y, 0),\n pb.lessThanEqual(this.shadowCoord.y, 1)\n )\n ),\n pb.lessThanEqual(this.shadowCoord.z, 1)\n )\n );\n this.$l.shadow = pb.float(1);\n this.$if(this.inShadow, function () {\n this.$l.shadowBias = computeShadowBias(\n shadowMapParams.lightType,\n this,\n this.shadowCoord.z,\n this.NdotL,\n false\n );\n this.shadow = filterShadowESM(\n this,\n shadowMapParams.lightType,\n shadowMapParams.shadowMap!.format,\n logSpace,\n this.shadowCoord,\n undefined,\n this.shadowBias\n );\n });\n this.$return(this.shadow);\n }\n });\n return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL) as PBShaderExp;\n }\n useNativeShadowMap(_shadowMapParams: ShadowMapParams) {\n return false;\n }\n}\n"],"names":["BlurBlitter","GaussianBlurBlitter","_packFloat","packFloat","b","invalidateHash","readTexel","scope","type","srcTex","srcUV","srcLayer","sampleType","pb","$builder","texel","vec4","decodeNormalizedFloatFromRGBA","filter","that","incrementalGaussian","vec3","x","div","mul","sigma","Math","sqrt","PI","y","exp","z","coefficientSum","float","coverageSum","d0","coverage0","clamp","add","logSpace","maxLogValue","logValue0","_phase","multiplier","$if","greaterThan","depthSum","xy","yz","$for","numBlurPixelsPerSide","$l","blurOffset","blurMultiplyVec","blurSize","i","d1","sub","d2","coverage1","coverage2","logValue1","logValue2","max","momentSum","min","moment","log","depth","writeTexel","outTexel","encodeNormalizedFloatToRGBA","r","calcHash","Number","ESM","ShadowImpl","kernelSize","depthScale","_blur","_depthScale","_kernelSize","_blurSize","_logSpace","_mipmap","_blitterH","_blitterV","resourceDirty","_resourceDirty","blur","val","mipmap","getType","getShadowMapBorder","_shadowMapParams","ceil","getShadowMapClearColor","shadowMapParams","colorAttachment","shadowMapFramebuffer","getColorAttachments","format","Vector4","getShadowMap","implData","blurFramebuffer2","fetchTemporalFramebuffer","autoRelease","lightType","numCascades","width","height","colorFormat","depthFormat","mipmapping","device","getDevice","useTextureArray","colorAttachments","pool","fetchTemporalTexture2DArray","LIGHT_TYPE_POINT","fetchTemporalTextureCube","fetchTemporalTexture2D","depthAttachment","fb","createTemporalFramebuffer","releaseTexture","doUpdateResources","blurFramebuffer","getShadowMapColorFormat","shadowMapWidth","shadowMapHeight","numShadowCascades","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","logSpaceMultiplier","blit","getDepthScale","setDepthScale","getShaderHash","getDeviceCaps","textureCaps","supportFloatColorBuffer","supportLinearFloatTexture","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","getShadowMapDepthFormat","computeShadowMapDepth","worldPos","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","func","int","shadowCoord","w","inShadow","all","bvec2","bvec4","greaterThanEqual","lessThanEqual","shadow","shadowBias","computeShadowBiasCSM","filterShadowESM","$return","getGlobalScope","computeShadow","funcNameComputeShadow","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","distance","length","computeShadowBias","undefined","useNativeShadowMap"],"mappings":"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"}
1
+ {"version":3,"file":"esm.js","sources":["../../src/shadow/esm.ts"],"sourcesContent":["import type { FrameBuffer, TextureFormat, PBShaderExp, PBInsideFunctionScope } from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport type { BlitType } from '../blitter';\r\nimport { GaussianBlurBlitter } from '../blitter';\r\nimport { computeShadowMapDepth, filterShadowESM } from '../shaders/shadow';\r\nimport { decodeNormalizedFloatFromRGBA, encodeNormalizedFloatToRGBA } from '../shaders/misc';\r\nimport { LIGHT_TYPE_POINT } from '../values';\r\nimport type { ShadowMapParams, ShadowMapType } from './shadowmapper';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { getDevice } from '../app/api';\r\nimport { Vector4, type Nullable } from '@zephyr3d/base';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\n\r\ntype ESMImplData = {\r\n blurFramebuffer: Nullable<FrameBuffer>;\r\n blurFramebuffer2: Nullable<FrameBuffer>;\r\n};\r\n\r\nclass BlurBlitter extends GaussianBlurBlitter {\r\n protected _packFloat = false;\r\n get packFloat() {\r\n return this._packFloat;\r\n }\r\n set packFloat(b) {\r\n if (this._packFloat !== !!b) {\r\n this._packFloat = !!b;\r\n this.invalidateHash();\r\n }\r\n }\r\n readTexel(\r\n scope: PBInsideFunctionScope,\r\n type: BlitType,\r\n srcTex: PBShaderExp,\r\n srcUV: PBShaderExp,\r\n srcLayer: PBShaderExp,\r\n sampleType: 'float' | 'int' | 'uint'\r\n ) {\r\n const pb = scope.$builder;\r\n const texel = super.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n if (this.packFloat) {\r\n return pb.vec4(decodeNormalizedFloatFromRGBA(scope, texel), 1, 0, 1);\r\n } else {\r\n return texel;\r\n }\r\n }\r\n filter(\r\n scope: PBInsideFunctionScope,\r\n type: BlitType,\r\n srcTex: PBShaderExp,\r\n srcUV: PBShaderExp,\r\n srcLayer: PBShaderExp,\r\n sampleType: 'float' | 'int' | 'uint'\r\n ) {\r\n const that = this;\r\n const pb = scope.$builder;\r\n scope.incrementalGaussian = pb.vec3();\r\n scope.incrementalGaussian.x = pb.div(1, pb.mul(scope.sigma, Math.sqrt(2 * Math.PI)));\r\n scope.incrementalGaussian.y = pb.exp(pb.div(-0.5, pb.mul(scope.sigma, scope.sigma)));\r\n scope.incrementalGaussian.z = pb.mul(scope.incrementalGaussian.y, scope.incrementalGaussian.y);\r\n scope.coefficientSum = pb.float(0);\r\n scope.coverageSum = pb.float(0);\r\n scope.d0 = that.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n scope.coverage0 = pb.clamp(scope.d0.y, 0, 1);\r\n scope.coefficientSum = pb.add(scope.coefficientSum, scope.incrementalGaussian.x);\r\n scope.coverageSum = pb.add(scope.coverageSum, pb.mul(scope.incrementalGaussian.x, scope.coverage0));\r\n\r\n if (that.logSpace) {\r\n scope.maxLogValue = pb.float(-1e20);\r\n scope.logValue0 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.multiplier) : scope.d0.x;\r\n scope.$if(pb.greaterThan(scope.coverage0, 0.000001), function () {\r\n this.maxLogValue = this.logValue0;\r\n });\r\n } else {\r\n scope.depthSum = pb.mul(scope.incrementalGaussian.x, scope.coverage0, scope.d0.x);\r\n }\r\n\r\n scope.incrementalGaussian = pb.vec3(\r\n pb.mul(scope.incrementalGaussian.xy, scope.incrementalGaussian.yz),\r\n scope.incrementalGaussian.z\r\n );\r\n scope.$for(pb.float('i'), 1, scope.numBlurPixelsPerSide, function () {\r\n this.$l.blurOffset = pb.mul(this.blurMultiplyVec, this.blurSize, this.i);\r\n this.$l.d1 = that.readTexel(scope, type, srcTex, pb.sub(srcUV, this.blurOffset), srcLayer, sampleType);\r\n this.$l.d2 = that.readTexel(scope, type, srcTex, pb.add(srcUV, this.blurOffset), srcLayer, sampleType);\r\n this.$l.coverage1 = pb.clamp(this.d1.y, 0, 1);\r\n this.$l.coverage2 = pb.clamp(this.d2.y, 0, 1);\r\n this.coefficientSum = pb.add(this.coefficientSum, pb.mul(this.incrementalGaussian.x, 2));\r\n this.coverageSum = pb.add(\r\n this.coverageSum,\r\n pb.mul(this.incrementalGaussian.x, pb.add(this.coverage1, this.coverage2))\r\n );\r\n if (that.logSpace) {\r\n this.$l.logValue1 = that._phase === 'horizonal' ? pb.mul(this.d1.x, this.multiplier) : this.d1.x;\r\n this.$l.logValue2 = that._phase === 'horizonal' ? pb.mul(this.d2.x, this.multiplier) : this.d2.x;\r\n this.$if(pb.greaterThan(this.coverage1, 0.000001), function () {\r\n this.maxLogValue = pb.max(this.maxLogValue, this.logValue1);\r\n });\r\n this.$if(pb.greaterThan(this.coverage2, 0.000001), function () {\r\n this.maxLogValue = pb.max(this.maxLogValue, this.logValue2);\r\n });\r\n } else {\r\n this.depthSum = pb.add(\r\n this.depthSum,\r\n pb.mul(\r\n this.incrementalGaussian.x,\r\n pb.add(pb.mul(this.coverage1, this.d1.x), pb.mul(this.coverage2, this.d2.x))\r\n )\r\n );\r\n }\r\n this.incrementalGaussian = pb.vec3(\r\n pb.mul(this.incrementalGaussian.xy, this.incrementalGaussian.yz),\r\n this.incrementalGaussian.z\r\n );\r\n });\r\n\r\n if (that.logSpace) {\r\n scope.incrementalGaussian.x = pb.div(1, pb.mul(scope.sigma, Math.sqrt(2 * Math.PI)));\r\n scope.incrementalGaussian.y = pb.exp(pb.div(-0.5, pb.mul(scope.sigma, scope.sigma)));\r\n scope.incrementalGaussian.z = pb.mul(scope.incrementalGaussian.y, scope.incrementalGaussian.y);\r\n scope.momentSum = pb.float(0);\r\n scope.$if(pb.greaterThan(scope.coverage0, 0.000001), function () {\r\n this.momentSum = pb.add(\r\n this.momentSum,\r\n pb.mul(\r\n this.incrementalGaussian.x,\r\n this.coverage0,\r\n pb.exp(pb.min(87, pb.sub(this.logValue0, this.maxLogValue)))\r\n )\r\n );\r\n });\r\n scope.incrementalGaussian = pb.vec3(\r\n pb.mul(scope.incrementalGaussian.xy, scope.incrementalGaussian.yz),\r\n scope.incrementalGaussian.z\r\n );\r\n scope.$for(pb.float('i'), 1, scope.numBlurPixelsPerSide, function () {\r\n this.$l.blurOffset = pb.mul(this.blurMultiplyVec, this.blurSize, this.i);\r\n this.$l.d1 = that.readTexel(\r\n scope,\r\n type,\r\n srcTex,\r\n pb.sub(srcUV, this.blurOffset),\r\n srcLayer,\r\n sampleType\r\n );\r\n this.$l.d2 = that.readTexel(\r\n scope,\r\n type,\r\n srcTex,\r\n pb.add(srcUV, this.blurOffset),\r\n srcLayer,\r\n sampleType\r\n );\r\n this.$l.coverage1 = pb.clamp(this.d1.y, 0, 1);\r\n this.$l.coverage2 = pb.clamp(this.d2.y, 0, 1);\r\n this.$l.logValue1 = that._phase === 'horizonal' ? pb.mul(this.d1.x, this.multiplier) : this.d1.x;\r\n this.$l.logValue2 = that._phase === 'horizonal' ? pb.mul(this.d2.x, this.multiplier) : this.d2.x;\r\n this.$if(pb.greaterThan(this.coverage1, 0.000001), function () {\r\n this.momentSum = pb.add(\r\n this.momentSum,\r\n pb.mul(\r\n this.incrementalGaussian.x,\r\n this.coverage1,\r\n pb.exp(pb.min(87, pb.sub(this.logValue1, this.maxLogValue)))\r\n )\r\n );\r\n });\r\n this.$if(pb.greaterThan(this.coverage2, 0.000001), function () {\r\n this.momentSum = pb.add(\r\n this.momentSum,\r\n pb.mul(\r\n this.incrementalGaussian.x,\r\n this.coverage2,\r\n pb.exp(pb.min(87, pb.sub(this.logValue2, this.maxLogValue)))\r\n )\r\n );\r\n });\r\n this.incrementalGaussian = pb.vec3(\r\n pb.mul(this.incrementalGaussian.xy, this.incrementalGaussian.yz),\r\n this.incrementalGaussian.z\r\n );\r\n });\r\n scope.$l.moment = pb.float(0);\r\n scope.$if(pb.greaterThan(scope.coverageSum, 0.000001), function () {\r\n this.moment = pb.add(this.maxLogValue, pb.log(pb.div(this.momentSum, this.coverageSum)));\r\n });\r\n return pb.vec4(scope.moment, pb.div(scope.coverageSum, scope.coefficientSum), 0, 1);\r\n } else {\r\n scope.$l.depth = pb.float(1);\r\n scope.$if(pb.greaterThan(scope.coverageSum, 0.000001), function () {\r\n this.depth = pb.div(this.depthSum, this.coverageSum);\r\n });\r\n return pb.vec4(scope.depth, pb.div(scope.coverageSum, scope.coefficientSum), 0, 1);\r\n }\r\n }\r\n writeTexel(scope: PBInsideFunctionScope, type: BlitType, srcUV: PBShaderExp, texel: PBShaderExp) {\r\n const outTexel = super.writeTexel(scope, type, srcUV, texel);\r\n if (this.packFloat) {\r\n return encodeNormalizedFloatToRGBA(scope, outTexel.r);\r\n } else {\r\n return outTexel;\r\n }\r\n }\r\n protected calcHash() {\r\n return `${super.calcHash()}-${Number(this.packFloat)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ESM extends ShadowImpl {\r\n /** @internal */\r\n protected _depthScale: number;\r\n /** @internal */\r\n protected _blur: boolean;\r\n /** @internal */\r\n protected _kernelSize: number;\r\n /** @internal */\r\n protected _blurSize: number;\r\n /** @internal */\r\n protected _logSpace: boolean;\r\n /** @internal */\r\n protected _blitterH: BlurBlitter;\r\n /** @internal */\r\n protected _blitterV: BlurBlitter;\r\n /** @internal */\r\n protected _mipmap: boolean;\r\n constructor(kernelSize?: number, blurSize?: number, depthScale?: number) {\r\n super();\r\n this._blur = true;\r\n this._depthScale = depthScale ?? 500;\r\n this._kernelSize = kernelSize ?? 5;\r\n this._blurSize = blurSize ?? 1;\r\n this._logSpace = true;\r\n this._mipmap = true;\r\n this._blitterH = new BlurBlitter('horizonal', this._kernelSize, 4, 1 / 1024);\r\n this._blitterV = new BlurBlitter('vertical', this._kernelSize, 4, 1 / 1024);\r\n }\r\n resourceDirty() {\r\n return this._resourceDirty;\r\n }\r\n get blur() {\r\n return this._blur;\r\n }\r\n set blur(val) {\r\n if (this._blur !== !!val) {\r\n this._blur = !!val;\r\n this._resourceDirty = true;\r\n }\r\n }\r\n get mipmap() {\r\n return this._mipmap;\r\n }\r\n set mipmap(b) {\r\n if (this._mipmap !== !!b) {\r\n this._mipmap = !!b;\r\n if (this._blur) {\r\n this._resourceDirty = true;\r\n }\r\n }\r\n }\r\n get kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n this._kernelSize = val;\r\n }\r\n get blurSize() {\r\n return this._blurSize;\r\n }\r\n set blurSize(val) {\r\n this._blurSize = val;\r\n }\r\n get logSpace() {\r\n return this._logSpace;\r\n }\r\n set logSpace(val) {\r\n this._logSpace = !!val;\r\n }\r\n getType() {\r\n return 'esm' as const;\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams) {\r\n return this._blur ? Math.ceil(((this._kernelSize + 1) / 2) * this._blurSize) : 0;\r\n }\r\n getShadowMapClearColor(shadowMapParams: ShadowMapParams) {\r\n const colorAttachment = shadowMapParams.shadowMapFramebuffer?.getColorAttachments()[0];\r\n return colorAttachment\r\n ? colorAttachment.format === 'rgba8unorm'\r\n ? new Vector4(0, 0, 0, 1)\r\n : new Vector4(1, 0, 0, 1)\r\n : null;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams) {\r\n const implData = shadowMapParams.implData as ESMImplData;\r\n return (\r\n implData\r\n ? implData.blurFramebuffer2!.getColorAttachments()[0]\r\n : shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0]\r\n ) as ShadowMapType;\r\n }\r\n /** @internal */\r\n fetchTemporalFramebuffer(\r\n autoRelease: boolean,\r\n lightType: number,\r\n numCascades: number,\r\n width: number,\r\n height: number,\r\n colorFormat: TextureFormat,\r\n depthFormat: Nullable<TextureFormat>,\r\n mipmapping?: boolean\r\n ) {\r\n const device = getDevice();\r\n const useTextureArray = numCascades > 1 && device.type !== 'webgl';\r\n const colorAttachments = colorFormat\r\n ? useTextureArray\r\n ? [\r\n device.pool.fetchTemporalTexture2DArray(\r\n false,\r\n colorFormat,\r\n width,\r\n height,\r\n numCascades,\r\n mipmapping\r\n )\r\n ]\r\n : lightType === LIGHT_TYPE_POINT\r\n ? [device.pool.fetchTemporalTextureCube(false, colorFormat, width, mipmapping)]\r\n : [device.pool.fetchTemporalTexture2D(false, colorFormat, width, height, mipmapping)]\r\n : null;\r\n const depthAttachment = depthFormat\r\n ? useTextureArray\r\n ? device.pool.fetchTemporalTexture2DArray(false, depthFormat, width, height, numCascades, false)\r\n : device.type !== 'webgl' && lightType === LIGHT_TYPE_POINT\r\n ? device.pool.fetchTemporalTextureCube(false, depthFormat, width, false)\r\n : device.pool.fetchTemporalTexture2D(false, depthFormat, width, height, false)\r\n : null;\r\n const fb = device.pool.createTemporalFramebuffer(autoRelease, colorAttachments!, depthAttachment);\r\n if (colorAttachments) {\r\n device.pool.releaseTexture(colorAttachments[0]);\r\n }\r\n if (depthAttachment) {\r\n device.pool.releaseTexture(depthAttachment);\r\n }\r\n return fb;\r\n }\r\n doUpdateResources(shadowMapParams: ShadowMapParams) {\r\n const implData: ESMImplData = {\r\n blurFramebuffer: null,\r\n blurFramebuffer2: null\r\n };\r\n shadowMapParams.implData = implData;\r\n const colorFormat = this.getShadowMapColorFormat(shadowMapParams)!;\r\n const shadowMapWidth = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].width;\r\n const shadowMapHeight = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].height;\r\n if (this._blur) {\r\n shadowMapParams.implData = {\r\n blurFramebuffer: this.fetchTemporalFramebuffer(\r\n true,\r\n shadowMapParams.lightType,\r\n shadowMapParams.numShadowCascades,\r\n shadowMapWidth,\r\n shadowMapHeight,\r\n colorFormat,\r\n null,\r\n false\r\n ),\r\n blurFramebuffer2: this.fetchTemporalFramebuffer(\r\n true,\r\n shadowMapParams.lightType,\r\n shadowMapParams.numShadowCascades,\r\n shadowMapWidth,\r\n shadowMapHeight,\r\n colorFormat,\r\n null,\r\n true\r\n )\r\n };\r\n } else {\r\n shadowMapParams.implData = null;\r\n }\r\n shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);\r\n shadowMapParams.shadowMapSampler = shadowMapParams.shadowMap?.getDefaultSampler(false) ?? null;\r\n }\r\n postRenderShadowMap(shadowMapParams: ShadowMapParams) {\r\n if (shadowMapParams.implData) {\r\n const implData = shadowMapParams.implData as ESMImplData;\r\n const colorAttachment = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0];\r\n const packFloat = colorAttachment.format === 'rgba8unorm';\r\n const logSpace = this._logSpace && !packFloat;\r\n this._blitterH.blurSize = this._blurSize / colorAttachment.width;\r\n this._blitterH.kernelSize = this._kernelSize;\r\n this._blitterH.logSpace = logSpace;\r\n this._blitterH.logSpaceMultiplier = this._depthScale;\r\n this._blitterH.packFloat = packFloat;\r\n this._blitterV.blurSize = this._blurSize / colorAttachment.height;\r\n this._blitterV.kernelSize = this._kernelSize;\r\n this._blitterV.logSpace = logSpace;\r\n this._blitterV.logSpaceMultiplier = this._depthScale;\r\n this._blitterV.packFloat = packFloat;\r\n this._blitterH.blit(colorAttachment as any, implData.blurFramebuffer!);\r\n this._blitterV.blit(\r\n implData.blurFramebuffer!.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer2!\r\n );\r\n }\r\n }\r\n getDepthScale() {\r\n return this._depthScale;\r\n }\r\n setDepthScale(val: number) {\r\n this._depthScale = val;\r\n }\r\n getShaderHash() {\r\n return `${this._blur ? 1 : 0}${this._logSpace ? 1 : 0}`;\r\n }\r\n getShadowMapColorFormat(_shadowMapParams: ShadowMapParams) {\r\n const device = getDevice();\r\n return device.getDeviceCaps().textureCaps.supportFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearFloatTexture\r\n ? device.type === 'webgl'\r\n ? 'rgba32f'\r\n : 'rg32f'\r\n : device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearHalfFloatTexture\r\n ? device.type === 'webgl'\r\n ? 'rgba16f'\r\n : 'rg16f'\r\n : 'rgba8unorm';\r\n }\r\n getShadowMapDepthFormat(_shadowMapParams: ShadowMapParams) {\r\n return 'd24s8' as const;\r\n }\r\n computeShadowMapDepth(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const depth = computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap!.format);\r\n return shadowMapParams.shadowMap!.format === 'rgba8unorm' ? depth : pb.vec4(depth.x, 1, 0, 1);\r\n }\r\n computeShadowCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n ) {\r\n const funcNameComputeShadowCSM = 'lib_computeShadowCSM';\r\n const pb = scope.$builder;\r\n const logSpace = this._blur && this._logSpace && shadowMapParams.shadowMap!.format !== 'rgba8unorm';\r\n pb.func(\r\n funcNameComputeShadowCSM,\r\n [pb.vec4('shadowVertex'), pb.float('NdotL'), pb.int('split')],\r\n function () {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);\r\n this.shadow = filterShadowESM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n logSpace,\r\n this.shadowCoord,\r\n this.split,\r\n this.shadowBias\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split) as PBShaderExp;\r\n }\r\n computeShadow(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp\r\n ) {\r\n const funcNameComputeShadow = 'lib_computeShadow';\r\n const pb = scope.$builder;\r\n const logSpace = this._blur && this._logSpace && shadowMapParams.shadowMap!.format !== 'rgba8unorm';\r\n pb.func(funcNameComputeShadow, [pb.vec4('shadowVertex'), pb.float('NdotL')], function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {\r\n this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);\r\n this.$l.distance = pb.div(\r\n pb.length(this.dir),\r\n ShaderHelper.getLightPositionAndRangeForShadow(this).w\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.distance,\r\n this.NdotL,\r\n true\r\n );\r\n this.$return(\r\n filterShadowESM(\r\n this,\r\n LIGHT_TYPE_POINT,\r\n shadowMapParams.shadowMap!.format,\r\n logSpace,\r\n this.dir,\r\n undefined,\r\n this.shadowBias\r\n )\r\n );\r\n } else {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n false\r\n );\r\n this.shadow = filterShadowESM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n logSpace,\r\n this.shadowCoord,\r\n undefined,\r\n this.shadowBias\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL) as PBShaderExp;\r\n }\r\n useNativeShadowMap(_shadowMapParams: ShadowMapParams) {\r\n return false;\r\n }\r\n}\r\n"],"names":["BlurBlitter","GaussianBlurBlitter","_packFloat","packFloat","b","invalidateHash","readTexel","scope","type","srcTex","srcUV","srcLayer","sampleType","pb","$builder","texel","vec4","decodeNormalizedFloatFromRGBA","filter","that","incrementalGaussian","vec3","x","div","mul","sigma","Math","sqrt","PI","y","exp","z","coefficientSum","float","coverageSum","d0","coverage0","clamp","add","logSpace","maxLogValue","logValue0","_phase","multiplier","$if","greaterThan","depthSum","xy","yz","$for","numBlurPixelsPerSide","$l","blurOffset","blurMultiplyVec","blurSize","i","d1","sub","d2","coverage1","coverage2","logValue1","logValue2","max","momentSum","min","moment","log","depth","writeTexel","outTexel","encodeNormalizedFloatToRGBA","r","calcHash","Number","ESM","ShadowImpl","kernelSize","depthScale","_blur","_depthScale","_kernelSize","_blurSize","_logSpace","_mipmap","_blitterH","_blitterV","resourceDirty","_resourceDirty","blur","val","mipmap","getType","getShadowMapBorder","_shadowMapParams","ceil","getShadowMapClearColor","shadowMapParams","colorAttachment","shadowMapFramebuffer","getColorAttachments","format","Vector4","getShadowMap","implData","blurFramebuffer2","fetchTemporalFramebuffer","autoRelease","lightType","numCascades","width","height","colorFormat","depthFormat","mipmapping","device","getDevice","useTextureArray","colorAttachments","pool","fetchTemporalTexture2DArray","LIGHT_TYPE_POINT","fetchTemporalTextureCube","fetchTemporalTexture2D","depthAttachment","fb","createTemporalFramebuffer","releaseTexture","doUpdateResources","blurFramebuffer","getShadowMapColorFormat","shadowMapWidth","shadowMapHeight","numShadowCascades","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","logSpaceMultiplier","blit","getDepthScale","setDepthScale","getShaderHash","getDeviceCaps","textureCaps","supportFloatColorBuffer","supportLinearFloatTexture","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","getShadowMapDepthFormat","computeShadowMapDepth","worldPos","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","func","int","shadowCoord","w","inShadow","all","bvec2","bvec4","greaterThanEqual","lessThanEqual","shadow","shadowBias","computeShadowBiasCSM","filterShadowESM","$return","getGlobalScope","computeShadow","funcNameComputeShadow","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","distance","length","computeShadowBias","undefined","useNativeShadowMap"],"mappings":"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"}
@@ -58,6 +58,7 @@ import '../../scene/terrain-cm/grass.js';
58
58
  import '../../scene/raycast_visitor.js';
59
59
  import { AssetManager } from '../../asset/assetmanager.js';
60
60
  import '../../animation/skeleton.js';
61
+ import '../../animation/animationset.js';
61
62
  import '../../animation/eulerrotationtrack.js';
62
63
  import '../../animation/joint_dynamics/collision.js';
63
64
  import '../../animation/joint_dynamics/solver.js';