@onerjs/core 8.30.6 → 8.30.8
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/AudioV2/abstractAudio/audioEngineV2.d.ts +0 -4
- package/AudioV2/abstractAudio/audioEngineV2.js +0 -4
- package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.js +1 -1
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.js.map +1 -1
- package/AudioV2/audioParameter.d.ts +5 -1
- package/AudioV2/audioParameter.js +4 -0
- package/AudioV2/audioParameter.js.map +1 -1
- package/AudioV2/webAudio/components/webAudioParameterComponent.d.ts +0 -18
- package/AudioV2/webAudio/components/webAudioParameterComponent.js +7 -67
- package/AudioV2/webAudio/components/webAudioParameterComponent.js.map +1 -1
- package/Debug/debugLayer.d.ts +1 -1
- package/Debug/debugLayer.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +4 -0
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +3 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +13 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +4 -4
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +3 -4
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +2 -3
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +1 -2
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.d.ts +3 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js +11 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +4 -0
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js +7 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +2 -1
- package/FrameGraph/frameGraphRenderContext.js +22 -3
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.js +2 -1
- package/Materials/PBR/openpbrMaterial.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.js +11 -11
- package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +8 -1
- package/Misc/copyTextureToTexture.js +16 -2
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +3 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js +7 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.d.ts +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +2 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.d.ts +10 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +50 -17
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/emitters.functions.d.ts +6 -0
- package/Particles/Node/Blocks/Emitters/emitters.functions.js +13 -0
- package/Particles/Node/Blocks/Emitters/emitters.functions.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.d.ts +2 -2
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +5 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.d.ts +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +3 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.d.ts +10 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +45 -13
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleInputBlock.js +1 -0
- package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.js +10 -10
- package/Particles/Node/Blocks/particleRandomBlock.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.d.ts +4 -0
- package/Particles/Node/Blocks/systemBlock.js +9 -0
- package/Particles/Node/Blocks/systemBlock.js.map +1 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +3 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.js +2 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.js +5 -0
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.helper.js +40 -12
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +1 -1
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/thinParticleSystem.function.d.ts +2 -2
- package/Particles/thinParticleSystem.function.js +2 -2
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/prePassRenderer.js +4 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Shaders/copyTextureToTexture.fragment.js +2 -2
- package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
- package/ShadersWGSL/copyTextureToTexture.fragment.js +3 -3
- package/ShadersWGSL/copyTextureToTexture.fragment.js.map +1 -1
- package/XR/webXRSessionManager.js +4 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuCacheSampler.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuCacheSampler.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable babylonjs/available */\r\n/* eslint-disable jsdoc/require-jsdoc */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { Constants } from \"../constants\";\r\nimport type { TextureSampler } from \"../../Materials/Textures/textureSampler\";\r\nimport type { Nullable } from \"../../types\";\r\n\r\nconst FilterToBits = [\r\n 0 | (0 << 1) | (0 << 2), // not used\r\n 0 | (0 << 1) | (0 << 2), // TEXTURE_NEAREST_SAMPLINGMODE / TEXTURE_NEAREST_NEAREST\r\n 1 | (1 << 1) | (0 << 2), // TEXTURE_BILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR\r\n 1 | (1 << 1) | (1 << 2), // TEXTURE_TRILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR_MIPLINEAR\r\n 0 | (0 << 1) | (0 << 2), // TEXTURE_NEAREST_NEAREST_MIPNEAREST\r\n 0 | (1 << 1) | (0 << 2), // TEXTURE_NEAREST_LINEAR_MIPNEAREST\r\n 0 | (1 << 1) | (1 << 2), // TEXTURE_NEAREST_LINEAR_MIPLINEAR\r\n 0 | (1 << 1) | (0 << 2), // TEXTURE_NEAREST_LINEAR\r\n 0 | (0 << 1) | (1 << 2), // TEXTURE_NEAREST_NEAREST_MIPLINEAR\r\n 1 | (0 << 1) | (0 << 2), // TEXTURE_LINEAR_NEAREST_MIPNEAREST\r\n 1 | (0 << 1) | (1 << 2), // TEXTURE_LINEAR_NEAREST_MIPLINEAR\r\n 1 | (1 << 1) | (0 << 2), // TEXTURE_LINEAR_LINEAR_MIPNEAREST\r\n 1 | (0 << 1) | (0 << 2), // TEXTURE_LINEAR_NEAREST\r\n];\r\n\r\n// subtract 0x01FF from the comparison function value before indexing this array!\r\nconst ComparisonFunctionToBits = [\r\n (0 << 3) | (0 << 4) | (0 << 5) | (0 << 6), // undefined\r\n (0 << 3) | (0 << 4) | (0 << 5) | (1 << 6), // NEVER\r\n (0 << 3) | (0 << 4) | (1 << 5) | (0 << 6), // LESS\r\n (0 << 3) | (0 << 4) | (1 << 5) | (1 << 6), // EQUAL\r\n (0 << 3) | (1 << 4) | (0 << 5) | (0 << 6), // LEQUAL\r\n (0 << 3) | (1 << 4) | (0 << 5) | (1 << 6), // GREATER\r\n (0 << 3) | (1 << 4) | (1 << 5) | (0 << 6), // NOTEQUAL\r\n (0 << 3) | (1 << 4) | (1 << 5) | (1 << 6), // GEQUAL\r\n (1 << 3) | (0 << 4) | (0 << 5) | (0 << 6), // ALWAYS\r\n];\r\n\r\nconst FilterNoMipToBits = [\r\n 0 << 7, // not used\r\n 1 << 7, // TEXTURE_NEAREST_SAMPLINGMODE / TEXTURE_NEAREST_NEAREST\r\n 1 << 7, // TEXTURE_BILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR\r\n 0 << 7, // TEXTURE_TRILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR_MIPLINEAR\r\n 0 << 7, // TEXTURE_NEAREST_NEAREST_MIPNEAREST\r\n 0 << 7, // TEXTURE_NEAREST_LINEAR_MIPNEAREST\r\n 0 << 7, // TEXTURE_NEAREST_LINEAR_MIPLINEAR\r\n 1 << 7, // TEXTURE_NEAREST_LINEAR\r\n 0 << 7, // TEXTURE_NEAREST_NEAREST_MIPLINEAR\r\n 0 << 7, // TEXTURE_LINEAR_NEAREST_MIPNEAREST\r\n 0 << 7, // TEXTURE_LINEAR_NEAREST_MIPLINEAR\r\n 0 << 7, // TEXTURE_LINEAR_LINEAR_MIPNEAREST\r\n 1 << 7, // TEXTURE_LINEAR_NEAREST\r\n];\r\n\r\n/** @internal */\r\nexport class WebGPUCacheSampler {\r\n private _samplers: { [hash: number]: GPUSampler } = {};\r\n private _device: GPUDevice;\r\n\r\n public disabled: boolean;\r\n\r\n constructor(device: GPUDevice) {\r\n this._device = device;\r\n this.disabled = false;\r\n }\r\n\r\n public static GetSamplerHashCode(sampler: TextureSampler): number {\r\n // The WebGPU spec currently only allows values 1 and 4 for anisotropy\r\n const anisotropy = sampler._cachedAnisotropicFilteringLevel ? sampler._cachedAnisotropicFilteringLevel : 1;\r\n const code =\r\n FilterToBits[sampler.samplingMode] +\r\n ComparisonFunctionToBits[(sampler._comparisonFunction || 0x0202) - 0x0200 + 1] +\r\n FilterNoMipToBits[sampler.samplingMode] + // handle the lodMinClamp = lodMaxClamp = 0 case when no filter used for mip mapping\r\n ((sampler._cachedWrapU ?? 1) << 8) +\r\n ((sampler._cachedWrapV ?? 1) << 10) +\r\n ((sampler._cachedWrapR ?? 1) << 12) +\r\n ((sampler.useMipMaps ? 1 : 0) << 14) + // need to factor this in because _getSamplerFilterDescriptor depends on samplingMode AND useMipMaps!\r\n (anisotropy << 15);\r\n\r\n return code;\r\n }\r\n\r\n private static _GetSamplerFilterDescriptor(\r\n sampler: TextureSampler,\r\n anisotropy: number\r\n ): {\r\n magFilter: GPUFilterMode;\r\n minFilter: GPUFilterMode;\r\n mipmapFilter: GPUFilterMode;\r\n lodMinClamp?: number;\r\n lodMaxClamp?: number;\r\n anisotropyEnabled?: boolean;\r\n } {\r\n let magFilter: GPUFilterMode, minFilter: GPUFilterMode, mipmapFilter: GPUFilterMode, lodMinClamp: number | undefined, lodMaxClamp: number | undefined;\r\n const useMipMaps = sampler.useMipMaps;\r\n switch (sampler.samplingMode) {\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\r\n case Constants.TEXTURE_TRILINEAR_SAMPLINGMODE:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_LINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n case Constants.TEXTURE_NEAREST_NEAREST:\r\n case Constants.TEXTURE_NEAREST_SAMPLINGMODE:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_LINEAR:\r\n case Constants.TEXTURE_BILINEAR_SAMPLINGMODE:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n // In WebGL, if sampling mode is TEXTURE_BILINEAR_SAMPLINGMODE and anisotropy is greater than 1, anisotropy is enabled for the sampler\r\n if (anisotropy > 1) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_NEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n default:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n }\r\n\r\n if (anisotropy > 1 && (lodMinClamp !== 0 || lodMaxClamp !== 0)) {\r\n return {\r\n magFilter: WebGPUConstants.FilterMode.Linear,\r\n minFilter: WebGPUConstants.FilterMode.Linear,\r\n mipmapFilter: WebGPUConstants.FilterMode.Linear,\r\n anisotropyEnabled: true,\r\n };\r\n }\r\n\r\n return {\r\n magFilter,\r\n minFilter,\r\n mipmapFilter,\r\n lodMinClamp,\r\n lodMaxClamp,\r\n };\r\n }\r\n\r\n private static _GetWrappingMode(mode: number): GPUAddressMode {\r\n switch (mode) {\r\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\r\n return WebGPUConstants.AddressMode.Repeat;\r\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\r\n return WebGPUConstants.AddressMode.ClampToEdge;\r\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\r\n return WebGPUConstants.AddressMode.MirrorRepeat;\r\n }\r\n return WebGPUConstants.AddressMode.Repeat;\r\n }\r\n\r\n private static _GetSamplerWrappingDescriptor(sampler: TextureSampler): {\r\n addressModeU: GPUAddressMode;\r\n addressModeV: GPUAddressMode;\r\n addressModeW: GPUAddressMode;\r\n } {\r\n return {\r\n addressModeU: this._GetWrappingMode(sampler._cachedWrapU!),\r\n addressModeV: this._GetWrappingMode(sampler._cachedWrapV!),\r\n addressModeW: this._GetWrappingMode(sampler._cachedWrapR!),\r\n };\r\n }\r\n\r\n private static _GetSamplerDescriptor(sampler: TextureSampler, label?: string): GPUSamplerDescriptor {\r\n // The check with Constants.TEXTURE_LINEAR_LINEAR is to be iso with the WebGL implementation\r\n let anisotropy =\r\n (sampler.useMipMaps || sampler.samplingMode === Constants.TEXTURE_LINEAR_LINEAR) && sampler._cachedAnisotropicFilteringLevel\r\n ? sampler._cachedAnisotropicFilteringLevel\r\n : 1;\r\n // To be iso with the WebGL implementation\r\n if (\r\n sampler.samplingMode !== Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST &&\r\n sampler.samplingMode !== Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR &&\r\n sampler.samplingMode !== Constants.TEXTURE_LINEAR_LINEAR\r\n ) {\r\n anisotropy = 1;\r\n }\r\n const filterDescriptor = this._GetSamplerFilterDescriptor(sampler, anisotropy);\r\n return {\r\n label,\r\n ...filterDescriptor,\r\n ...this._GetSamplerWrappingDescriptor(sampler),\r\n compare: sampler._comparisonFunction ? WebGPUCacheSampler.GetCompareFunction(sampler._comparisonFunction) : undefined,\r\n maxAnisotropy: filterDescriptor.anisotropyEnabled ? anisotropy : 1,\r\n };\r\n }\r\n\r\n public static GetCompareFunction(compareFunction: Nullable<number>): GPUCompareFunction {\r\n switch (compareFunction) {\r\n case Constants.ALWAYS:\r\n return WebGPUConstants.CompareFunction.Always;\r\n case Constants.EQUAL:\r\n return WebGPUConstants.CompareFunction.Equal;\r\n case Constants.GREATER:\r\n return WebGPUConstants.CompareFunction.Greater;\r\n case Constants.GEQUAL:\r\n return WebGPUConstants.CompareFunction.GreaterEqual;\r\n case Constants.LESS:\r\n return WebGPUConstants.CompareFunction.Less;\r\n case Constants.LEQUAL:\r\n return WebGPUConstants.CompareFunction.LessEqual;\r\n case Constants.NEVER:\r\n return WebGPUConstants.CompareFunction.Never;\r\n case Constants.NOTEQUAL:\r\n return WebGPUConstants.CompareFunction.NotEqual;\r\n default:\r\n return WebGPUConstants.CompareFunction.Less;\r\n }\r\n }\r\n\r\n public getSampler(sampler: TextureSampler, bypassCache = false, hash = 0, label?: string): GPUSampler {\r\n if (this.disabled) {\r\n return this._device.createSampler(WebGPUCacheSampler._GetSamplerDescriptor(sampler, label));\r\n }\r\n\r\n if (bypassCache) {\r\n hash = 0;\r\n } else if (hash === 0) {\r\n hash = WebGPUCacheSampler.GetSamplerHashCode(sampler);\r\n }\r\n\r\n let gpuSampler = bypassCache ? undefined : this._samplers[hash];\r\n if (!gpuSampler) {\r\n gpuSampler = this._device.createSampler(WebGPUCacheSampler._GetSamplerDescriptor(sampler, label));\r\n if (!bypassCache) {\r\n this._samplers[hash] = gpuSampler;\r\n }\r\n }\r\n\r\n return gpuSampler;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webgpuCacheSampler.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuCacheSampler.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable babylonjs/available */\r\n/* eslint-disable jsdoc/require-jsdoc */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { Constants } from \"../constants\";\r\nimport type { TextureSampler } from \"../../Materials/Textures/textureSampler\";\r\nimport type { Nullable } from \"../../types\";\r\n\r\n/**\r\n * Note: we don't make a difference between mipmaps enabled or not when computing these bits (so, TEXTURE_NEAREST_NEAREST and TEXTURE_NEAREST_NEAREST_MIPNEAREST have the same bits, for example).\r\n * There's another bit in the hash code for that (see FilterNoMipToBits).\r\n */\r\nconst FilterToBits = [\r\n 0 | (0 << 1) | (0 << 2), // not used\r\n 0 | (0 << 1) | (0 << 2), // TEXTURE_NEAREST_SAMPLINGMODE / TEXTURE_NEAREST_NEAREST\r\n 1 | (1 << 1) | (0 << 2), // TEXTURE_BILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR\r\n 1 | (1 << 1) | (1 << 2), // TEXTURE_TRILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR_MIPLINEAR\r\n 0 | (0 << 1) | (0 << 2), // TEXTURE_NEAREST_NEAREST_MIPNEAREST\r\n 0 | (1 << 1) | (0 << 2), // TEXTURE_NEAREST_LINEAR_MIPNEAREST\r\n 0 | (1 << 1) | (1 << 2), // TEXTURE_NEAREST_LINEAR_MIPLINEAR\r\n 0 | (1 << 1) | (0 << 2), // TEXTURE_NEAREST_LINEAR\r\n 0 | (0 << 1) | (1 << 2), // TEXTURE_NEAREST_NEAREST_MIPLINEAR\r\n 1 | (0 << 1) | (0 << 2), // TEXTURE_LINEAR_NEAREST_MIPNEAREST\r\n 1 | (0 << 1) | (1 << 2), // TEXTURE_LINEAR_NEAREST_MIPLINEAR\r\n 1 | (1 << 1) | (0 << 2), // TEXTURE_LINEAR_LINEAR_MIPNEAREST\r\n 1 | (0 << 1) | (0 << 2), // TEXTURE_LINEAR_NEAREST\r\n];\r\n\r\n// subtract 0x01FF from the comparison function value before indexing this array!\r\nconst ComparisonFunctionToBits = [\r\n (0 << 3) | (0 << 4) | (0 << 5) | (0 << 6), // undefined\r\n (0 << 3) | (0 << 4) | (0 << 5) | (1 << 6), // NEVER\r\n (0 << 3) | (0 << 4) | (1 << 5) | (0 << 6), // LESS\r\n (0 << 3) | (0 << 4) | (1 << 5) | (1 << 6), // EQUAL\r\n (0 << 3) | (1 << 4) | (0 << 5) | (0 << 6), // LEQUAL\r\n (0 << 3) | (1 << 4) | (0 << 5) | (1 << 6), // GREATER\r\n (0 << 3) | (1 << 4) | (1 << 5) | (0 << 6), // NOTEQUAL\r\n (0 << 3) | (1 << 4) | (1 << 5) | (1 << 6), // GEQUAL\r\n (1 << 3) | (0 << 4) | (0 << 5) | (0 << 6), // ALWAYS\r\n];\r\n\r\nconst FilterNoMipToBits = [\r\n 0 << 7, // not used\r\n 1 << 7, // TEXTURE_NEAREST_SAMPLINGMODE / TEXTURE_NEAREST_NEAREST\r\n 1 << 7, // TEXTURE_BILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR\r\n 0 << 7, // TEXTURE_TRILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR_MIPLINEAR\r\n 0 << 7, // TEXTURE_NEAREST_NEAREST_MIPNEAREST\r\n 0 << 7, // TEXTURE_NEAREST_LINEAR_MIPNEAREST\r\n 0 << 7, // TEXTURE_NEAREST_LINEAR_MIPLINEAR\r\n 1 << 7, // TEXTURE_NEAREST_LINEAR\r\n 0 << 7, // TEXTURE_NEAREST_NEAREST_MIPLINEAR\r\n 0 << 7, // TEXTURE_LINEAR_NEAREST_MIPNEAREST\r\n 0 << 7, // TEXTURE_LINEAR_NEAREST_MIPLINEAR\r\n 0 << 7, // TEXTURE_LINEAR_LINEAR_MIPNEAREST\r\n 1 << 7, // TEXTURE_LINEAR_NEAREST\r\n];\r\n\r\n/** @internal */\r\nexport class WebGPUCacheSampler {\r\n private _samplers: { [hash: number]: GPUSampler } = {};\r\n private _device: GPUDevice;\r\n\r\n public disabled: boolean;\r\n\r\n constructor(device: GPUDevice) {\r\n this._device = device;\r\n this.disabled = false;\r\n }\r\n\r\n public static GetSamplerHashCode(sampler: TextureSampler): number {\r\n // The WebGPU spec currently only allows values 1 and 4 for anisotropy\r\n const anisotropy = sampler._cachedAnisotropicFilteringLevel ? sampler._cachedAnisotropicFilteringLevel : 1;\r\n const code =\r\n FilterToBits[sampler.samplingMode] +\r\n ComparisonFunctionToBits[(sampler._comparisonFunction || 0x0202) - 0x0200 + 1] +\r\n FilterNoMipToBits[sampler.samplingMode] + // handle the lodMinClamp = lodMaxClamp = 0 case when no filter used for mip mapping\r\n ((sampler._cachedWrapU ?? 1) << 8) +\r\n ((sampler._cachedWrapV ?? 1) << 10) +\r\n ((sampler._cachedWrapR ?? 1) << 12) +\r\n ((sampler.useMipMaps ? 1 : 0) << 14) + // need to factor this in because _getSamplerFilterDescriptor depends on samplingMode AND useMipMaps!\r\n (anisotropy << 15);\r\n\r\n return code;\r\n }\r\n\r\n private static _GetSamplerFilterDescriptor(\r\n sampler: TextureSampler,\r\n anisotropy: number\r\n ): {\r\n magFilter: GPUFilterMode;\r\n minFilter: GPUFilterMode;\r\n mipmapFilter: GPUFilterMode;\r\n lodMinClamp?: number;\r\n lodMaxClamp?: number;\r\n anisotropyEnabled?: boolean;\r\n } {\r\n let magFilter: GPUFilterMode, minFilter: GPUFilterMode, mipmapFilter: GPUFilterMode, lodMinClamp: number | undefined, lodMaxClamp: number | undefined;\r\n const useMipMaps = sampler.useMipMaps;\r\n switch (sampler.samplingMode) {\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\r\n case Constants.TEXTURE_TRILINEAR_SAMPLINGMODE:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_NEAREST_LINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n case Constants.TEXTURE_NEAREST_NEAREST:\r\n case Constants.TEXTURE_NEAREST_SAMPLINGMODE:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n if (!useMipMaps) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_LINEAR:\r\n case Constants.TEXTURE_BILINEAR_SAMPLINGMODE:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Linear;\r\n // In WebGL, if sampling mode is TEXTURE_BILINEAR_SAMPLINGMODE and anisotropy is greater than 1, anisotropy is enabled for the sampler\r\n if (anisotropy > 1) {\r\n mipmapFilter = WebGPUConstants.FilterMode.Linear;\r\n } else {\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n }\r\n break;\r\n case Constants.TEXTURE_LINEAR_NEAREST:\r\n magFilter = WebGPUConstants.FilterMode.Linear;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n default:\r\n magFilter = WebGPUConstants.FilterMode.Nearest;\r\n minFilter = WebGPUConstants.FilterMode.Nearest;\r\n mipmapFilter = WebGPUConstants.FilterMode.Nearest;\r\n lodMinClamp = lodMaxClamp = 0;\r\n break;\r\n }\r\n\r\n if (anisotropy > 1 && (lodMinClamp !== 0 || lodMaxClamp !== 0)) {\r\n return {\r\n magFilter: WebGPUConstants.FilterMode.Linear,\r\n minFilter: WebGPUConstants.FilterMode.Linear,\r\n mipmapFilter: WebGPUConstants.FilterMode.Linear,\r\n anisotropyEnabled: true,\r\n };\r\n }\r\n\r\n return {\r\n magFilter,\r\n minFilter,\r\n mipmapFilter,\r\n lodMinClamp,\r\n lodMaxClamp,\r\n };\r\n }\r\n\r\n private static _GetWrappingMode(mode: number): GPUAddressMode {\r\n switch (mode) {\r\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\r\n return WebGPUConstants.AddressMode.Repeat;\r\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\r\n return WebGPUConstants.AddressMode.ClampToEdge;\r\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\r\n return WebGPUConstants.AddressMode.MirrorRepeat;\r\n }\r\n return WebGPUConstants.AddressMode.Repeat;\r\n }\r\n\r\n private static _GetSamplerWrappingDescriptor(sampler: TextureSampler): {\r\n addressModeU: GPUAddressMode;\r\n addressModeV: GPUAddressMode;\r\n addressModeW: GPUAddressMode;\r\n } {\r\n return {\r\n addressModeU: this._GetWrappingMode(sampler._cachedWrapU!),\r\n addressModeV: this._GetWrappingMode(sampler._cachedWrapV!),\r\n addressModeW: this._GetWrappingMode(sampler._cachedWrapR!),\r\n };\r\n }\r\n\r\n private static _GetSamplerDescriptor(sampler: TextureSampler, label?: string): GPUSamplerDescriptor {\r\n // The check with Constants.TEXTURE_LINEAR_LINEAR is to be iso with the WebGL implementation\r\n let anisotropy =\r\n (sampler.useMipMaps || sampler.samplingMode === Constants.TEXTURE_LINEAR_LINEAR) && sampler._cachedAnisotropicFilteringLevel\r\n ? sampler._cachedAnisotropicFilteringLevel\r\n : 1;\r\n // To be iso with the WebGL implementation\r\n if (\r\n sampler.samplingMode !== Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST &&\r\n sampler.samplingMode !== Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR &&\r\n sampler.samplingMode !== Constants.TEXTURE_LINEAR_LINEAR\r\n ) {\r\n anisotropy = 1;\r\n }\r\n const filterDescriptor = this._GetSamplerFilterDescriptor(sampler, anisotropy);\r\n return {\r\n label,\r\n ...filterDescriptor,\r\n ...this._GetSamplerWrappingDescriptor(sampler),\r\n compare: sampler._comparisonFunction ? WebGPUCacheSampler.GetCompareFunction(sampler._comparisonFunction) : undefined,\r\n maxAnisotropy: filterDescriptor.anisotropyEnabled ? anisotropy : 1,\r\n };\r\n }\r\n\r\n public static GetCompareFunction(compareFunction: Nullable<number>): GPUCompareFunction {\r\n switch (compareFunction) {\r\n case Constants.ALWAYS:\r\n return WebGPUConstants.CompareFunction.Always;\r\n case Constants.EQUAL:\r\n return WebGPUConstants.CompareFunction.Equal;\r\n case Constants.GREATER:\r\n return WebGPUConstants.CompareFunction.Greater;\r\n case Constants.GEQUAL:\r\n return WebGPUConstants.CompareFunction.GreaterEqual;\r\n case Constants.LESS:\r\n return WebGPUConstants.CompareFunction.Less;\r\n case Constants.LEQUAL:\r\n return WebGPUConstants.CompareFunction.LessEqual;\r\n case Constants.NEVER:\r\n return WebGPUConstants.CompareFunction.Never;\r\n case Constants.NOTEQUAL:\r\n return WebGPUConstants.CompareFunction.NotEqual;\r\n default:\r\n return WebGPUConstants.CompareFunction.Less;\r\n }\r\n }\r\n\r\n public getSampler(sampler: TextureSampler, bypassCache = false, hash = 0, label?: string): GPUSampler {\r\n if (this.disabled) {\r\n return this._device.createSampler(WebGPUCacheSampler._GetSamplerDescriptor(sampler, label));\r\n }\r\n\r\n if (bypassCache) {\r\n hash = 0;\r\n } else if (hash === 0) {\r\n hash = WebGPUCacheSampler.GetSamplerHashCode(sampler);\r\n }\r\n\r\n let gpuSampler = bypassCache ? undefined : this._samplers[hash];\r\n if (!gpuSampler) {\r\n gpuSampler = this._device.createSampler(WebGPUCacheSampler._GetSamplerDescriptor(sampler, label));\r\n if (!bypassCache) {\r\n this._samplers[hash] = gpuSampler;\r\n }\r\n }\r\n\r\n return gpuSampler;\r\n }\r\n}\r\n"]}
|
|
@@ -7,7 +7,7 @@ interface IPostProcessLike {
|
|
|
7
7
|
outputTexture: FrameGraphTextureHandle;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Base class for post process like blocks.
|
|
11
11
|
*/
|
|
12
12
|
export declare class NodeRenderGraphBasePostProcessBlock extends NodeRenderGraphBlock {
|
|
13
13
|
protected _frameGraphTask: IPostProcessLike & FrameGraphTask;
|
|
@@ -3,7 +3,7 @@ import { NodeRenderGraphBlock } from "../../nodeRenderGraphBlock.js";
|
|
|
3
3
|
import { NodeRenderGraphBlockConnectionPointTypes } from "../../Types/nodeRenderGraphTypes.js";
|
|
4
4
|
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Base class for post process like blocks.
|
|
7
7
|
*/
|
|
8
8
|
export class NodeRenderGraphBasePostProcessBlock extends NodeRenderGraphBlock {
|
|
9
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basePostProcessBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeRenderGraphConnectionPoint, Scene, NodeRenderGraphBuildState, FrameGraphTextureHandle, FrameGraph, FrameGraphTask } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\n\r\ninterface IPostProcessLike {\r\n sourceSamplingMode: number;\r\n sourceTexture?: FrameGraphTextureHandle;\r\n targetTexture?: FrameGraphTextureHandle;\r\n outputTexture: FrameGraphTextureHandle;\r\n}\r\n\r\n/**\r\n *
|
|
1
|
+
{"version":3,"file":"basePostProcessBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeRenderGraphConnectionPoint, Scene, NodeRenderGraphBuildState, FrameGraphTextureHandle, FrameGraph, FrameGraphTask } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\n\r\ninterface IPostProcessLike {\r\n sourceSamplingMode: number;\r\n sourceTexture?: FrameGraphTextureHandle;\r\n targetTexture?: FrameGraphTextureHandle;\r\n outputTexture: FrameGraphTextureHandle;\r\n}\r\n\r\n/**\r\n * Base class for post process like blocks.\r\n */\r\nexport class NodeRenderGraphBasePostProcessBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: IPostProcessLike & FrameGraphTask;\r\n\r\n /**\r\n * Create a new NodeRenderGraphBasePostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"source\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"target\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.source.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);\r\n this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAll);\r\n }\r\n\r\n protected _finalizeInputOutputRegistering() {\r\n this._addDependenciesInput();\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this.output._typeConnectionSource = () => {\r\n return this.target.isConnected ? this.target : this.source;\r\n };\r\n }\r\n\r\n /** Sampling mode used to sample from the source texture */\r\n @editableInPropertyPage(\"Source sampling mode\", PropertyTypeForEdition.SamplingMode, \"BASE PROPERTIES\")\r\n public get sourceSamplingMode() {\r\n return this._frameGraphTask.sourceSamplingMode;\r\n }\r\n\r\n public set sourceSamplingMode(value: number) {\r\n this._frameGraphTask.sourceSamplingMode = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBasePostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the target input component\r\n */\r\n public get target(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this.output.value = this._frameGraphTask.outputTexture;\r\n\r\n this._frameGraphTask.sourceTexture = this.source.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.targetTexture = this.target.connectedPoint?.value as FrameGraphTextureHandle;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.sourceSamplingMode = ${this.sourceSamplingMode};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.sourceSamplingMode = this.sourceSamplingMode;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.sourceSamplingMode = serializationObject.sourceSamplingMode;\r\n }\r\n}\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FrameGraphPostProcessTask, IViewportLike } from "../../../../index.js";
|
|
2
2
|
import { NodeRenderGraphBasePostProcessBlock } from "./basePostProcessBlock.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Base class for post process blocks.
|
|
5
5
|
*/
|
|
6
6
|
export declare class NodeRenderGraphBaseWithPropertiesPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {
|
|
7
7
|
protected _frameGraphTask: FrameGraphPostProcessTask;
|
|
@@ -2,7 +2,7 @@ import { __decorate } from "../../../../tslib.es6.js";
|
|
|
2
2
|
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
3
3
|
import { NodeRenderGraphBasePostProcessBlock } from "./basePostProcessBlock.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Base class for post process blocks.
|
|
6
6
|
*/
|
|
7
7
|
export class NodeRenderGraphBaseWithPropertiesPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {
|
|
8
8
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseWithPropertiesPostProcessBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraphPostProcessTask, IViewportLike } from \"core/index\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { NodeRenderGraphBasePostProcessBlock } from \"./basePostProcessBlock\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class NodeRenderGraphBaseWithPropertiesPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphPostProcessTask;\r\n\r\n protected _useCurrentViewport = false;\r\n protected _useFullScreenViewport = true;\r\n protected _viewport: IViewportLike = { x: 0, y: 0, width: 1, height: 1 };\r\n\r\n /** If true, the depth attachment will be read-only. */\r\n @editableInPropertyPage(\"Depth Read Only\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get depthReadOnly(): boolean {\r\n return this._frameGraphTask.depthReadOnly;\r\n }\r\n\r\n public set depthReadOnly(value: boolean) {\r\n this._frameGraphTask.depthReadOnly = value;\r\n }\r\n\r\n /** If true, the stencil attachment will be read-only. */\r\n @editableInPropertyPage(\"Stencil Read Only\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get stencilReadOnly(): boolean {\r\n return this._frameGraphTask.stencilReadOnly;\r\n }\r\n\r\n public set stencilReadOnly(value: boolean) {\r\n this._frameGraphTask.stencilReadOnly = value;\r\n }\r\n\r\n /** If true, color write will be disabled when applying the post process. */\r\n @editableInPropertyPage(\"Disable Color Write\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get disableColorWrite(): boolean {\r\n return this._frameGraphTask.disableColorWrite;\r\n }\r\n\r\n public set disableColorWrite(value: boolean) {\r\n this._frameGraphTask.disableColorWrite = value;\r\n }\r\n\r\n /** If true, the post process will be generated by a back face full-screen quad (CW order). */\r\n @editableInPropertyPage(\"Draw Back Face\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get drawBackFace(): boolean {\r\n return this._frameGraphTask.drawBackFace;\r\n }\r\n\r\n public set drawBackFace(value: boolean) {\r\n this._frameGraphTask.drawBackFace = value;\r\n }\r\n\r\n /** If depth testing should be enabled (default is true). */\r\n @editableInPropertyPage(\"Depth Test\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get depthTest(): boolean {\r\n return this._frameGraphTask.depthTest;\r\n }\r\n\r\n public set depthTest(value: boolean) {\r\n this._frameGraphTask.depthTest = value;\r\n }\r\n\r\n private _setViewport() {\r\n if (this._useCurrentViewport) {\r\n this._frameGraphTask.viewport = null;\r\n } else if (this._useFullScreenViewport) {\r\n this._frameGraphTask.viewport = undefined;\r\n } else {\r\n this._frameGraphTask.viewport = this._viewport;\r\n }\r\n }\r\n\r\n /** If true, the current viewport will be left unchanged. */\r\n @editableInPropertyPage(\"Use currently active viewport\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get useCurrentViewport(): boolean {\r\n return this._useCurrentViewport;\r\n }\r\n\r\n public set useCurrentViewport(value: boolean) {\r\n this._useCurrentViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** If true, a full screen viewport will be used. */\r\n @editableInPropertyPage(\"Use full screen viewport\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get useFullScreenViewport(): boolean {\r\n return this._useFullScreenViewport;\r\n }\r\n\r\n public set useFullScreenViewport(value: boolean) {\r\n this._useFullScreenViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** The viewport to use. */\r\n @editableInPropertyPage(\"Viewport\", PropertyTypeForEdition.Viewport, \"BASE PROPERTIES\")\r\n public get viewport(): IViewportLike {\r\n return this._viewport;\r\n }\r\n\r\n public set viewport(value: IViewportLike) {\r\n this._viewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBaseWithPropertiesPostProcessBlock\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.depthReadOnly = ${this.depthReadOnly};`);\r\n codes.push(`${this._codeVariableName}.stencilReadOnly = ${this.stencilReadOnly};`);\r\n codes.push(`${this._codeVariableName}.disableColorWrite = ${this.disableColorWrite};`);\r\n codes.push(`${this._codeVariableName}.drawBackFace = ${this.drawBackFace};`);\r\n codes.push(`${this._codeVariableName}.depthTest = ${this.depthTest};`);\r\n codes.push(`${this._codeVariableName}.viewport = ${this._useCurrentViewport ? \"null\" : this._useFullScreenViewport ? \"undefined\" : JSON.stringify(this._viewport)};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.depthReadOnly = this.depthReadOnly;\r\n serializationObject.stencilReadOnly = this.stencilReadOnly;\r\n serializationObject.disableColorWrite = this.disableColorWrite;\r\n serializationObject.drawBackFace = this.drawBackFace;\r\n serializationObject.depthTest = this.depthTest;\r\n serializationObject.useCurrentViewport = this._useCurrentViewport;\r\n serializationObject.useFullScreenViewport = this._useFullScreenViewport;\r\n serializationObject.viewport = this._viewport;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.depthReadOnly = !!serializationObject.depthReadOnly;\r\n this.stencilReadOnly = !!serializationObject.stencilReadOnly;\r\n this.disableColorWrite = !!serializationObject.disableColorWrite;\r\n this.drawBackFace = !!serializationObject.drawBackFace;\r\n this.depthTest = serializationObject.depthTest ?? true;\r\n if (serializationObject.useCurrentViewport !== undefined) {\r\n this._useCurrentViewport = serializationObject.useCurrentViewport;\r\n this._useFullScreenViewport = serializationObject.useFullScreenViewport;\r\n this._viewport = serializationObject.viewport;\r\n }\r\n this._setViewport();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"baseWithPropertiesPostProcessBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraphPostProcessTask, IViewportLike } from \"core/index\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { NodeRenderGraphBasePostProcessBlock } from \"./basePostProcessBlock\";\r\n\r\n/**\r\n * Base class for post process blocks.\r\n */\r\nexport class NodeRenderGraphBaseWithPropertiesPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphPostProcessTask;\r\n\r\n protected _useCurrentViewport = false;\r\n protected _useFullScreenViewport = true;\r\n protected _viewport: IViewportLike = { x: 0, y: 0, width: 1, height: 1 };\r\n\r\n /** If true, the depth attachment will be read-only. */\r\n @editableInPropertyPage(\"Depth Read Only\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get depthReadOnly(): boolean {\r\n return this._frameGraphTask.depthReadOnly;\r\n }\r\n\r\n public set depthReadOnly(value: boolean) {\r\n this._frameGraphTask.depthReadOnly = value;\r\n }\r\n\r\n /** If true, the stencil attachment will be read-only. */\r\n @editableInPropertyPage(\"Stencil Read Only\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get stencilReadOnly(): boolean {\r\n return this._frameGraphTask.stencilReadOnly;\r\n }\r\n\r\n public set stencilReadOnly(value: boolean) {\r\n this._frameGraphTask.stencilReadOnly = value;\r\n }\r\n\r\n /** If true, color write will be disabled when applying the post process. */\r\n @editableInPropertyPage(\"Disable Color Write\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get disableColorWrite(): boolean {\r\n return this._frameGraphTask.disableColorWrite;\r\n }\r\n\r\n public set disableColorWrite(value: boolean) {\r\n this._frameGraphTask.disableColorWrite = value;\r\n }\r\n\r\n /** If true, the post process will be generated by a back face full-screen quad (CW order). */\r\n @editableInPropertyPage(\"Draw Back Face\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get drawBackFace(): boolean {\r\n return this._frameGraphTask.drawBackFace;\r\n }\r\n\r\n public set drawBackFace(value: boolean) {\r\n this._frameGraphTask.drawBackFace = value;\r\n }\r\n\r\n /** If depth testing should be enabled (default is true). */\r\n @editableInPropertyPage(\"Depth Test\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get depthTest(): boolean {\r\n return this._frameGraphTask.depthTest;\r\n }\r\n\r\n public set depthTest(value: boolean) {\r\n this._frameGraphTask.depthTest = value;\r\n }\r\n\r\n private _setViewport() {\r\n if (this._useCurrentViewport) {\r\n this._frameGraphTask.viewport = null;\r\n } else if (this._useFullScreenViewport) {\r\n this._frameGraphTask.viewport = undefined;\r\n } else {\r\n this._frameGraphTask.viewport = this._viewport;\r\n }\r\n }\r\n\r\n /** If true, the current viewport will be left unchanged. */\r\n @editableInPropertyPage(\"Use currently active viewport\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get useCurrentViewport(): boolean {\r\n return this._useCurrentViewport;\r\n }\r\n\r\n public set useCurrentViewport(value: boolean) {\r\n this._useCurrentViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** If true, a full screen viewport will be used. */\r\n @editableInPropertyPage(\"Use full screen viewport\", PropertyTypeForEdition.Boolean, \"BASE PROPERTIES\")\r\n public get useFullScreenViewport(): boolean {\r\n return this._useFullScreenViewport;\r\n }\r\n\r\n public set useFullScreenViewport(value: boolean) {\r\n this._useFullScreenViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** The viewport to use. */\r\n @editableInPropertyPage(\"Viewport\", PropertyTypeForEdition.Viewport, \"BASE PROPERTIES\")\r\n public get viewport(): IViewportLike {\r\n return this._viewport;\r\n }\r\n\r\n public set viewport(value: IViewportLike) {\r\n this._viewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBaseWithPropertiesPostProcessBlock\";\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.depthReadOnly = ${this.depthReadOnly};`);\r\n codes.push(`${this._codeVariableName}.stencilReadOnly = ${this.stencilReadOnly};`);\r\n codes.push(`${this._codeVariableName}.disableColorWrite = ${this.disableColorWrite};`);\r\n codes.push(`${this._codeVariableName}.drawBackFace = ${this.drawBackFace};`);\r\n codes.push(`${this._codeVariableName}.depthTest = ${this.depthTest};`);\r\n codes.push(`${this._codeVariableName}.viewport = ${this._useCurrentViewport ? \"null\" : this._useFullScreenViewport ? \"undefined\" : JSON.stringify(this._viewport)};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.depthReadOnly = this.depthReadOnly;\r\n serializationObject.stencilReadOnly = this.stencilReadOnly;\r\n serializationObject.disableColorWrite = this.disableColorWrite;\r\n serializationObject.drawBackFace = this.drawBackFace;\r\n serializationObject.depthTest = this.depthTest;\r\n serializationObject.useCurrentViewport = this._useCurrentViewport;\r\n serializationObject.useFullScreenViewport = this._useFullScreenViewport;\r\n serializationObject.viewport = this._viewport;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.depthReadOnly = !!serializationObject.depthReadOnly;\r\n this.stencilReadOnly = !!serializationObject.stencilReadOnly;\r\n this.disableColorWrite = !!serializationObject.disableColorWrite;\r\n this.drawBackFace = !!serializationObject.drawBackFace;\r\n this.depthTest = serializationObject.depthTest ?? true;\r\n if (serializationObject.useCurrentViewport !== undefined) {\r\n this._useCurrentViewport = serializationObject.useCurrentViewport;\r\n this._useFullScreenViewport = serializationObject.useFullScreenViewport;\r\n this._viewport = serializationObject.viewport;\r\n }\r\n this._setViewport();\r\n }\r\n}\r\n"]}
|
|
@@ -27,7 +27,7 @@ export class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraph
|
|
|
27
27
|
NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth |
|
|
28
28
|
NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth);
|
|
29
29
|
this._finalizeInputOutputRegistering();
|
|
30
|
-
this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph
|
|
30
|
+
this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph);
|
|
31
31
|
}
|
|
32
32
|
/** Sets the number of cascades */
|
|
33
33
|
get numCascades() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csmShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene, FrameGraph, NodeRenderGraphConnectionPoint, FrameGraphTextureHandle, NodeRenderGraphBuildState } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphCascadedShadowGeneratorTask } from \"../../../Tasks/Rendering/csmShadowGeneratorTask\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { DepthTextureType } from \"core/Misc/thinMinMaxReducer\";\r\n\r\n/**\r\n * Block that generates shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n protected override _frameGraphTask: FrameGraphCascadedShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCascadedShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"geomDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.geomDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureNormalizedViewDepth |\r\n NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth |\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth\r\n );\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph, scene);\r\n }\r\n\r\n /** Sets the number of cascades */\r\n @editableInPropertyPage(\"Number of cascades\", PropertyTypeForEdition.List, \"CSM PROPERTIES\", {\r\n options: [\r\n { label: \"2\", value: 2 },\r\n { label: \"3\", value: 3 },\r\n { label: \"4\", value: 4 },\r\n ],\r\n })\r\n public get numCascades() {\r\n return this._frameGraphTask.numCascades;\r\n }\r\n\r\n public set numCascades(value: number) {\r\n this._frameGraphTask.numCascades = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should display the cascades. */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get debug() {\r\n return this._frameGraphTask.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.debug = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should stabilize the cascades. */\r\n @editableInPropertyPage(\"Stabilize cascades\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get stabilizeCascades() {\r\n return this._frameGraphTask.stabilizeCascades;\r\n }\r\n\r\n public set stabilizeCascades(value: boolean) {\r\n this._frameGraphTask.stabilizeCascades = value;\r\n }\r\n\r\n /** Gets or sets the lambda parameter of the shadow generator. */\r\n @editableInPropertyPage(\"Lambda\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get lambda() {\r\n return this._frameGraphTask.lambda;\r\n }\r\n\r\n public set lambda(value: number) {\r\n this._frameGraphTask.lambda = value;\r\n }\r\n\r\n /** Gets or sets the cascade blend percentage. */\r\n @editableInPropertyPage(\"Cascade blend\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get cascadeBlendPercentage() {\r\n return this._frameGraphTask.cascadeBlendPercentage;\r\n }\r\n\r\n public set cascadeBlendPercentage(value: number) {\r\n this._frameGraphTask.cascadeBlendPercentage = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should use depth clamping. */\r\n @editableInPropertyPage(\"Depth clamp\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get depthClamp() {\r\n return this._frameGraphTask.depthClamp;\r\n }\r\n\r\n public set depthClamp(value: boolean) {\r\n this._frameGraphTask.depthClamp = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should automatically calculate the depth bounds. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBounds() {\r\n return this._frameGraphTask.autoCalcDepthBounds;\r\n }\r\n\r\n public set autoCalcDepthBounds(value: boolean) {\r\n this._frameGraphTask.autoCalcDepthBounds = value;\r\n }\r\n\r\n /** Defines the refresh rate of the min/max computation used when autoCalcDepthBounds is set to true. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds refresh rate\", PropertyTypeForEdition.Int, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBoundsRefreshRate() {\r\n return this._frameGraphTask.autoCalcDepthBoundsRefreshRate;\r\n }\r\n\r\n public set autoCalcDepthBoundsRefreshRate(value: number) {\r\n this._frameGraphTask.autoCalcDepthBoundsRefreshRate = value;\r\n }\r\n\r\n /** Gets or sets the maximum shadow Z value. */\r\n @editableInPropertyPage(\"Shadow maxZ\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\")\r\n public get shadowMaxZ() {\r\n return this._frameGraphTask.shadowMaxZ;\r\n }\r\n\r\n public set shadowMaxZ(value: number) {\r\n this._frameGraphTask.shadowMaxZ = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCascadedShadowGeneratorBlock\";\r\n }\r\n\r\n /**\r\n * Gets the geometry (view / normalized view) depth component\r\n */\r\n public get geomDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.depthTexture = this.geomDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n\r\n if (this.geomDepth.connectedPoint) {\r\n switch (this.geomDepth.connectedPoint.type) {\r\n case NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth:\r\n this._frameGraphTask.depthTextureType = DepthTextureType.ScreenDepth;\r\n break;\r\n case NodeRenderGraphBlockConnectionPointTypes.TextureNormalizedViewDepth:\r\n this._frameGraphTask.depthTextureType = DepthTextureType.NormalizedViewDepth;\r\n break;\r\n case NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth:\r\n this._frameGraphTask.depthTextureType = DepthTextureType.ViewDepth;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.stabilizeCascades = ${this.stabilizeCascades};`);\r\n codes.push(`${this._codeVariableName}.lambda = ${this.lambda};`);\r\n codes.push(`${this._codeVariableName}.cascadeBlendPercentage = ${this.cascadeBlendPercentage};`);\r\n codes.push(`${this._codeVariableName}.depthClamp = ${this.depthClamp};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBounds = ${this.autoCalcDepthBounds};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBoundsRefreshRate = ${this.autoCalcDepthBoundsRefreshRate};`);\r\n codes.push(`${this._codeVariableName}.shadowMaxZ = ${this.shadowMaxZ};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.numCascades = this.numCascades;\r\n serializationObject.debug = this.debug;\r\n serializationObject.stabilizeCascades = this.stabilizeCascades;\r\n serializationObject.lambda = this.lambda;\r\n serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;\r\n serializationObject.depthClamp = this.depthClamp;\r\n serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;\r\n serializationObject.autoCalcDepthBoundsRefreshRate = this.autoCalcDepthBoundsRefreshRate;\r\n serializationObject.shadowMaxZ = this.shadowMaxZ;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.numCascades = serializationObject.numCascades;\r\n this.debug = serializationObject.debug;\r\n this.stabilizeCascades = serializationObject.stabilizeCascades;\r\n this.lambda = serializationObject.lambda;\r\n this.cascadeBlendPercentage = serializationObject.cascadeBlendPercentage;\r\n this.depthClamp = serializationObject.depthClamp;\r\n this.autoCalcDepthBounds = serializationObject.autoCalcDepthBounds;\r\n this.autoCalcDepthBoundsRefreshRate = serializationObject.autoCalcDepthBoundsRefreshRate ?? 1;\r\n this.shadowMaxZ = serializationObject.shadowMaxZ;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCascadedShadowGeneratorBlock\", NodeRenderGraphCascadedShadowGeneratorBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"csmShadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene, FrameGraph, NodeRenderGraphConnectionPoint, FrameGraphTextureHandle, NodeRenderGraphBuildState } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphCascadedShadowGeneratorTask } from \"../../../Tasks/Rendering/csmShadowGeneratorTask\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { DepthTextureType } from \"core/Misc/thinMinMaxReducer\";\r\n\r\n/**\r\n * Block that generates shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphCascadedShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n protected override _frameGraphTask: FrameGraphCascadedShadowGeneratorTask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCascadedShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"geomDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.geomDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureNormalizedViewDepth |\r\n NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth |\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth\r\n );\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphCascadedShadowGeneratorTask(this.name, frameGraph);\r\n }\r\n\r\n /** Sets the number of cascades */\r\n @editableInPropertyPage(\"Number of cascades\", PropertyTypeForEdition.List, \"CSM PROPERTIES\", {\r\n options: [\r\n { label: \"2\", value: 2 },\r\n { label: \"3\", value: 3 },\r\n { label: \"4\", value: 4 },\r\n ],\r\n })\r\n public get numCascades() {\r\n return this._frameGraphTask.numCascades;\r\n }\r\n\r\n public set numCascades(value: number) {\r\n this._frameGraphTask.numCascades = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should display the cascades. */\r\n @editableInPropertyPage(\"Debug mode\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get debug() {\r\n return this._frameGraphTask.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.debug = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should stabilize the cascades. */\r\n @editableInPropertyPage(\"Stabilize cascades\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get stabilizeCascades() {\r\n return this._frameGraphTask.stabilizeCascades;\r\n }\r\n\r\n public set stabilizeCascades(value: boolean) {\r\n this._frameGraphTask.stabilizeCascades = value;\r\n }\r\n\r\n /** Gets or sets the lambda parameter of the shadow generator. */\r\n @editableInPropertyPage(\"Lambda\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get lambda() {\r\n return this._frameGraphTask.lambda;\r\n }\r\n\r\n public set lambda(value: number) {\r\n this._frameGraphTask.lambda = value;\r\n }\r\n\r\n /** Gets or sets the cascade blend percentage. */\r\n @editableInPropertyPage(\"Cascade blend\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\", { min: 0, max: 1 })\r\n public get cascadeBlendPercentage() {\r\n return this._frameGraphTask.cascadeBlendPercentage;\r\n }\r\n\r\n public set cascadeBlendPercentage(value: number) {\r\n this._frameGraphTask.cascadeBlendPercentage = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should use depth clamping. */\r\n @editableInPropertyPage(\"Depth clamp\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get depthClamp() {\r\n return this._frameGraphTask.depthClamp;\r\n }\r\n\r\n public set depthClamp(value: boolean) {\r\n this._frameGraphTask.depthClamp = value;\r\n }\r\n\r\n /** Gets or sets a value indicating whether the shadow generator should automatically calculate the depth bounds. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds\", PropertyTypeForEdition.Boolean, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBounds() {\r\n return this._frameGraphTask.autoCalcDepthBounds;\r\n }\r\n\r\n public set autoCalcDepthBounds(value: boolean) {\r\n this._frameGraphTask.autoCalcDepthBounds = value;\r\n }\r\n\r\n /** Defines the refresh rate of the min/max computation used when autoCalcDepthBounds is set to true. */\r\n @editableInPropertyPage(\"Auto-Calc depth bounds refresh rate\", PropertyTypeForEdition.Int, \"CSM PROPERTIES\")\r\n public get autoCalcDepthBoundsRefreshRate() {\r\n return this._frameGraphTask.autoCalcDepthBoundsRefreshRate;\r\n }\r\n\r\n public set autoCalcDepthBoundsRefreshRate(value: number) {\r\n this._frameGraphTask.autoCalcDepthBoundsRefreshRate = value;\r\n }\r\n\r\n /** Gets or sets the maximum shadow Z value. */\r\n @editableInPropertyPage(\"Shadow maxZ\", PropertyTypeForEdition.Float, \"CSM PROPERTIES\")\r\n public get shadowMaxZ() {\r\n return this._frameGraphTask.shadowMaxZ;\r\n }\r\n\r\n public set shadowMaxZ(value: number) {\r\n this._frameGraphTask.shadowMaxZ = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCascadedShadowGeneratorBlock\";\r\n }\r\n\r\n /**\r\n * Gets the geometry (view / normalized view) depth component\r\n */\r\n public get geomDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.depthTexture = this.geomDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n\r\n if (this.geomDepth.connectedPoint) {\r\n switch (this.geomDepth.connectedPoint.type) {\r\n case NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth:\r\n this._frameGraphTask.depthTextureType = DepthTextureType.ScreenDepth;\r\n break;\r\n case NodeRenderGraphBlockConnectionPointTypes.TextureNormalizedViewDepth:\r\n this._frameGraphTask.depthTextureType = DepthTextureType.NormalizedViewDepth;\r\n break;\r\n case NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth:\r\n this._frameGraphTask.depthTextureType = DepthTextureType.ViewDepth;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.numCascades = ${this.numCascades};`);\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.stabilizeCascades = ${this.stabilizeCascades};`);\r\n codes.push(`${this._codeVariableName}.lambda = ${this.lambda};`);\r\n codes.push(`${this._codeVariableName}.cascadeBlendPercentage = ${this.cascadeBlendPercentage};`);\r\n codes.push(`${this._codeVariableName}.depthClamp = ${this.depthClamp};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBounds = ${this.autoCalcDepthBounds};`);\r\n codes.push(`${this._codeVariableName}.autoCalcDepthBoundsRefreshRate = ${this.autoCalcDepthBoundsRefreshRate};`);\r\n codes.push(`${this._codeVariableName}.shadowMaxZ = ${this.shadowMaxZ};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.numCascades = this.numCascades;\r\n serializationObject.debug = this.debug;\r\n serializationObject.stabilizeCascades = this.stabilizeCascades;\r\n serializationObject.lambda = this.lambda;\r\n serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;\r\n serializationObject.depthClamp = this.depthClamp;\r\n serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;\r\n serializationObject.autoCalcDepthBoundsRefreshRate = this.autoCalcDepthBoundsRefreshRate;\r\n serializationObject.shadowMaxZ = this.shadowMaxZ;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.numCascades = serializationObject.numCascades;\r\n this.debug = serializationObject.debug;\r\n this.stabilizeCascades = serializationObject.stabilizeCascades;\r\n this.lambda = serializationObject.lambda;\r\n this.cascadeBlendPercentage = serializationObject.cascadeBlendPercentage;\r\n this.depthClamp = serializationObject.depthClamp;\r\n this.autoCalcDepthBounds = serializationObject.autoCalcDepthBounds;\r\n this.autoCalcDepthBoundsRefreshRate = serializationObject.autoCalcDepthBoundsRefreshRate ?? 1;\r\n this.shadowMaxZ = serializationObject.shadowMaxZ;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCascadedShadowGeneratorBlock\", NodeRenderGraphCascadedShadowGeneratorBlock);\r\n"]}
|
|
@@ -14,7 +14,7 @@ export class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShad
|
|
|
14
14
|
constructor(name, frameGraph, scene) {
|
|
15
15
|
super(name, frameGraph, scene);
|
|
16
16
|
this._finalizeInputOutputRegistering();
|
|
17
|
-
this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph
|
|
17
|
+
this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph);
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Gets the current class name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,uCAAuC;IAC5F;;;;;OAKG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAEvC,IAAI,CAAC,eAAe,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"shadowGeneratorBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,uCAAuC;IAC5F;;;;;OAKG;IACH,YAAmB,IAAY,EAAE,UAAsB,EAAE,KAAY;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAEvC,IAAI,CAAC,eAAe,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpF,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,qCAAqC,CAAC;IACjD,CAAC;CACJ;AAED,aAAa,CAAC,6CAA6C,EAAE,mCAAmC,CAAC,CAAC","sourcesContent":["import type { Scene, FrameGraph } from \"core/index\";\r\nimport { NodeRenderGraphBaseShadowGeneratorBlock } from \"./baseShadowGeneratorBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { FrameGraphShadowGeneratorTask } from \"../../../Tasks/Rendering/shadowGeneratorTask\";\r\n\r\n/**\r\n * Block that generate shadows through a shadow generator\r\n */\r\nexport class NodeRenderGraphShadowGeneratorBlock extends NodeRenderGraphBaseShadowGeneratorBlock {\r\n /**\r\n * Create a new NodeRenderGraphShadowGeneratorBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphShadowGeneratorTask(this.name, frameGraph);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphShadowGeneratorBlock\";\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphShadowGeneratorBlock\", NodeRenderGraphShadowGeneratorBlock);\r\n"]}
|
|
@@ -30,6 +30,9 @@ export declare class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBloc
|
|
|
30
30
|
/** The viewport to use. */
|
|
31
31
|
get viewport(): IViewportLike;
|
|
32
32
|
set viewport(value: IViewportLike);
|
|
33
|
+
/** The LOD level to copy from the source texture (default: 0). */
|
|
34
|
+
get lodLevel(): number;
|
|
35
|
+
set lodLevel(value: number);
|
|
33
36
|
/**
|
|
34
37
|
* Gets the current class name
|
|
35
38
|
* @returns the class name
|
|
@@ -69,6 +69,13 @@ export class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBlock {
|
|
|
69
69
|
this._viewport = value;
|
|
70
70
|
this._setViewport();
|
|
71
71
|
}
|
|
72
|
+
/** The LOD level to copy from the source texture (default: 0). */
|
|
73
|
+
get lodLevel() {
|
|
74
|
+
return this._frameGraphTask.lodLevel;
|
|
75
|
+
}
|
|
76
|
+
set lodLevel(value) {
|
|
77
|
+
this._frameGraphTask.lodLevel = value;
|
|
78
|
+
}
|
|
72
79
|
/**
|
|
73
80
|
* Gets the current class name
|
|
74
81
|
* @returns the class name
|
|
@@ -103,6 +110,7 @@ export class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBlock {
|
|
|
103
110
|
_dumpPropertiesCode() {
|
|
104
111
|
const codes = [];
|
|
105
112
|
codes.push(`${this._codeVariableName}.viewport = ${this._useCurrentViewport ? "null" : this._useFullScreenViewport ? "undefined" : JSON.stringify(this._viewport)};`);
|
|
113
|
+
codes.push(`${this._codeVariableName}.lodLevel = ${this.lodLevel};`);
|
|
106
114
|
return super._dumpPropertiesCode() + codes.join("\n");
|
|
107
115
|
}
|
|
108
116
|
serialize() {
|
|
@@ -110,6 +118,7 @@ export class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBlock {
|
|
|
110
118
|
serializationObject.useCurrentViewport = this._useCurrentViewport;
|
|
111
119
|
serializationObject.useFullScreenViewport = this._useFullScreenViewport;
|
|
112
120
|
serializationObject.viewport = this._viewport;
|
|
121
|
+
serializationObject.lodLevel = this.lodLevel;
|
|
113
122
|
return serializationObject;
|
|
114
123
|
}
|
|
115
124
|
_deserialize(serializationObject) {
|
|
@@ -119,6 +128,7 @@ export class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBlock {
|
|
|
119
128
|
this._useFullScreenViewport = serializationObject.useFullScreenViewport;
|
|
120
129
|
this._viewport = serializationObject.viewport;
|
|
121
130
|
}
|
|
131
|
+
this.lodLevel = serializationObject.lodLevel ?? 0;
|
|
122
132
|
this._setViewport();
|
|
123
133
|
}
|
|
124
134
|
}
|
|
@@ -131,5 +141,8 @@ __decorate([
|
|
|
131
141
|
__decorate([
|
|
132
142
|
editableInPropertyPage("Viewport", 12 /* PropertyTypeForEdition.Viewport */, "PROPERTIES")
|
|
133
143
|
], NodeRenderGraphCopyTextureBlock.prototype, "viewport", null);
|
|
144
|
+
__decorate([
|
|
145
|
+
editableInPropertyPage("LOD Level", 2 /* PropertyTypeForEdition.Int */, "PROPERTIES", { min: 0, max: 16 })
|
|
146
|
+
], NodeRenderGraphCopyTextureBlock.prototype, "lodLevel", null);
|
|
134
147
|
RegisterClass("BABYLON.NodeRenderGraphCopyTextureBlock", NodeRenderGraphCopyTextureBlock);
|
|
135
148
|
//# sourceMappingURL=copyTextureBlock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyTextureBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Textures/copyTextureBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeRenderGraphConnectionPoint, Scene, FrameGraphTextureHandle, FrameGraph, NodeRenderGraphBuildState, IViewportLike } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { FrameGraphCopyToTextureTask } from \"../../../Tasks/Texture/copyToTextureTask\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\n\r\n/**\r\n * Block used to copy a texture\r\n */\r\nexport class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphCopyToTextureTask;\r\n\r\n protected _useCurrentViewport = false;\r\n protected _useFullScreenViewport = true;\r\n protected _viewport: IViewportLike = { x: 0, y: 0, width: 1, height: 1 };\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCopyTextureBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"source\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"target\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this._addDependenciesInput();\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this.source.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);\r\n this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAll);\r\n this.output._typeConnectionSource = this.source;\r\n\r\n this._frameGraphTask = new FrameGraphCopyToTextureTask(name, frameGraph);\r\n }\r\n\r\n private _setViewport() {\r\n if (this._useCurrentViewport) {\r\n this._frameGraphTask.viewport = null;\r\n } else if (this._useFullScreenViewport) {\r\n this._frameGraphTask.viewport = undefined;\r\n } else {\r\n this._frameGraphTask.viewport = this._viewport;\r\n }\r\n }\r\n\r\n /** If true, the current viewport will be left unchanged. */\r\n @editableInPropertyPage(\"Use currently active viewport\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useCurrentViewport(): boolean {\r\n return this._useCurrentViewport;\r\n }\r\n\r\n public set useCurrentViewport(value: boolean) {\r\n this._useCurrentViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** If true, a full screen viewport will be used. */\r\n @editableInPropertyPage(\"Use full screen viewport\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useFullScreenViewport(): boolean {\r\n return this._useFullScreenViewport;\r\n }\r\n\r\n public set useFullScreenViewport(value: boolean) {\r\n this._useFullScreenViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** The viewport to use. */\r\n @editableInPropertyPage(\"Viewport\", PropertyTypeForEdition.Viewport, \"PROPERTIES\")\r\n public get viewport(): IViewportLike {\r\n return this._viewport;\r\n }\r\n\r\n public set viewport(value: IViewportLike) {\r\n this._viewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCopyTextureBlock\";\r\n }\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the target input component\r\n */\r\n public get target(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this.output.value = this._frameGraphTask.outputTexture; // the value of the output connection point is the \"output\" texture of the task\r\n\r\n this._frameGraphTask.sourceTexture = this.source.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.targetTexture = this.target.connectedPoint?.value as FrameGraphTextureHandle;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.viewport = ${this._useCurrentViewport ? \"null\" : this._useFullScreenViewport ? \"undefined\" : JSON.stringify(this._viewport)};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.useCurrentViewport = this._useCurrentViewport;\r\n serializationObject.useFullScreenViewport = this._useFullScreenViewport;\r\n serializationObject.viewport = this._viewport;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n if (serializationObject.useCurrentViewport !== undefined) {\r\n this._useCurrentViewport = serializationObject.useCurrentViewport;\r\n this._useFullScreenViewport = serializationObject.useFullScreenViewport;\r\n this._viewport = serializationObject.viewport;\r\n }\r\n this._setViewport();\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCopyTextureBlock\", NodeRenderGraphCopyTextureBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"copyTextureBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Textures/copyTextureBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeRenderGraphConnectionPoint, Scene, FrameGraphTextureHandle, FrameGraph, NodeRenderGraphBuildState, IViewportLike } from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { FrameGraphCopyToTextureTask } from \"../../../Tasks/Texture/copyToTextureTask\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\n\r\n/**\r\n * Block used to copy a texture\r\n */\r\nexport class NodeRenderGraphCopyTextureBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphCopyToTextureTask;\r\n\r\n protected _useCurrentViewport = false;\r\n protected _useFullScreenViewport = true;\r\n protected _viewport: IViewportLike = { x: 0, y: 0, width: 1, height: 1 };\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphCopyTextureBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\"source\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"target\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this._addDependenciesInput();\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this.source.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBuffer);\r\n this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAll);\r\n this.output._typeConnectionSource = this.source;\r\n\r\n this._frameGraphTask = new FrameGraphCopyToTextureTask(name, frameGraph);\r\n }\r\n\r\n private _setViewport() {\r\n if (this._useCurrentViewport) {\r\n this._frameGraphTask.viewport = null;\r\n } else if (this._useFullScreenViewport) {\r\n this._frameGraphTask.viewport = undefined;\r\n } else {\r\n this._frameGraphTask.viewport = this._viewport;\r\n }\r\n }\r\n\r\n /** If true, the current viewport will be left unchanged. */\r\n @editableInPropertyPage(\"Use currently active viewport\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useCurrentViewport(): boolean {\r\n return this._useCurrentViewport;\r\n }\r\n\r\n public set useCurrentViewport(value: boolean) {\r\n this._useCurrentViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** If true, a full screen viewport will be used. */\r\n @editableInPropertyPage(\"Use full screen viewport\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get useFullScreenViewport(): boolean {\r\n return this._useFullScreenViewport;\r\n }\r\n\r\n public set useFullScreenViewport(value: boolean) {\r\n this._useFullScreenViewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** The viewport to use. */\r\n @editableInPropertyPage(\"Viewport\", PropertyTypeForEdition.Viewport, \"PROPERTIES\")\r\n public get viewport(): IViewportLike {\r\n return this._viewport;\r\n }\r\n\r\n public set viewport(value: IViewportLike) {\r\n this._viewport = value;\r\n this._setViewport();\r\n }\r\n\r\n /** The LOD level to copy from the source texture (default: 0). */\r\n @editableInPropertyPage(\"LOD Level\", PropertyTypeForEdition.Int, \"PROPERTIES\", { min: 0, max: 16 })\r\n public get lodLevel(): number {\r\n return this._frameGraphTask.lodLevel;\r\n }\r\n\r\n public set lodLevel(value: number) {\r\n this._frameGraphTask.lodLevel = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphCopyTextureBlock\";\r\n }\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the target input component\r\n */\r\n public get target(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this.output.value = this._frameGraphTask.outputTexture; // the value of the output connection point is the \"output\" texture of the task\r\n\r\n this._frameGraphTask.sourceTexture = this.source.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.targetTexture = this.target.connectedPoint?.value as FrameGraphTextureHandle;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.viewport = ${this._useCurrentViewport ? \"null\" : this._useFullScreenViewport ? \"undefined\" : JSON.stringify(this._viewport)};`);\r\n codes.push(`${this._codeVariableName}.lodLevel = ${this.lodLevel};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.useCurrentViewport = this._useCurrentViewport;\r\n serializationObject.useFullScreenViewport = this._useFullScreenViewport;\r\n serializationObject.viewport = this._viewport;\r\n serializationObject.lodLevel = this.lodLevel;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n if (serializationObject.useCurrentViewport !== undefined) {\r\n this._useCurrentViewport = serializationObject.useCurrentViewport;\r\n this._useFullScreenViewport = serializationObject.useFullScreenViewport;\r\n this._viewport = serializationObject.viewport;\r\n }\r\n this.lodLevel = serializationObject.lodLevel ?? 0;\r\n this._setViewport();\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphCopyTextureBlock\", NodeRenderGraphCopyTextureBlock);\r\n"]}
|
|
@@ -9,6 +9,7 @@ export * from "./Layers/glowLayerBlock.js";
|
|
|
9
9
|
export * from "./Layers/highlightLayerBlock.js";
|
|
10
10
|
export * from "./PostProcesses/anaglyphPostProcessBlock.js";
|
|
11
11
|
export * from "./PostProcesses/basePostProcessBlock.js";
|
|
12
|
+
export * from "./PostProcesses/baseWithPropertiesPostProcessBlock.js";
|
|
12
13
|
export * from "./PostProcesses/blackAndWhitePostProcessBlock.js";
|
|
13
14
|
export * from "./PostProcesses/bloomPostProcessBlock.js";
|
|
14
15
|
export * from "./PostProcesses/blurPostProcessBlock.js";
|
|
@@ -9,6 +9,7 @@ export * from "./Layers/glowLayerBlock.js";
|
|
|
9
9
|
export * from "./Layers/highlightLayerBlock.js";
|
|
10
10
|
export * from "./PostProcesses/anaglyphPostProcessBlock.js";
|
|
11
11
|
export * from "./PostProcesses/basePostProcessBlock.js";
|
|
12
|
+
export * from "./PostProcesses/baseWithPropertiesPostProcessBlock.js";
|
|
12
13
|
export * from "./PostProcesses/blackAndWhitePostProcessBlock.js";
|
|
13
14
|
export * from "./PostProcesses/bloomPostProcessBlock.js";
|
|
14
15
|
export * from "./PostProcesses/blurPostProcessBlock.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC;AACrE,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AAExD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./computeShaderBlock\";\r\nexport * from \"./cullObjectsBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\nexport * from \"./Layers/highlightLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/anaglyphPostProcessBlock\";\r\nexport * from \"./PostProcesses/basePostProcessBlock\";\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock\";\r\nexport * from \"./PostProcesses/convolutionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/filterPostProcessBlock\";\r\nexport * from \"./PostProcesses/fxaaPostProcessBlock\";\r\nexport * from \"./PostProcesses/grainPostProcessBlock\";\r\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock\";\r\nexport * from \"./PostProcesses/motionBlurPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\nexport * from \"./PostProcesses/sharpenPostProcessBlock\";\r\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock\";\r\nexport * from \"./PostProcesses/ssao2PostProcessBlock\";\r\nexport * from \"./PostProcesses/ssrPostProcessBlock\";\r\nexport * from \"./PostProcesses/taaPostProcessBlock\";\r\nexport * from \"./PostProcesses/tonemapPostProcessBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/utilityLayerRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mDAAmD,CAAC;AAClE,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC;AACrE,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AAExD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC","sourcesContent":["export * from \"./computeShaderBlock\";\r\nexport * from \"./cullObjectsBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./executeBlock\";\r\nexport * from \"./inputBlock\";\r\nexport * from \"./outputBlock\";\r\nexport * from \"./resourceContainerBlock\";\r\n\r\nexport * from \"./Layers/glowLayerBlock\";\r\nexport * from \"./Layers/highlightLayerBlock\";\r\n\r\nexport * from \"./PostProcesses/anaglyphPostProcessBlock\";\r\nexport * from \"./PostProcesses/basePostProcessBlock\";\r\nexport * from \"./PostProcesses/baseWithPropertiesPostProcessBlock\";\r\nexport * from \"./PostProcesses/blackAndWhitePostProcessBlock\";\r\nexport * from \"./PostProcesses/bloomPostProcessBlock\";\r\nexport * from \"./PostProcesses/blurPostProcessBlock\";\r\nexport * from \"./PostProcesses/chromaticAberrationPostProcessBlock\";\r\nexport * from \"./PostProcesses/circleOfConfusionPostProcessBlock\";\r\nexport * from \"./PostProcesses/colorCorrectionPostProcessBlock\";\r\nexport * from \"./PostProcesses/convolutionPostProcessBlock\";\r\nexport * from \"./PostProcesses/depthOfFieldPostProcessBlock\";\r\nexport * from \"./PostProcesses/extractHighlightsPostProcessBlock\";\r\nexport * from \"./PostProcesses/filterPostProcessBlock\";\r\nexport * from \"./PostProcesses/fxaaPostProcessBlock\";\r\nexport * from \"./PostProcesses/grainPostProcessBlock\";\r\nexport * from \"./PostProcesses/imageProcessingPostProcessBlock\";\r\nexport * from \"./PostProcesses/motionBlurPostProcessBlock\";\r\nexport * from \"./PostProcesses/passPostProcessBlock\";\r\nexport * from \"./PostProcesses/sharpenPostProcessBlock\";\r\nexport * from \"./PostProcesses/screenSpaceCurvaturePostProcessBlock\";\r\nexport * from \"./PostProcesses/ssao2PostProcessBlock\";\r\nexport * from \"./PostProcesses/ssrPostProcessBlock\";\r\nexport * from \"./PostProcesses/taaPostProcessBlock\";\r\nexport * from \"./PostProcesses/tonemapPostProcessBlock\";\r\n\r\nexport * from \"./Rendering/csmShadowGeneratorBlock\";\r\nexport * from \"./Rendering/geometryRendererBlock\";\r\nexport * from \"./Rendering/objectRendererBlock\";\r\nexport * from \"./Rendering/shadowGeneratorBlock\";\r\nexport * from \"./Rendering/utilityLayerRendererBlock\";\r\n\r\nexport * from \"./Teleport/teleportInBlock\";\r\nexport * from \"./Teleport/teleportOutBlock\";\r\n\r\nexport * from \"./Textures/clearBlock\";\r\nexport * from \"./Textures/copyTextureBlock\";\r\nexport * from \"./Textures/generateMipmapsBlock\";\r\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FrameGraphTextureHandle, FrameGraph
|
|
1
|
+
import type { FrameGraphTextureHandle, FrameGraph } from "../../../index.js";
|
|
2
2
|
import { CascadedShadowGenerator } from "../../../Lights/Shadows/cascadedShadowGenerator.js";
|
|
3
3
|
import { FrameGraphShadowGeneratorTask } from "./shadowGeneratorTask.js";
|
|
4
4
|
import { DepthTextureType, ThinMinMaxReducer } from "../../../Misc/thinMinMaxReducer.js";
|
|
@@ -14,8 +14,9 @@ export declare class FrameGraphCascadedShadowGeneratorTask extends FrameGraphSha
|
|
|
14
14
|
*/
|
|
15
15
|
static IsCascadedShadowGenerator(task: FrameGraphShadowGeneratorTask): task is FrameGraphCascadedShadowGeneratorTask;
|
|
16
16
|
/**
|
|
17
|
-
* The depth texture used by the autoCalcDepthBounds feature (optional if autoCalcDepthBounds is set to false)
|
|
17
|
+
* The depth texture used by the autoCalcDepthBounds feature (optional if autoCalcDepthBounds is set to false).
|
|
18
18
|
* This texture is used to compute the min/max depth bounds of the scene to setup the cascaded shadow generator.
|
|
19
|
+
* The texture should contain either “view,” “normalized view,” or “screen” depth values - if possible, connect “normalized view,” or “screen” for best performance.
|
|
19
20
|
* Warning: Do not set a texture if you are not using the autoCalcDepthBounds feature, to avoid generating a depth texture that will not be used.
|
|
20
21
|
*/
|
|
21
22
|
depthTexture?: FrameGraphTextureHandle;
|
|
@@ -84,9 +85,8 @@ export declare class FrameGraphCascadedShadowGeneratorTask extends FrameGraphSha
|
|
|
84
85
|
* Creates a new shadow generator task.
|
|
85
86
|
* @param name The name of the task.
|
|
86
87
|
* @param frameGraph The frame graph the task belongs to.
|
|
87
|
-
* @param scene The scene to create the shadow generator for.
|
|
88
88
|
*/
|
|
89
|
-
constructor(name: string, frameGraph: FrameGraph
|
|
89
|
+
constructor(name: string, frameGraph: FrameGraph);
|
|
90
90
|
protected _createShadowGenerator(): void;
|
|
91
91
|
protected _setupShadowGenerator(): void;
|
|
92
92
|
record(): void;
|
|
@@ -156,10 +156,9 @@ export class FrameGraphCascadedShadowGeneratorTask extends FrameGraphShadowGener
|
|
|
156
156
|
* Creates a new shadow generator task.
|
|
157
157
|
* @param name The name of the task.
|
|
158
158
|
* @param frameGraph The frame graph the task belongs to.
|
|
159
|
-
* @param scene The scene to create the shadow generator for.
|
|
160
159
|
*/
|
|
161
|
-
constructor(name, frameGraph
|
|
162
|
-
super(name, frameGraph
|
|
160
|
+
constructor(name, frameGraph) {
|
|
161
|
+
super(name, frameGraph);
|
|
163
162
|
/**
|
|
164
163
|
* The type of the depth texture used by the autoCalcDepthBounds feature.
|
|
165
164
|
*/
|
|
@@ -174,7 +173,7 @@ export class FrameGraphCascadedShadowGeneratorTask extends FrameGraphShadowGener
|
|
|
174
173
|
this._currentAutoCalcDepthBoundsCounter = 0;
|
|
175
174
|
this._autoCalcDepthBoundsRefreshRate = 1;
|
|
176
175
|
this._shadowMaxZ = 10000;
|
|
177
|
-
this._thinMinMaxReducer = new ThinMinMaxReducer(scene);
|
|
176
|
+
this._thinMinMaxReducer = new ThinMinMaxReducer(frameGraph.scene);
|
|
178
177
|
this._thinMinMaxReducer.onAfterReductionPerformed.add((minmax) => {
|
|
179
178
|
if (!this._shadowGenerator) {
|
|
180
179
|
return;
|