@zephyr3d/editor 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{index-BZ1L8ggE.js → index-CO6yA4Rj.js} +313 -11
- package/dist/assistant/zephyr-types-index.json +13834 -11679
- package/dist/index.html +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_device.js +2 -2
- package/dist/modules/zephyr3d_device.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +2325 -515
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/device/dist/device.js +2 -2
- package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/assetmanager.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/asset/assetmanager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +87 -0
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/index.d.ts +158 -4
- package/dist/vendor/zephyr3d/scene/dist/index.js +3 -0
- package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/meshmaterial.js +8 -1
- package/dist/vendor/zephyr3d/scene/dist/material/meshmaterial.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js +6 -0
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/skin.js +263 -0
- package/dist/vendor/zephyr3d/scene/dist/material/skin.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/compositor.js +3 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/compositor.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/skinsss.js +194 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/skinsss.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js +26 -49
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/sss.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/sss.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/taa.js +2 -40
- package/dist/vendor/zephyr3d/scene/dist/posteffect/taa.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/abuffer_oit.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/abuffer_oit.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/drawable_mixin.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/drawable_mixin.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/fbm_wavegenerator.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/gerstner_wavegenerator.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/globalbindgroup_allocator.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js +4 -1
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/render_queue.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/render_queue.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/device_pool_allocator.js +12 -5
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js +78 -8
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/basesprite.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/basesprite.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/batchgroup.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/batchgroup.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/environment.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/environment.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/light.js +158 -154
- package/dist/vendor/zephyr3d/scene/dist/scene/light.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/mesh.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftext.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftext.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftextsprite.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/particlesys.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/particlesys.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/scene.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/scene.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grass.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grassmaterial.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/terrain-cm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/water.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/water.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shaders/shadow.js +617 -1
- package/dist/vendor/zephyr3d/scene/dist/shaders/shadow.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_opt.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_pd.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcss.js +182 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcss.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/shader.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/shader.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadowmapper.js +183 -105
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/ssm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/ssm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/vsm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/vsm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/batch.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +122 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js +102 -21
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js +195 -3
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/text.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/water.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/values.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/values.js.map +1 -1
- package/electron/main.cjs +30 -6
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vsm.js","sources":["../../src/shadow/vsm.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n TextureFormat,\r\n PBShaderExp,\r\n PBInsideFunctionScope,\r\n PBGlobalScope,\r\n FrameBuffer\r\n} from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport type { BlitType } from '../blitter';\r\nimport { Blitter } from '../blitter';\r\nimport { computeShadowMapDepth, filterShadowVSM } from '../shaders/shadow';\r\nimport type { ShadowMapParams, ShadowMapType } from './shadowmapper';\r\nimport { decode2HalfFromRGBA, decodeNormalizedFloatFromRGBA, encode2HalfToRGBA } from '../shaders/misc';\r\nimport { LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT } from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\nimport { getDevice } from '../app/api';\r\nimport { Vector4, type Nullable } from '@zephyr3d/base';\r\n\r\ntype VSMImplData = {\r\n blurFramebuffer: FrameBuffer;\r\n blurFramebuffer2: FrameBuffer;\r\n};\r\n\r\nclass VSMBlitter extends Blitter {\r\n protected _phase: 'horizonal' | 'vertical';\r\n protected _packFloat: boolean;\r\n protected _blurSize: number;\r\n protected _kernelSize: number;\r\n constructor(phase: 'horizonal' | 'vertical', kernelSize: number, blurSize: number, packFloat: boolean) {\r\n super();\r\n this._phase = phase;\r\n this._blurSize = blurSize;\r\n this._kernelSize = kernelSize;\r\n this._packFloat = packFloat;\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 kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n if (val !== this._kernelSize) {\r\n this._kernelSize = val;\r\n this.invalidateHash();\r\n }\r\n }\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 setup(scope: PBGlobalScope, type: BlitType) {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind === 'fragment') {\r\n scope.blurSize = pb.float().uniform(0);\r\n scope.blurMultiplyVec =\r\n type === 'cube'\r\n ? this._phase === 'horizonal'\r\n ? pb.vec3(1, 0, 0)\r\n : pb.vec3(0, 1, 0)\r\n : this._phase === 'horizonal'\r\n ? pb.vec2(1, 0)\r\n : pb.vec2(0, 1);\r\n scope.numBlurPixelsPerSide = pb.float((this._kernelSize + 1) / 2);\r\n scope.blurStep = pb.float(2 / (this._kernelSize - 1));\r\n }\r\n }\r\n setUniforms(bindGroup: BindGroup) {\r\n bindGroup.setValue('blurSize', this._blurSize);\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 if (this._phase === 'horizonal') {\r\n return pb.vec4(decodeNormalizedFloatFromRGBA(scope, texel));\r\n } else {\r\n return pb.vec4(decode2HalfFromRGBA(scope, texel), 0, 0);\r\n }\r\n } else {\r\n return texel;\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 encode2HalfToRGBA(scope, outTexel.x, outTexel.y);\r\n } else {\r\n return outTexel;\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: 'int' | 'float' | 'uint'\r\n ) {\r\n const that = this;\r\n const pb = scope.$builder;\r\n scope.d0 = that.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n if (that._packFloat) {\r\n scope.moment1 = scope.d0.x;\r\n scope.moment2 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.d0.x) : scope.d0.y;\r\n } else {\r\n scope.moment1 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.d0.z) : scope.d0.x;\r\n scope.moment2 = that._phase === 'horizonal' ? pb.mul(scope.d0.y, scope.d0.z) : scope.d0.y;\r\n scope.coverage = scope.d0.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.blurStep, this.i);\r\n this.d1 = that.readTexel(this, type, srcTex, pb.sub(srcUV, this.blurOffset), srcLayer, sampleType);\r\n this.d2 = that.readTexel(this, type, srcTex, pb.add(srcUV, this.blurOffset), srcLayer, sampleType);\r\n if (that._packFloat) {\r\n this.moment1 = pb.add(this.moment1, this.d1.x);\r\n this.moment1 = pb.add(this.moment1, this.d2.x);\r\n if (that._phase === 'horizonal') {\r\n this.moment2 = pb.add(this.moment2, pb.mul(this.d1.x, this.d1.x));\r\n this.moment2 = pb.add(this.moment2, pb.mul(this.d2.x, this.d2.x));\r\n } else {\r\n this.moment2 = pb.add(this.moment2, this.d1.y);\r\n this.moment2 = pb.add(this.moment2, this.d2.y);\r\n }\r\n } else {\r\n this.moment1 = pb.add(\r\n this.moment1,\r\n that._phase === 'horizonal' ? pb.mul(this.d1.x, this.d1.z) : this.d1.x\r\n );\r\n this.moment1 = pb.add(\r\n this.moment1,\r\n that._phase === 'horizonal' ? pb.mul(this.d2.x, this.d2.z) : this.d2.x\r\n );\r\n this.moment2 = pb.add(\r\n this.moment2,\r\n that._phase === 'horizonal' ? pb.mul(this.d1.y, this.d1.z) : this.d1.y\r\n );\r\n this.moment2 = pb.add(\r\n this.moment2,\r\n that._phase === 'horizonal' ? pb.mul(this.d2.y, this.d2.z) : this.d2.y\r\n );\r\n this.coverage = pb.add(this.coverage, this.d1.z);\r\n this.coverage = pb.add(this.coverage, this.d2.z);\r\n }\r\n });\r\n scope.moment1 = pb.div(scope.moment1, that._kernelSize);\r\n scope.moment2 = pb.div(scope.moment2, that._kernelSize);\r\n if (that._packFloat) {\r\n return pb.vec4(scope.moment1, scope.moment2, 0, 1);\r\n } else {\r\n scope.coverage = pb.div(scope.coverage, that._kernelSize);\r\n return pb.vec4(scope.moment1, scope.moment2, scope.coverage, 1);\r\n }\r\n }\r\n protected calcHash() {\r\n return `${this._phase}-${this._kernelSize}-${Number(this._packFloat)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class VSM extends ShadowImpl {\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 _blitterH: VSMBlitter;\r\n /** @internal */\r\n protected _blitterV: VSMBlitter;\r\n /** @internal */\r\n protected _mipmap: boolean;\r\n /** @internal */\r\n protected _darkness: number;\r\n constructor(kernelSize?: number, blurSize?: number, darkness?: number) {\r\n super();\r\n this._blur = true;\r\n this._kernelSize = kernelSize ?? 5;\r\n this._blurSize = blurSize ?? 1;\r\n this._darkness = darkness ?? 0;\r\n this._mipmap = true;\r\n this._blitterH = new VSMBlitter('horizonal', this._kernelSize, 1 / 1024, false);\r\n this._blitterV = new VSMBlitter('vertical', this._kernelSize, 1 / 1024, false);\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 getDepthScale() {\r\n return this._darkness;\r\n }\r\n setDepthScale(val: number) {\r\n this._darkness = val;\r\n }\r\n getType() {\r\n return 'vsm' as const;\r\n }\r\n getShadowMapClearColor(_shadowMapParams: ShadowMapParams) {\r\n return new Vector4(0, 0, 0, 1);\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams) {\r\n return this._blur ? Math.ceil(this._blurSize) + 1 : 0;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams) {\r\n const implData = shadowMapParams.implData as VSMImplData;\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 colorFormat = this.getShadowMapColorFormat(shadowMapParams)!;\r\n //const target = shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0].target;\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 this._mipmap\r\n )\r\n };\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 (this._blur) {\r\n const implData = shadowMapParams.implData as VSMImplData;\r\n this._blitterH.blurSize = this._blurSize / shadowMapParams.shadowMap!.width;\r\n this._blitterH.kernelSize = this._kernelSize;\r\n this._blitterH.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterV.blurSize = this._blurSize / shadowMapParams.shadowMap!.height;\r\n this._blitterV.kernelSize = this._kernelSize;\r\n this._blitterV.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterH.blit(\r\n shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer\r\n );\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 getShaderHash() {\r\n return '';\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 ? 'rgba32f'\r\n : device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearHalfFloatTexture\r\n ? 'rgba16f'\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'\r\n ? depth\r\n : pb.vec4(depth.x, pb.mul(depth.x, depth.x), 1, 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 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.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord,\r\n this.split\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 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.$l.coord = pb.vec4(this.dir, pb.sub(this.distance, this.shadowBias));\r\n this.$return(\r\n filterShadowVSM(this, shadowMapParams.lightType, shadowMapParams.shadowMap!.format, this.coord)\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 if (shadowMapParams.lightType === LIGHT_TYPE_SPOT) {\r\n this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;\r\n this.shadowCoord.z = ShaderHelper.nonLinearDepthToLinearNormalized(\r\n this,\r\n this.shadowCoord.z,\r\n this.nearFar\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n true\r\n );\r\n } else {\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 }\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord\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":["VSMBlitter","Blitter","_phase","_packFloat","_blurSize","_kernelSize","phase","kernelSize","blurSize","packFloat","val","invalidateHash","b","setup","scope","type","pb","$builder","shaderKind","float","uniform","blurMultiplyVec","vec3","vec2","numBlurPixelsPerSide","blurStep","setUniforms","bindGroup","setValue","readTexel","srcTex","srcUV","srcLayer","sampleType","texel","vec4","decodeNormalizedFloatFromRGBA","decode2HalfFromRGBA","writeTexel","outTexel","encode2HalfToRGBA","x","y","filter","that","d0","moment1","moment2","mul","z","coverage","$for","$l","blurOffset","i","d1","sub","d2","add","div","calcHash","Number","VSM","ShadowImpl","darkness","_blur","_darkness","_mipmap","_blitterH","_blitterV","resourceDirty","_resourceDirty","blur","mipmap","getDepthScale","setDepthScale","getType","getShadowMapClearColor","_shadowMapParams","Vector4","getShadowMapBorder","Math","ceil","getShadowMap","shadowMapParams","implData","blurFramebuffer2","getColorAttachments","shadowMapFramebuffer","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","getShadowMapColorFormat","shadowMapWidth","shadowMapHeight","blurFramebuffer","numShadowCascades","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","format","blit","getShaderHash","getDeviceCaps","textureCaps","supportFloatColorBuffer","supportLinearFloatTexture","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","getShadowMapDepthFormat","computeShadowMapDepth","worldPos","depth","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","func","int","shadowCoord","w","inShadow","all","bvec2","bvec4","greaterThanEqual","lessThanEqual","shadow","$if","shadowBias","computeShadowBiasCSM","filterShadowVSM","$return","getGlobalScope","computeShadow","funcNameComputeShadow","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","distance","length","computeShadowBias","coord","LIGHT_TYPE_SPOT","nearFar","getShadowCameraParams","xy","nonLinearDepthToLinearNormalized","useNativeShadowMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vsm.js","sources":["../../src/shadow/vsm.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n TextureFormat,\r\n PBShaderExp,\r\n PBInsideFunctionScope,\r\n PBGlobalScope,\r\n FrameBuffer\r\n} from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport type { BlitType } from '../blitter';\r\nimport { Blitter } from '../blitter';\r\nimport { computeShadowMapDepth, filterShadowVSM } from '../shaders/shadow';\r\nimport type { ShadowMapParams, ShadowMapType } from './shadowmapper';\r\nimport { decode2HalfFromRGBA, decodeNormalizedFloatFromRGBA, encode2HalfToRGBA } from '../shaders/misc';\r\nimport { LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT } from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\nimport { getDevice } from '../app/api';\r\nimport { Vector4, type Nullable } from '@zephyr3d/base';\r\n\r\ntype VSMImplData = {\r\n blurFramebuffer: FrameBuffer;\r\n blurFramebuffer2: FrameBuffer;\r\n};\r\n\r\nclass VSMBlitter extends Blitter {\r\n protected _phase: 'horizonal' | 'vertical';\r\n protected _packFloat: boolean;\r\n protected _blurSize: number;\r\n protected _kernelSize: number;\r\n constructor(phase: 'horizonal' | 'vertical', kernelSize: number, blurSize: number, packFloat: boolean) {\r\n super();\r\n this._phase = phase;\r\n this._blurSize = blurSize;\r\n this._kernelSize = kernelSize;\r\n this._packFloat = packFloat;\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 kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n if (val !== this._kernelSize) {\r\n this._kernelSize = val;\r\n this.invalidateHash();\r\n }\r\n }\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 setup(scope: PBGlobalScope, type: BlitType) {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind === 'fragment') {\r\n scope.blurSize = pb.float().uniform(0);\r\n scope.blurMultiplyVec =\r\n type === 'cube'\r\n ? this._phase === 'horizonal'\r\n ? pb.vec3(1, 0, 0)\r\n : pb.vec3(0, 1, 0)\r\n : this._phase === 'horizonal'\r\n ? pb.vec2(1, 0)\r\n : pb.vec2(0, 1);\r\n scope.numBlurPixelsPerSide = pb.float((this._kernelSize + 1) / 2);\r\n scope.blurStep = pb.float(2 / (this._kernelSize - 1));\r\n }\r\n }\r\n setUniforms(bindGroup: BindGroup) {\r\n bindGroup.setValue('blurSize', this._blurSize);\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 if (this._phase === 'horizonal') {\r\n return pb.vec4(decodeNormalizedFloatFromRGBA(scope, texel));\r\n } else {\r\n return pb.vec4(decode2HalfFromRGBA(scope, texel), 0, 0);\r\n }\r\n } else {\r\n return texel;\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 encode2HalfToRGBA(scope, outTexel.x, outTexel.y);\r\n } else {\r\n return outTexel;\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: 'int' | 'float' | 'uint'\r\n ) {\r\n const that = this;\r\n const pb = scope.$builder;\r\n scope.d0 = that.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n if (that._packFloat) {\r\n scope.moment1 = scope.d0.x;\r\n scope.moment2 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.d0.x) : scope.d0.y;\r\n } else {\r\n scope.moment1 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.d0.z) : scope.d0.x;\r\n scope.moment2 = that._phase === 'horizonal' ? pb.mul(scope.d0.y, scope.d0.z) : scope.d0.y;\r\n scope.coverage = scope.d0.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.blurStep, this.i);\r\n this.d1 = that.readTexel(this, type, srcTex, pb.sub(srcUV, this.blurOffset), srcLayer, sampleType);\r\n this.d2 = that.readTexel(this, type, srcTex, pb.add(srcUV, this.blurOffset), srcLayer, sampleType);\r\n if (that._packFloat) {\r\n this.moment1 = pb.add(this.moment1, this.d1.x);\r\n this.moment1 = pb.add(this.moment1, this.d2.x);\r\n if (that._phase === 'horizonal') {\r\n this.moment2 = pb.add(this.moment2, pb.mul(this.d1.x, this.d1.x));\r\n this.moment2 = pb.add(this.moment2, pb.mul(this.d2.x, this.d2.x));\r\n } else {\r\n this.moment2 = pb.add(this.moment2, this.d1.y);\r\n this.moment2 = pb.add(this.moment2, this.d2.y);\r\n }\r\n } else {\r\n this.moment1 = pb.add(\r\n this.moment1,\r\n that._phase === 'horizonal' ? pb.mul(this.d1.x, this.d1.z) : this.d1.x\r\n );\r\n this.moment1 = pb.add(\r\n this.moment1,\r\n that._phase === 'horizonal' ? pb.mul(this.d2.x, this.d2.z) : this.d2.x\r\n );\r\n this.moment2 = pb.add(\r\n this.moment2,\r\n that._phase === 'horizonal' ? pb.mul(this.d1.y, this.d1.z) : this.d1.y\r\n );\r\n this.moment2 = pb.add(\r\n this.moment2,\r\n that._phase === 'horizonal' ? pb.mul(this.d2.y, this.d2.z) : this.d2.y\r\n );\r\n this.coverage = pb.add(this.coverage, this.d1.z);\r\n this.coverage = pb.add(this.coverage, this.d2.z);\r\n }\r\n });\r\n scope.moment1 = pb.div(scope.moment1, that._kernelSize);\r\n scope.moment2 = pb.div(scope.moment2, that._kernelSize);\r\n if (that._packFloat) {\r\n return pb.vec4(scope.moment1, scope.moment2, 0, 1);\r\n } else {\r\n scope.coverage = pb.div(scope.coverage, that._kernelSize);\r\n return pb.vec4(scope.moment1, scope.moment2, scope.coverage, 1);\r\n }\r\n }\r\n protected calcHash() {\r\n return `${this._phase}-${this._kernelSize}-${Number(this._packFloat)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class VSM extends ShadowImpl {\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 _blitterH: VSMBlitter;\r\n /** @internal */\r\n protected _blitterV: VSMBlitter;\r\n /** @internal */\r\n protected _mipmap: boolean;\r\n /** @internal */\r\n protected _darkness: number;\r\n constructor(kernelSize?: number, blurSize?: number, darkness?: number) {\r\n super();\r\n this._blur = true;\r\n this._kernelSize = kernelSize ?? 5;\r\n this._blurSize = blurSize ?? 1;\r\n this._darkness = darkness ?? 0;\r\n this._mipmap = true;\r\n this._blitterH = new VSMBlitter('horizonal', this._kernelSize, 1 / 1024, false);\r\n this._blitterV = new VSMBlitter('vertical', this._kernelSize, 1 / 1024, false);\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 getDepthScale() {\r\n return this._darkness;\r\n }\r\n setDepthScale(val: number) {\r\n this._darkness = val;\r\n }\r\n getType() {\r\n return 'vsm' as const;\r\n }\r\n getShadowMapClearColor(_shadowMapParams: ShadowMapParams) {\r\n return new Vector4(0, 0, 0, 1);\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams) {\r\n return this._blur ? Math.ceil(this._blurSize) + 1 : 0;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams) {\r\n const implData = shadowMapParams.implData as VSMImplData;\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 colorFormat = this.getShadowMapColorFormat(shadowMapParams)!;\r\n //const target = shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0].target;\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 this._mipmap\r\n )\r\n };\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 (this._blur) {\r\n const implData = shadowMapParams.implData as VSMImplData;\r\n this._blitterH.blurSize = this._blurSize / shadowMapParams.shadowMap!.width;\r\n this._blitterH.kernelSize = this._kernelSize;\r\n this._blitterH.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterV.blurSize = this._blurSize / shadowMapParams.shadowMap!.height;\r\n this._blitterV.kernelSize = this._kernelSize;\r\n this._blitterV.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterH.blit(\r\n shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer\r\n );\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 getShaderHash() {\r\n return '';\r\n }\r\n getParams() {}\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 ? 'rgba32f'\r\n : device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearHalfFloatTexture\r\n ? 'rgba16f'\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'\r\n ? depth\r\n : pb.vec4(depth.x, pb.mul(depth.x, depth.x), 1, 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 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.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord,\r\n this.split\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 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.$l.coord = pb.vec4(this.dir, pb.sub(this.distance, this.shadowBias));\r\n this.$return(\r\n filterShadowVSM(this, shadowMapParams.lightType, shadowMapParams.shadowMap!.format, this.coord)\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 if (shadowMapParams.lightType === LIGHT_TYPE_SPOT) {\r\n this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;\r\n this.shadowCoord.z = ShaderHelper.nonLinearDepthToLinearNormalized(\r\n this,\r\n this.shadowCoord.z,\r\n this.nearFar\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n true\r\n );\r\n } else {\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 }\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord\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":["VSMBlitter","Blitter","_phase","_packFloat","_blurSize","_kernelSize","phase","kernelSize","blurSize","packFloat","val","invalidateHash","b","setup","scope","type","pb","$builder","shaderKind","float","uniform","blurMultiplyVec","vec3","vec2","numBlurPixelsPerSide","blurStep","setUniforms","bindGroup","setValue","readTexel","srcTex","srcUV","srcLayer","sampleType","texel","vec4","decodeNormalizedFloatFromRGBA","decode2HalfFromRGBA","writeTexel","outTexel","encode2HalfToRGBA","x","y","filter","that","d0","moment1","moment2","mul","z","coverage","$for","$l","blurOffset","i","d1","sub","d2","add","div","calcHash","Number","VSM","ShadowImpl","darkness","_blur","_darkness","_mipmap","_blitterH","_blitterV","resourceDirty","_resourceDirty","blur","mipmap","getDepthScale","setDepthScale","getType","getShadowMapClearColor","_shadowMapParams","Vector4","getShadowMapBorder","Math","ceil","getShadowMap","shadowMapParams","implData","blurFramebuffer2","getColorAttachments","shadowMapFramebuffer","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","getShadowMapColorFormat","shadowMapWidth","shadowMapHeight","blurFramebuffer","numShadowCascades","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","format","blit","getShaderHash","getParams","getDeviceCaps","textureCaps","supportFloatColorBuffer","supportLinearFloatTexture","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","getShadowMapDepthFormat","computeShadowMapDepth","worldPos","depth","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","func","int","shadowCoord","w","inShadow","all","bvec2","bvec4","greaterThanEqual","lessThanEqual","shadow","$if","shadowBias","computeShadowBiasCSM","filterShadowVSM","$return","getGlobalScope","computeShadow","funcNameComputeShadow","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","distance","length","computeShadowBias","coord","LIGHT_TYPE_SPOT","nearFar","getShadowCameraParams","xy","nonLinearDepthToLinearNormalized","useNativeShadowMap"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getSceneNodeClass, getGraphNodeClass } from './scene/node.js';
|
|
|
4
4
|
import { getBatchGroupClass } from './scene/batch.js';
|
|
5
5
|
import { getCameraClass, getPerspectiveCameraClass, getOrthoCameraClass } from './scene/camera.js';
|
|
6
6
|
import { getPunctualLightClass, getDirectionalLightClass, getSpotLightClass, getPointLightClass, getRectLightClass } from './scene/light.js';
|
|
7
|
-
import { getSubsurfaceProfileClass, getMeshMaterialClass, getPBRBluePrintMaterialClass, getSpriteBlueprintMaterialClass, getUnlitMaterialClass, getMToonMaterialClass, getLambertMaterialClass, getBlinnMaterialClass, getPBRMetallicRoughnessMaterialClass, getPBRSpecularGlossinessMaterialClass, getParticleMaterialClass, getSpriteMaterialClass, getStandardSpriteMaterialClass } from './scene/material.js';
|
|
7
|
+
import { getSubsurfaceProfileClass, getMeshMaterialClass, getPBRBluePrintMaterialClass, getSpriteBlueprintMaterialClass, getUnlitMaterialClass, getMToonMaterialClass, getLambertMaterialClass, getBlinnMaterialClass, getSkinMaterialClass, getPBRMetallicRoughnessMaterialClass, getPBRSpecularGlossinessMaterialClass, getParticleMaterialClass, getSpriteMaterialClass, getStandardSpriteMaterialClass } from './scene/material.js';
|
|
8
8
|
import { getMeshClass } from './scene/mesh.js';
|
|
9
9
|
import { getParticleNodeClass } from './scene/particle.js';
|
|
10
10
|
import { getBoxShapeClass, getBoxFrameShapeClass, getCapsuleShapeClass, getSphereShapeClass, getTorusShapeClass, getCylinderShapeClass, getPlaneShapeClass, getTetrahedronShapeClass } from './scene/primitive.js';
|
|
@@ -24,6 +24,7 @@ import '../../material/blinn.js';
|
|
|
24
24
|
import '../../material/unlit.js';
|
|
25
25
|
import '../../material/particle.js';
|
|
26
26
|
import '../../material/subsurfaceprofile.js';
|
|
27
|
+
import '../../material/skin.js';
|
|
27
28
|
import '../../material/meshmaterial.js';
|
|
28
29
|
import '../../material/grassmaterial.js';
|
|
29
30
|
import '../../material/terrain-cm.js';
|
|
@@ -216,6 +217,7 @@ const defaultValues = {
|
|
|
216
217
|
...getMToonMaterialClass(this),
|
|
217
218
|
...getLambertMaterialClass(this),
|
|
218
219
|
...getBlinnMaterialClass(this),
|
|
220
|
+
...getSkinMaterialClass(this),
|
|
219
221
|
...getPBRMetallicRoughnessMaterialClass(this),
|
|
220
222
|
...getPBRSpecularGlossinessMaterialClass(this),
|
|
221
223
|
...getParticleMaterialClass(this),
|