@babylonjs/core 5.27.0 → 5.28.0
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/Animations/animatable.js +2 -1
- package/Animations/animatable.js.map +1 -1
- package/Animations/runtimeAnimation.js +1 -1
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.js +2 -1
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.js +70 -45
- package/Audio/sound.js.map +1 -1
- package/Audio/soundTrack.js +12 -6
- package/Audio/soundTrack.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +2 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +2 -1
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/handConstraintBehavior.js +6 -6
- package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
- package/Bones/bone.js +2 -1
- package/Bones/bone.js.map +1 -1
- package/Bones/skeleton.js +3 -2
- package/Bones/skeleton.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +2 -2
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +5 -3
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +2 -2
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +2 -2
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/arcRotateCamera.js +2 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.js +6 -4
- package/Cameras/camera.js.map +1 -1
- package/Compute/computeEffect.js +8 -5
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.js +12 -11
- package/Compute/computeShader.js.map +1 -1
- package/Culling/Octrees/octreeSceneComponent.js +2 -1
- package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
- package/Culling/boundingBox.js +3 -2
- package/Culling/boundingBox.js.map +1 -1
- package/Culling/ray.js +2 -1
- package/Culling/ray.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.js +9 -7
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/rayHelper.js +2 -1
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +29 -24
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +5 -3
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.js +2 -1
- package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.js +12 -9
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.js +4 -4
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.readTexture.js +3 -2
- package/Engines/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/Extensions/engine.views.js +2 -1
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +11 -6
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +2 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js +2 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.js +4 -2
- package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +4 -4
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +3 -2
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.textureSampler.js +2 -1
- package/Engines/WebGPU/Extensions/engine.textureSampler.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.js +2 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +7 -6
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +18 -14
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +4 -3
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +3 -2
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js +2 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDepthCullingState.js +2 -2
- package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +2 -1
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +4 -3
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.js +5 -4
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +5 -3
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.js +4 -2
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +4 -2
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.js +3 -2
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js +2 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +40 -38
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/engine.d.ts +898 -273
- package/Engines/engine.js +5 -3
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.js +7 -5
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +7 -0
- package/Engines/nullEngine.js +42 -0
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +14 -9
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.js +25 -16
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +87 -61
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gamepads/gamepadManager.js +1 -1
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/axisDragGizmo.js +4 -2
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +6 -4
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +21 -6
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.js +3 -2
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +4 -2
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +4 -2
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Helpers/videoDome.js +2 -1
- package/Helpers/videoDome.js.map +1 -1
- package/Layers/effectLayer.js +5 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.js +4 -3
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +2 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/LensFlares/lensFlareSystem.js +2 -1
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +25 -21
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +13 -8
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +2 -1
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Loading/sceneLoader.js +3 -3
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +10 -6
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +3 -2
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +2 -1
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +26 -24
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +3 -3
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +48 -44
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +13 -13
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +27 -26
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +2 -2
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +6 -6
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.js +3 -2
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +5 -4
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +4 -3
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +5 -4
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +7 -6
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +4 -3
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialDecorator.js +1 -1
- package/Materials/Node/nodeMaterialDecorator.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +25 -19
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +9 -6
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +7 -4
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +7 -4
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +2 -2
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Packer/packer.js +14 -13
- package/Materials/Textures/Packer/packer.js.map +1 -1
- package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -1
- package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js +2 -1
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +7 -4
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +5 -4
- package/Materials/Textures/baseTexture.js +1 -0
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +8 -4
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.js +4 -2
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.js +4 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +6 -3
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.js +6 -4
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/rawTexture.js +1 -1
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +26 -15
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.js +16 -13
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js +4 -2
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/thinTexture.d.ts +3 -3
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +3 -3
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.js +4 -2
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +15 -10
- package/Materials/effect.js.map +1 -1
- package/Materials/material.d.ts +14 -0
- package/Materials/material.detailMapConfiguration.js +2 -1
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +35 -3
- package/Materials/material.js.map +1 -1
- package/Materials/materialDefines.js +6 -5
- package/Materials/materialDefines.js.map +1 -1
- package/Materials/materialHelper.js +1 -1
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/materialPluginManager.js +3 -2
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/multiMaterial.js +2 -1
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/shaderMaterial.js +12 -9
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +13 -8
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +12 -10
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +1 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/math.vector.d.ts +7 -6
- package/Maths/math.vector.js +10 -8
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/groundBuilder.js +1 -1
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/abstractMesh.js +8 -5
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/csg.js +2 -1
- package/Meshes/csg.js.map +1 -1
- package/Meshes/instancedMesh.js +2 -1
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +1 -1
- package/Meshes/mesh.js +23 -13
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.js +4 -3
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/subMesh.js +14 -8
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/thinInstanceMesh.js +18 -12
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Meshes/transformNode.d.ts +7 -1
- package/Meshes/transformNode.js +15 -4
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +12 -8
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +3 -2
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/arrayTools.js +1 -1
- package/Misc/arrayTools.js.map +1 -1
- package/Misc/assetsManager.d.ts +22 -4
- package/Misc/assetsManager.js +20 -8
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/computePressure.js +9 -6
- package/Misc/computePressure.js.map +1 -1
- package/Misc/dataStorage.js +1 -1
- package/Misc/dataStorage.js.map +1 -1
- package/Misc/dds.js +1 -1
- package/Misc/dds.js.map +1 -1
- package/Misc/environmentTextureTools.js +3 -2
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.js +31 -8
- package/Misc/fileTools.js.map +1 -1
- package/Misc/logger.js +2 -1
- package/Misc/logger.js.map +1 -1
- package/Misc/minMaxReducer.js +3 -2
- package/Misc/minMaxReducer.js.map +1 -1
- package/Misc/sceneRecorder.js +1 -1
- package/Misc/sceneRecorder.js.map +1 -1
- package/Misc/textureTools.js +3 -3
- package/Misc/textureTools.js.map +1 -1
- package/Misc/timer.js +5 -3
- package/Misc/timer.js.map +1 -1
- package/Misc/tools.js +4 -4
- package/Misc/tools.js.map +1 -1
- package/Misc/trajectoryClassifier.js +3 -3
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +2 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/computeShaderParticleSystem.js +6 -3
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +13 -8
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.js +22 -14
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +2 -1
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/pointsCloudSystem.js +7 -4
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticleSystem.js +2 -2
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/webgl2ParticleSystem.js +2 -1
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +5 -4
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +4 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +8 -5
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +6 -4
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +7 -4
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/Probes/reflectionProbe.js +4 -2
- package/Probes/reflectionProbe.js.map +1 -1
- package/Rendering/boundingBoxRenderer.js +3 -2
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthPeelingRenderer.d.ts +12 -0
- package/Rendering/depthPeelingRenderer.js +30 -6
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/depthPeelingSceneComponent.js +4 -2
- package/Rendering/depthPeelingSceneComponent.js.map +1 -1
- package/Rendering/depthRenderer.js +10 -6
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/edgesRenderer.js +11 -8
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js +2 -2
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +4 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +3 -3
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
- package/Shaders/pbr.fragment.js +4 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Sprites/spriteManager.js +2 -1
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.js +2 -1
- package/Sprites/spriteRenderer.js.map +1 -1
- package/States/stencilStateComposer.js +4 -2
- package/States/stencilStateComposer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.js +2 -1
- package/XR/features/WebXRAnchorSystem.js.map +1 -1
- package/XR/features/WebXRControllerMovement.js +7 -6
- package/XR/features/WebXRControllerMovement.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +6 -4
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.js +2 -1
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRHandTracking.d.ts +3 -3
- package/XR/features/WebXRHandTracking.js +126 -118
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRHitTest.js.map +1 -1
- package/XR/features/WebXRLayers.js +1 -1
- package/XR/features/WebXRLayers.js.map +1 -1
- package/XR/features/WebXRLightEstimation.js +7 -4
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/XR/features/WebXRMeshDetector.js +2 -1
- package/XR/features/WebXRMeshDetector.js.map +1 -1
- package/XR/features/WebXRNearInteraction.js +7 -4
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/features/WebXRPlaneDetector.js +2 -1
- package/XR/features/WebXRPlaneDetector.js.map +1 -1
- package/XR/native/nativeXRFrame.js +2 -1
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/XR/webXRCamera.js +2 -1
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRExperienceHelper.js +7 -5
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRInput.js.map +1 -1
- package/XR/webXRInputSource.js +2 -1
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRManagedOutputCanvas.js +0 -1
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRSessionManager.js +27 -14
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRWebGLLayer.js +3 -0
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +17 -11
- package/scene.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuShaderProcessingContext.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuShaderProcessingContext.ts"],"names":[],"mappings":"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AAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3D,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACvD,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;CAC/D,CAAC;AAEe,wCAAU,GAA+C;IACtE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IAEtD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IAEzD,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACzD,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACrD,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;CAC7D,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport type { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\n\r\nconst _maxGroups = 4;\r\nconst _maxBindingsPerGroup = 1 << 16;\r\n\r\n// all types not listed are assumed to consume 1 location\r\nconst _typeToLocationSize: { [key: string]: number } = {\r\n // GLSL types\r\n mat2: 2,\r\n mat3: 3,\r\n mat4: 4,\r\n\r\n // WGSL types\r\n mat2x2: 2,\r\n mat3x3: 3,\r\n mat4x4: 4,\r\n};\r\n\r\n/** @internal */\r\nexport interface WebGPUBindingInfo {\r\n groupIndex: number;\r\n bindingIndex: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUTextureDescription {\r\n autoBindSampler?: boolean;\r\n isTextureArray: boolean;\r\n isStorageTexture: boolean;\r\n textures: Array<WebGPUBindingInfo>;\r\n sampleType?: GPUTextureSampleType; // not used if the texture is a storage texture\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUSamplerDescription {\r\n binding: WebGPUBindingInfo;\r\n type: GPUSamplerBindingType;\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUBufferDescription {\r\n binding: WebGPUBindingInfo;\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUBindGroupLayoutEntryInfo {\r\n name: string;\r\n index: number; // index of the entry (GPUBindGroupLayoutEntry) in the bindGroupLayoutEntries[group] array\r\n nameInArrayOfTexture?: string; // something like texture0, texture1, ... if texture is an array, else same thing as \"name\"\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class WebGPUShaderProcessingContext implements ShaderProcessingContext {\r\n /** @internal */\r\n public static _SimplifiedKnownBindings = true; // if true, use only group=0,binding=0 as a known group/binding for the Scene ubo and use group=1,binding=X for all other bindings\r\n // if false, see _KnownUBOs for the known groups/bindings used\r\n\r\n protected static _SimplifiedKnownUBOs: { [key: string]: WebGPUBufferDescription } = {\r\n Scene: { binding: { groupIndex: 0, bindingIndex: 0 } },\r\n Light0: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light1: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light2: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light3: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light4: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light5: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light6: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light7: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light8: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light9: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light10: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light11: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light12: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light13: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light14: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light15: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light16: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light17: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light18: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light19: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light20: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light21: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light22: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light23: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light24: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light25: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light26: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light27: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light28: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light29: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light30: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light31: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Material: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Mesh: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Internals: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n };\r\n\r\n protected static _KnownUBOs: { [key: string]: WebGPUBufferDescription } = {\r\n Scene: { binding: { groupIndex: 0, bindingIndex: 0 } },\r\n\r\n Light0: { binding: { groupIndex: 1, bindingIndex: 0 } },\r\n Light1: { binding: { groupIndex: 1, bindingIndex: 1 } },\r\n Light2: { binding: { groupIndex: 1, bindingIndex: 2 } },\r\n Light3: { binding: { groupIndex: 1, bindingIndex: 3 } },\r\n Light4: { binding: { groupIndex: 1, bindingIndex: 4 } },\r\n Light5: { binding: { groupIndex: 1, bindingIndex: 5 } },\r\n Light6: { binding: { groupIndex: 1, bindingIndex: 6 } },\r\n Light7: { binding: { groupIndex: 1, bindingIndex: 7 } },\r\n Light8: { binding: { groupIndex: 1, bindingIndex: 8 } },\r\n Light9: { binding: { groupIndex: 1, bindingIndex: 9 } },\r\n Light10: { binding: { groupIndex: 1, bindingIndex: 10 } },\r\n Light11: { binding: { groupIndex: 1, bindingIndex: 11 } },\r\n Light12: { binding: { groupIndex: 1, bindingIndex: 12 } },\r\n Light13: { binding: { groupIndex: 1, bindingIndex: 13 } },\r\n Light14: { binding: { groupIndex: 1, bindingIndex: 14 } },\r\n Light15: { binding: { groupIndex: 1, bindingIndex: 15 } },\r\n Light16: { binding: { groupIndex: 1, bindingIndex: 16 } },\r\n Light17: { binding: { groupIndex: 1, bindingIndex: 17 } },\r\n Light18: { binding: { groupIndex: 1, bindingIndex: 18 } },\r\n Light19: { binding: { groupIndex: 1, bindingIndex: 19 } },\r\n Light20: { binding: { groupIndex: 1, bindingIndex: 20 } },\r\n Light21: { binding: { groupIndex: 1, bindingIndex: 21 } },\r\n Light22: { binding: { groupIndex: 1, bindingIndex: 22 } },\r\n Light23: { binding: { groupIndex: 1, bindingIndex: 23 } },\r\n Light24: { binding: { groupIndex: 1, bindingIndex: 24 } },\r\n Light25: { binding: { groupIndex: 1, bindingIndex: 25 } },\r\n Light26: { binding: { groupIndex: 1, bindingIndex: 26 } },\r\n Light27: { binding: { groupIndex: 1, bindingIndex: 27 } },\r\n Light28: { binding: { groupIndex: 1, bindingIndex: 28 } },\r\n Light29: { binding: { groupIndex: 1, bindingIndex: 29 } },\r\n Light30: { binding: { groupIndex: 1, bindingIndex: 30 } },\r\n Light31: { binding: { groupIndex: 1, bindingIndex: 31 } },\r\n\r\n Material: { binding: { groupIndex: 2, bindingIndex: 0 } },\r\n Mesh: { binding: { groupIndex: 2, bindingIndex: 1 } },\r\n Internals: { binding: { groupIndex: 2, bindingIndex: 2 } },\r\n };\r\n\r\n public static get KnownUBOs() {\r\n return WebGPUShaderProcessingContext._SimplifiedKnownBindings ? WebGPUShaderProcessingContext._SimplifiedKnownUBOs : WebGPUShaderProcessingContext._KnownUBOs;\r\n }\r\n\r\n public shaderLanguage: ShaderLanguage;\r\n\r\n public uboNextBindingIndex: number;\r\n public freeGroupIndex: number;\r\n public freeBindingIndex: number;\r\n\r\n public availableVaryings: { [key: string]: number };\r\n public availableAttributes: { [key: string]: number };\r\n public availableBuffers: { [key: string]: WebGPUBufferDescription };\r\n public availableTextures: { [key: string]: WebGPUTextureDescription };\r\n public availableSamplers: { [key: string]: WebGPUSamplerDescription };\r\n\r\n public leftOverUniforms: { name: string; type: string; length: number }[];\r\n\r\n public orderedAttributes: string[];\r\n public bindGroupLayoutEntries: GPUBindGroupLayoutEntry[][];\r\n public bindGroupLayoutEntryInfo: WebGPUBindGroupLayoutEntryInfo[][];\r\n public bindGroupEntries: GPUBindGroupEntry[][];\r\n public bufferNames: string[]; // list of all uniform/storage buffer names used in the shader\r\n public textureNames: string[]; // list of all texture names used in the shader\r\n public samplerNames: string[]; // list of all sampler names used in the shader\r\n public attributeNamesFromEffect: string[];\r\n public attributeLocationsFromEffect: number[];\r\n\r\n private _attributeNextLocation: number;\r\n private _varyingNextLocation: number;\r\n\r\n constructor(shaderLanguage: ShaderLanguage) {\r\n this.shaderLanguage = shaderLanguage;\r\n\r\n this._attributeNextLocation = 0;\r\n this._varyingNextLocation = 0;\r\n this.freeGroupIndex = 0;\r\n this.freeBindingIndex = 0;\r\n\r\n this.availableVaryings = {};\r\n this.availableAttributes = {};\r\n this.availableBuffers = {};\r\n this.availableTextures = {};\r\n this.availableSamplers = {};\r\n\r\n this.orderedAttributes = [];\r\n this.bindGroupLayoutEntries = [];\r\n this.bindGroupLayoutEntryInfo = [];\r\n this.bindGroupEntries = [];\r\n this.bufferNames = [];\r\n this.textureNames = [];\r\n this.samplerNames = [];\r\n\r\n this.leftOverUniforms = [];\r\n\r\n this._findStartingGroupBinding();\r\n }\r\n\r\n private _findStartingGroupBinding(): void {\r\n const knownUBOs = WebGPUShaderProcessingContext.KnownUBOs;\r\n\r\n const groups: number[] = [];\r\n for (const name in knownUBOs) {\r\n const binding = knownUBOs[name].binding;\r\n if (binding.groupIndex === -1) {\r\n continue;\r\n }\r\n if (groups[binding.groupIndex] === undefined) {\r\n groups[binding.groupIndex] = binding.bindingIndex;\r\n } else {\r\n groups[binding.groupIndex] = Math.max(groups[binding.groupIndex], binding.bindingIndex);\r\n }\r\n }\r\n\r\n this.freeGroupIndex = groups.length - 1;\r\n if (this.freeGroupIndex === 0) {\r\n this.freeGroupIndex++;\r\n this.freeBindingIndex = 0;\r\n } else {\r\n this.freeBindingIndex = groups[groups.length - 1] + 1;\r\n }\r\n }\r\n\r\n public getAttributeNextLocation(dataType: string, arrayLength: number = 0): number {\r\n const index = this._attributeNextLocation;\r\n\r\n this._attributeNextLocation += (_typeToLocationSize[dataType] ?? 1) * (arrayLength || 1);\r\n\r\n return index;\r\n }\r\n\r\n public getVaryingNextLocation(dataType: string, arrayLength: number = 0): number {\r\n const index = this._varyingNextLocation;\r\n\r\n this._varyingNextLocation += (_typeToLocationSize[dataType] ?? 1) * (arrayLength || 1);\r\n\r\n return index;\r\n }\r\n\r\n public getNextFreeUBOBinding() {\r\n return this._getNextFreeBinding(1);\r\n }\r\n\r\n private _getNextFreeBinding(bindingCount: number) {\r\n if (this.freeBindingIndex > _maxBindingsPerGroup - bindingCount) {\r\n this.freeGroupIndex++;\r\n this.freeBindingIndex = 0;\r\n }\r\n\r\n if (this.freeGroupIndex === _maxGroups) {\r\n throw \"Too many textures or UBOs have been declared and it is not supported in WebGPU.\";\r\n }\r\n\r\n const returnValue = {\r\n groupIndex: this.freeGroupIndex,\r\n bindingIndex: this.freeBindingIndex,\r\n };\r\n\r\n this.freeBindingIndex += bindingCount;\r\n\r\n return returnValue;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webgpuShaderProcessingContext.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuShaderProcessingContext.ts"],"names":[],"mappings":"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AU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3D,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACvD,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;CAC/D,CAAC;AAEe,wCAAU,GAA+C;IACtE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IAEtD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACvD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IACzD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;IAEzD,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACzD,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;IACrD,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;CAC7D,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\nimport type { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\n\r\nconst _maxGroups = 4;\r\nconst _maxBindingsPerGroup = 1 << 16;\r\n\r\n// all types not listed are assumed to consume 1 location\r\nconst _typeToLocationSize: { [key: string]: number } = {\r\n // GLSL types\r\n mat2: 2,\r\n mat3: 3,\r\n mat4: 4,\r\n\r\n // WGSL types\r\n mat2x2: 2,\r\n mat3x3: 3,\r\n mat4x4: 4,\r\n};\r\n\r\n/** @internal */\r\nexport interface WebGPUBindingInfo {\r\n groupIndex: number;\r\n bindingIndex: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUTextureDescription {\r\n autoBindSampler?: boolean;\r\n isTextureArray: boolean;\r\n isStorageTexture: boolean;\r\n textures: Array<WebGPUBindingInfo>;\r\n sampleType?: GPUTextureSampleType; // not used if the texture is a storage texture\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUSamplerDescription {\r\n binding: WebGPUBindingInfo;\r\n type: GPUSamplerBindingType;\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUBufferDescription {\r\n binding: WebGPUBindingInfo;\r\n}\r\n\r\n/** @internal */\r\nexport interface WebGPUBindGroupLayoutEntryInfo {\r\n name: string;\r\n index: number; // index of the entry (GPUBindGroupLayoutEntry) in the bindGroupLayoutEntries[group] array\r\n nameInArrayOfTexture?: string; // something like texture0, texture1, ... if texture is an array, else same thing as \"name\"\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class WebGPUShaderProcessingContext implements ShaderProcessingContext {\r\n /** @internal */\r\n public static _SimplifiedKnownBindings = true; // if true, use only group=0,binding=0 as a known group/binding for the Scene ubo and use group=1,binding=X for all other bindings\r\n // if false, see _KnownUBOs for the known groups/bindings used\r\n\r\n protected static _SimplifiedKnownUBOs: { [key: string]: WebGPUBufferDescription } = {\r\n Scene: { binding: { groupIndex: 0, bindingIndex: 0 } },\r\n Light0: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light1: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light2: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light3: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light4: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light5: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light6: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light7: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light8: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light9: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light10: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light11: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light12: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light13: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light14: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light15: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light16: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light17: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light18: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light19: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light20: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light21: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light22: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light23: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light24: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light25: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light26: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light27: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light28: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light29: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light30: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Light31: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Material: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Mesh: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n Internals: { binding: { groupIndex: -1, bindingIndex: -1 } },\r\n };\r\n\r\n protected static _KnownUBOs: { [key: string]: WebGPUBufferDescription } = {\r\n Scene: { binding: { groupIndex: 0, bindingIndex: 0 } },\r\n\r\n Light0: { binding: { groupIndex: 1, bindingIndex: 0 } },\r\n Light1: { binding: { groupIndex: 1, bindingIndex: 1 } },\r\n Light2: { binding: { groupIndex: 1, bindingIndex: 2 } },\r\n Light3: { binding: { groupIndex: 1, bindingIndex: 3 } },\r\n Light4: { binding: { groupIndex: 1, bindingIndex: 4 } },\r\n Light5: { binding: { groupIndex: 1, bindingIndex: 5 } },\r\n Light6: { binding: { groupIndex: 1, bindingIndex: 6 } },\r\n Light7: { binding: { groupIndex: 1, bindingIndex: 7 } },\r\n Light8: { binding: { groupIndex: 1, bindingIndex: 8 } },\r\n Light9: { binding: { groupIndex: 1, bindingIndex: 9 } },\r\n Light10: { binding: { groupIndex: 1, bindingIndex: 10 } },\r\n Light11: { binding: { groupIndex: 1, bindingIndex: 11 } },\r\n Light12: { binding: { groupIndex: 1, bindingIndex: 12 } },\r\n Light13: { binding: { groupIndex: 1, bindingIndex: 13 } },\r\n Light14: { binding: { groupIndex: 1, bindingIndex: 14 } },\r\n Light15: { binding: { groupIndex: 1, bindingIndex: 15 } },\r\n Light16: { binding: { groupIndex: 1, bindingIndex: 16 } },\r\n Light17: { binding: { groupIndex: 1, bindingIndex: 17 } },\r\n Light18: { binding: { groupIndex: 1, bindingIndex: 18 } },\r\n Light19: { binding: { groupIndex: 1, bindingIndex: 19 } },\r\n Light20: { binding: { groupIndex: 1, bindingIndex: 20 } },\r\n Light21: { binding: { groupIndex: 1, bindingIndex: 21 } },\r\n Light22: { binding: { groupIndex: 1, bindingIndex: 22 } },\r\n Light23: { binding: { groupIndex: 1, bindingIndex: 23 } },\r\n Light24: { binding: { groupIndex: 1, bindingIndex: 24 } },\r\n Light25: { binding: { groupIndex: 1, bindingIndex: 25 } },\r\n Light26: { binding: { groupIndex: 1, bindingIndex: 26 } },\r\n Light27: { binding: { groupIndex: 1, bindingIndex: 27 } },\r\n Light28: { binding: { groupIndex: 1, bindingIndex: 28 } },\r\n Light29: { binding: { groupIndex: 1, bindingIndex: 29 } },\r\n Light30: { binding: { groupIndex: 1, bindingIndex: 30 } },\r\n Light31: { binding: { groupIndex: 1, bindingIndex: 31 } },\r\n\r\n Material: { binding: { groupIndex: 2, bindingIndex: 0 } },\r\n Mesh: { binding: { groupIndex: 2, bindingIndex: 1 } },\r\n Internals: { binding: { groupIndex: 2, bindingIndex: 2 } },\r\n };\r\n\r\n public static get KnownUBOs() {\r\n return WebGPUShaderProcessingContext._SimplifiedKnownBindings ? WebGPUShaderProcessingContext._SimplifiedKnownUBOs : WebGPUShaderProcessingContext._KnownUBOs;\r\n }\r\n\r\n public shaderLanguage: ShaderLanguage;\r\n\r\n public uboNextBindingIndex: number;\r\n public freeGroupIndex: number;\r\n public freeBindingIndex: number;\r\n\r\n public availableVaryings: { [key: string]: number };\r\n public availableAttributes: { [key: string]: number };\r\n public availableBuffers: { [key: string]: WebGPUBufferDescription };\r\n public availableTextures: { [key: string]: WebGPUTextureDescription };\r\n public availableSamplers: { [key: string]: WebGPUSamplerDescription };\r\n\r\n public leftOverUniforms: { name: string; type: string; length: number }[];\r\n\r\n public orderedAttributes: string[];\r\n public bindGroupLayoutEntries: GPUBindGroupLayoutEntry[][];\r\n public bindGroupLayoutEntryInfo: WebGPUBindGroupLayoutEntryInfo[][];\r\n public bindGroupEntries: GPUBindGroupEntry[][];\r\n public bufferNames: string[]; // list of all uniform/storage buffer names used in the shader\r\n public textureNames: string[]; // list of all texture names used in the shader\r\n public samplerNames: string[]; // list of all sampler names used in the shader\r\n public attributeNamesFromEffect: string[];\r\n public attributeLocationsFromEffect: number[];\r\n\r\n private _attributeNextLocation: number;\r\n private _varyingNextLocation: number;\r\n\r\n constructor(shaderLanguage: ShaderLanguage) {\r\n this.shaderLanguage = shaderLanguage;\r\n\r\n this._attributeNextLocation = 0;\r\n this._varyingNextLocation = 0;\r\n this.freeGroupIndex = 0;\r\n this.freeBindingIndex = 0;\r\n\r\n this.availableVaryings = {};\r\n this.availableAttributes = {};\r\n this.availableBuffers = {};\r\n this.availableTextures = {};\r\n this.availableSamplers = {};\r\n\r\n this.orderedAttributes = [];\r\n this.bindGroupLayoutEntries = [];\r\n this.bindGroupLayoutEntryInfo = [];\r\n this.bindGroupEntries = [];\r\n this.bufferNames = [];\r\n this.textureNames = [];\r\n this.samplerNames = [];\r\n\r\n this.leftOverUniforms = [];\r\n\r\n this._findStartingGroupBinding();\r\n }\r\n\r\n private _findStartingGroupBinding(): void {\r\n const knownUBOs = WebGPUShaderProcessingContext.KnownUBOs;\r\n\r\n const groups: number[] = [];\r\n for (const name in knownUBOs) {\r\n const binding = knownUBOs[name].binding;\r\n if (binding.groupIndex === -1) {\r\n continue;\r\n }\r\n if (groups[binding.groupIndex] === undefined) {\r\n groups[binding.groupIndex] = binding.bindingIndex;\r\n } else {\r\n groups[binding.groupIndex] = Math.max(groups[binding.groupIndex], binding.bindingIndex);\r\n }\r\n }\r\n\r\n this.freeGroupIndex = groups.length - 1;\r\n if (this.freeGroupIndex === 0) {\r\n this.freeGroupIndex++;\r\n this.freeBindingIndex = 0;\r\n } else {\r\n this.freeBindingIndex = groups[groups.length - 1] + 1;\r\n }\r\n }\r\n\r\n public getAttributeNextLocation(dataType: string, arrayLength: number = 0): number {\r\n const index = this._attributeNextLocation;\r\n\r\n this._attributeNextLocation += (_typeToLocationSize[dataType] ?? 1) * (arrayLength || 1);\r\n\r\n return index;\r\n }\r\n\r\n public getVaryingNextLocation(dataType: string, arrayLength: number = 0): number {\r\n const index = this._varyingNextLocation;\r\n\r\n this._varyingNextLocation += (_typeToLocationSize[dataType] ?? 1) * (arrayLength || 1);\r\n\r\n return index;\r\n }\r\n\r\n public getNextFreeUBOBinding() {\r\n return this._getNextFreeBinding(1);\r\n }\r\n\r\n private _getNextFreeBinding(bindingCount: number) {\r\n if (this.freeBindingIndex > _maxBindingsPerGroup - bindingCount) {\r\n this.freeGroupIndex++;\r\n this.freeBindingIndex = 0;\r\n }\r\n\r\n if (this.freeGroupIndex === _maxGroups) {\r\n throw \"Too many textures or UBOs have been declared and it is not supported in WebGPU.\";\r\n }\r\n\r\n const returnValue = {\r\n groupIndex: this.freeGroupIndex,\r\n bindingIndex: this.freeBindingIndex,\r\n };\r\n\r\n this.freeBindingIndex += bindingCount;\r\n\r\n return returnValue;\r\n }\r\n}\r\n"]}
|
|
@@ -76,6 +76,7 @@ export class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {
|
|
|
76
76
|
return attribute;
|
|
77
77
|
}
|
|
78
78
|
uniformProcessor(uniform, isFragment, preProcessors) {
|
|
79
|
+
var _a;
|
|
79
80
|
this._preProcessors = preProcessors;
|
|
80
81
|
const uniformRegex = /\s*uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm;
|
|
81
82
|
const match = uniformRegex.exec(uniform);
|
|
@@ -98,7 +99,7 @@ export class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {
|
|
|
98
99
|
textureInfo.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding());
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
|
-
const samplerType = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType]
|
|
102
|
+
const samplerType = (_a = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType]) !== null && _a !== void 0 ? _a : "sampler";
|
|
102
103
|
const isComparisonSampler = !!WebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType[samplerType];
|
|
103
104
|
const samplerBindingType = isComparisonSampler ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;
|
|
104
105
|
const samplerName = name + WebGPUShaderProcessor.AutoSamplerSuffix;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuShaderProcessorsGLSL.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuShaderProcessorsGLSL.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\nimport type { WebGPUBufferDescription } from \"./webgpuShaderProcessingContext\";\r\nimport { WebGPUShaderProcessingContext } from \"./webgpuShaderProcessingContext\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport type { ThinEngine } from \"../thinEngine\";\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\n/** @internal */\r\nexport class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {\r\n protected _missingVaryings: Array<string> = [];\r\n protected _textureArrayProcessing: Array<string> = [];\r\n protected _preProcessors: { [key: string]: string };\r\n\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n protected _getArraySize(name: string, type: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n const startArray = name.indexOf(\"[\");\r\n const endArray = name.indexOf(\"]\");\r\n if (startArray > 0 && endArray > 0) {\r\n const lengthInString = name.substring(startArray + 1, endArray);\r\n length = +lengthInString;\r\n if (isNaN(length)) {\r\n length = +preProcessors[lengthInString.trim()];\r\n }\r\n name = name.substr(0, startArray);\r\n }\r\n return [name, type, length];\r\n }\r\n\r\n public initializeShaders(processingContext: Nullable<ShaderProcessingContext>): void {\r\n this._webgpuProcessingContext = processingContext as WebGPUShaderProcessingContext;\r\n\r\n this._missingVaryings.length = 0;\r\n this._textureArrayProcessing.length = 0;\r\n }\r\n\r\n public preProcessShaderCode(code: string, isFragment: boolean): string {\r\n const ubDeclaration = `uniform ${WebGPUShaderProcessor.InternalsUBOName} {\\nfloat yFactor_;\\nfloat textureOutputHeight_;\\n};\\n`;\r\n\r\n if (isFragment) {\r\n return ubDeclaration + \"##INJECTCODE##\\n\" + code;\r\n }\r\n return ubDeclaration + code;\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }) {\r\n this._preProcessors = preProcessors;\r\n\r\n const varyingRegex = /\\s*varying\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\r\n const match = varyingRegex.exec(varying);\r\n if (match != null) {\r\n const varyingType = match[1];\r\n const name = match[2];\r\n let location: number;\r\n if (isFragment) {\r\n location = this._webgpuProcessingContext.availableVaryings[name];\r\n this._missingVaryings[location] = \"\";\r\n if (location === undefined) {\r\n Logger.Warn(`Invalid fragment shader: The varying named \"${name}\" is not declared in the vertex shader! This declaration will be ignored.`);\r\n }\r\n } else {\r\n location = this._webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name, varyingType, preProcessors)[2]);\r\n this._webgpuProcessingContext.availableVaryings[name] = location;\r\n this._missingVaryings[location] = `layout(location = ${location}) in ${varyingType} ${name};`;\r\n }\r\n\r\n varying = varying.replace(match[0], location === undefined ? \"\" : `layout(location = ${location}) ${isFragment ? \"in\" : \"out\"} ${varyingType} ${name};`);\r\n }\r\n return varying;\r\n }\r\n\r\n public attributeProcessor(attribute: string, preProcessors: { [key: string]: string }) {\r\n this._preProcessors = preProcessors;\r\n\r\n const attribRegex = /\\s*attribute\\s+(\\S+)\\s+(\\S+)\\s*;/gm;\r\n const match = attribRegex.exec(attribute);\r\n if (match != null) {\r\n const attributeType = match[1];\r\n const name = match[2];\r\n const location = this._webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name, attributeType, preProcessors)[2]);\r\n\r\n this._webgpuProcessingContext.availableAttributes[name] = location;\r\n this._webgpuProcessingContext.orderedAttributes[location] = name;\r\n\r\n attribute = attribute.replace(match[0], `layout(location = ${location}) in ${attributeType} ${name};`);\r\n }\r\n return attribute;\r\n }\r\n\r\n public uniformProcessor(uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }): string {\r\n this._preProcessors = preProcessors;\r\n\r\n const uniformRegex = /\\s*uniform\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\r\n\r\n const match = uniformRegex.exec(uniform);\r\n if (match != null) {\r\n let uniformType = match[1];\r\n let name = match[2];\r\n\r\n if (uniformType.indexOf(\"sampler\") === 0 || uniformType.indexOf(\"sampler\") === 1) {\r\n let arraySize = 0; // 0 means the texture is not declared as an array\r\n\r\n [name, uniformType, arraySize] = this._getArraySize(name, uniformType, preProcessors);\r\n\r\n let textureInfo = this._webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n autoBindSampler: true,\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture: false,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n for (let i = 0; i < (arraySize || 1); ++i) {\r\n textureInfo.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n }\r\n\r\n const samplerType = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType] ?? \"sampler\";\r\n const isComparisonSampler = !!WebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType[samplerType];\r\n const samplerBindingType = isComparisonSampler ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n const samplerName = name + WebGPUShaderProcessor.AutoSamplerSuffix;\r\n\r\n let samplerInfo = this._webgpuProcessingContext.availableSamplers[samplerName];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n }\r\n\r\n const componentType = uniformType.charAt(0) === \"u\" ? \"u\" : uniformType.charAt(0) === \"i\" ? \"i\" : \"\";\r\n\r\n if (componentType) {\r\n uniformType = uniformType.substr(1);\r\n }\r\n\r\n const sampleType = isComparisonSampler\r\n ? WebGPUConstants.TextureSampleType.Depth\r\n : componentType === \"u\"\r\n ? WebGPUConstants.TextureSampleType.Uint\r\n : componentType === \"i\"\r\n ? WebGPUConstants.TextureSampleType.Sint\r\n : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n const isTextureArray = arraySize > 0;\r\n const samplerGroupIndex = samplerInfo.binding.groupIndex;\r\n const samplerBindingIndex = samplerInfo.binding.bindingIndex;\r\n const samplerFunction = WebGPUShaderProcessor._SamplerFunctionByWebGLSamplerType[uniformType];\r\n const textureType = WebGPUShaderProcessor._TextureTypeByWebGLSamplerType[uniformType];\r\n const textureDimension = WebGPUShaderProcessor._GpuTextureViewDimensionByWebGPUTextureType[textureType];\r\n\r\n // Manage textures and samplers.\r\n if (!isTextureArray) {\r\n arraySize = 1;\r\n uniform = `layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};\r\n layout(set = ${textureInfo.textures[0].groupIndex}, binding = ${textureInfo.textures[0].bindingIndex}) uniform ${textureType} ${name}Texture;\r\n #define ${name} ${componentType}${samplerFunction}(${name}Texture, ${samplerName})`;\r\n } else {\r\n const layouts = [];\r\n layouts.push(`layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};`);\r\n uniform = `\\r\\n`;\r\n for (let i = 0; i < arraySize; ++i) {\r\n const textureSetIndex = textureInfo.textures[i].groupIndex;\r\n const textureBindingIndex = textureInfo.textures[i].bindingIndex;\r\n\r\n layouts.push(`layout(set = ${textureSetIndex}, binding = ${textureBindingIndex}) uniform ${textureType} ${name}Texture${i};`);\r\n\r\n uniform += `${i > 0 ? \"\\r\\n\" : \"\"}#define ${name}${i} ${componentType}${samplerFunction}(${name}Texture${i}, ${samplerName})`;\r\n }\r\n uniform = layouts.join(\"\\r\\n\") + uniform;\r\n this._textureArrayProcessing.push(name);\r\n }\r\n\r\n this._webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n this._webgpuProcessingContext.availableSamplers[samplerName] = samplerInfo;\r\n\r\n this._addSamplerBindingDescription(samplerName, samplerInfo, !isFragment);\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, null, !isFragment);\r\n }\r\n } else {\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n uniform = \"\";\r\n }\r\n }\r\n return uniform;\r\n }\r\n\r\n public uniformBufferProcessor(uniformBuffer: string, isFragment: boolean): string {\r\n const uboRegex = /uniform\\s+(\\w+)/gm;\r\n\r\n const match = uboRegex.exec(uniformBuffer);\r\n if (match != null) {\r\n const name = match[1];\r\n\r\n let uniformBufferInfo = this._webgpuProcessingContext.availableBuffers[name];\r\n if (!uniformBufferInfo) {\r\n const knownUBO = WebGPUShaderProcessingContext.KnownUBOs[name];\r\n\r\n let binding;\r\n if (knownUBO && knownUBO.binding.groupIndex !== -1) {\r\n binding = knownUBO.binding;\r\n } else {\r\n binding = this._webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n uniformBufferInfo = { binding };\r\n this._webgpuProcessingContext.availableBuffers[name] = uniformBufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, uniformBufferInfo, WebGPUConstants.BufferBindingType.Uniform, !isFragment);\r\n\r\n uniformBuffer = uniformBuffer.replace(\"uniform\", `layout(set = ${uniformBufferInfo.binding.groupIndex}, binding = ${uniformBufferInfo.binding.bindingIndex}) uniform`);\r\n }\r\n return uniformBuffer;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n const hasDrawBuffersExtension = code.search(/#extension.+GL_EXT_draw_buffers.+require/) !== -1;\r\n\r\n // Remove extensions\r\n const regex = /#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\r\n code = code.replace(regex, \"\");\r\n\r\n // Replace instructions\r\n code = code.replace(/texture2D\\s*\\(/g, \"texture(\");\r\n if (isFragment) {\r\n const hasFragCoord = code.indexOf(\"gl_FragCoord\") >= 0;\r\n const fragCoordCode = `\r\n glFragCoord_ = gl_FragCoord;\r\n if (yFactor_ == 1.) {\r\n glFragCoord_.y = textureOutputHeight_ - glFragCoord_.y;\r\n }\r\n `;\r\n\r\n const injectCode = hasFragCoord ? \"vec4 glFragCoord_;\\n\" : \"\";\r\n\r\n code = code.replace(/texture2DLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCubeLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCube\\s*\\(/g, \"texture(\");\r\n code = code.replace(/gl_FragDepthEXT/g, \"gl_FragDepth\");\r\n code = code.replace(/gl_FragColor/g, \"glFragColor\");\r\n code = code.replace(/gl_FragData/g, \"glFragData\");\r\n code = code.replace(/gl_FragCoord/g, \"glFragCoord_\");\r\n code = code.replace(/void\\s+?main\\s*\\(/g, (hasDrawBuffersExtension ? \"\" : \"layout(location = 0) out vec4 glFragColor;\\n\") + \"void main(\");\r\n code = code.replace(/dFdy/g, \"(-yFactor_)*dFdy\"); // will also handle dFdyCoarse and dFdyFine\r\n code = code.replace(\"##INJECTCODE##\", injectCode);\r\n\r\n if (hasFragCoord) {\r\n code = this._injectStartingAndEndingCode(code, \"void main\", fragCoordCode);\r\n }\r\n } else {\r\n code = code.replace(/gl_InstanceID/g, \"gl_InstanceIndex\");\r\n code = code.replace(/gl_VertexID/g, \"gl_VertexIndex\");\r\n const hasMultiviewExtension = defines.indexOf(\"#define MULTIVIEW\") !== -1;\r\n if (hasMultiviewExtension) {\r\n return \"#extension GL_OVR_multiview2 : require\\nlayout (num_views = 2) in;\\n\" + code;\r\n }\r\n }\r\n\r\n // Flip Y + convert z range from [-1,1] to [0,1]\r\n if (!isFragment) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += \"gl_Position.y *= yFactor_;\\n\";\r\n if (!engine.isNDCHalfZRange) {\r\n code += \"gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0;\\n\";\r\n }\r\n code += \"}\";\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _applyTextureArrayProcessing(code: string, name: string): string {\r\n // Replaces the occurrences of name[XX] by nameXX\r\n const regex = new RegExp(name + \"\\\\s*\\\\[(.+)?\\\\]\", \"gm\");\r\n let match = regex.exec(code);\r\n\r\n while (match != null) {\r\n const index = match[1];\r\n let iindex = +index;\r\n if (this._preProcessors && isNaN(iindex)) {\r\n iindex = +this._preProcessors[index.trim()];\r\n }\r\n code = code.replace(match[0], name + iindex);\r\n match = regex.exec(code);\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `layout(set = ${uniformBufferDescription.binding.groupIndex}, binding = ${uniformBufferDescription.binding.bindingIndex}) uniform ${name} {\\n `;\r\n for (const leftOverUniform of this._webgpuProcessingContext.leftOverUniforms) {\r\n if (leftOverUniform.length > 0) {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name}[${leftOverUniform.length}];\\n`;\r\n } else {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\\n\";\r\n\r\n return ubo;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string): { vertexCode: string; fragmentCode: string } {\r\n // make replacements for texture names in the texture array case\r\n for (let i = 0; i < this._textureArrayProcessing.length; ++i) {\r\n const name = this._textureArrayProcessing[i];\r\n vertexCode = this._applyTextureArrayProcessing(vertexCode, name);\r\n fragmentCode = this._applyTextureArrayProcessing(fragmentCode, name);\r\n }\r\n\r\n // inject the missing varying in the fragment shader\r\n for (let i = 0; i < this._missingVaryings.length; ++i) {\r\n const decl = this._missingVaryings[i];\r\n if (decl && decl.length > 0) {\r\n fragmentCode = decl + \"\\n\" + fragmentCode;\r\n }\r\n }\r\n\r\n // Builds the leftover UBOs.\r\n const leftOverUBO = this._buildLeftOverUBO();\r\n\r\n vertexCode = leftOverUBO + vertexCode;\r\n fragmentCode = leftOverUBO + fragmentCode;\r\n\r\n this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n this._preProcessors = null as any;\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webgpuShaderProcessorsGLSL.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuShaderProcessorsGLSL.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\nimport type { WebGPUBufferDescription } from \"./webgpuShaderProcessingContext\";\r\nimport { WebGPUShaderProcessingContext } from \"./webgpuShaderProcessingContext\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport type { ThinEngine } from \"../thinEngine\";\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\n/** @internal */\r\nexport class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {\r\n protected _missingVaryings: Array<string> = [];\r\n protected _textureArrayProcessing: Array<string> = [];\r\n protected _preProcessors: { [key: string]: string };\r\n\r\n public shaderLanguage = ShaderLanguage.GLSL;\r\n\r\n protected _getArraySize(name: string, type: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n const startArray = name.indexOf(\"[\");\r\n const endArray = name.indexOf(\"]\");\r\n if (startArray > 0 && endArray > 0) {\r\n const lengthInString = name.substring(startArray + 1, endArray);\r\n length = +lengthInString;\r\n if (isNaN(length)) {\r\n length = +preProcessors[lengthInString.trim()];\r\n }\r\n name = name.substr(0, startArray);\r\n }\r\n return [name, type, length];\r\n }\r\n\r\n public initializeShaders(processingContext: Nullable<ShaderProcessingContext>): void {\r\n this._webgpuProcessingContext = processingContext as WebGPUShaderProcessingContext;\r\n\r\n this._missingVaryings.length = 0;\r\n this._textureArrayProcessing.length = 0;\r\n }\r\n\r\n public preProcessShaderCode(code: string, isFragment: boolean): string {\r\n const ubDeclaration = `uniform ${WebGPUShaderProcessor.InternalsUBOName} {\\nfloat yFactor_;\\nfloat textureOutputHeight_;\\n};\\n`;\r\n\r\n if (isFragment) {\r\n return ubDeclaration + \"##INJECTCODE##\\n\" + code;\r\n }\r\n return ubDeclaration + code;\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }) {\r\n this._preProcessors = preProcessors;\r\n\r\n const varyingRegex = /\\s*varying\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\r\n const match = varyingRegex.exec(varying);\r\n if (match != null) {\r\n const varyingType = match[1];\r\n const name = match[2];\r\n let location: number;\r\n if (isFragment) {\r\n location = this._webgpuProcessingContext.availableVaryings[name];\r\n this._missingVaryings[location] = \"\";\r\n if (location === undefined) {\r\n Logger.Warn(`Invalid fragment shader: The varying named \"${name}\" is not declared in the vertex shader! This declaration will be ignored.`);\r\n }\r\n } else {\r\n location = this._webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name, varyingType, preProcessors)[2]);\r\n this._webgpuProcessingContext.availableVaryings[name] = location;\r\n this._missingVaryings[location] = `layout(location = ${location}) in ${varyingType} ${name};`;\r\n }\r\n\r\n varying = varying.replace(match[0], location === undefined ? \"\" : `layout(location = ${location}) ${isFragment ? \"in\" : \"out\"} ${varyingType} ${name};`);\r\n }\r\n return varying;\r\n }\r\n\r\n public attributeProcessor(attribute: string, preProcessors: { [key: string]: string }) {\r\n this._preProcessors = preProcessors;\r\n\r\n const attribRegex = /\\s*attribute\\s+(\\S+)\\s+(\\S+)\\s*;/gm;\r\n const match = attribRegex.exec(attribute);\r\n if (match != null) {\r\n const attributeType = match[1];\r\n const name = match[2];\r\n const location = this._webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name, attributeType, preProcessors)[2]);\r\n\r\n this._webgpuProcessingContext.availableAttributes[name] = location;\r\n this._webgpuProcessingContext.orderedAttributes[location] = name;\r\n\r\n attribute = attribute.replace(match[0], `layout(location = ${location}) in ${attributeType} ${name};`);\r\n }\r\n return attribute;\r\n }\r\n\r\n public uniformProcessor(uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }): string {\r\n this._preProcessors = preProcessors;\r\n\r\n const uniformRegex = /\\s*uniform\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\r\n\r\n const match = uniformRegex.exec(uniform);\r\n if (match != null) {\r\n let uniformType = match[1];\r\n let name = match[2];\r\n\r\n if (uniformType.indexOf(\"sampler\") === 0 || uniformType.indexOf(\"sampler\") === 1) {\r\n let arraySize = 0; // 0 means the texture is not declared as an array\r\n\r\n [name, uniformType, arraySize] = this._getArraySize(name, uniformType, preProcessors);\r\n\r\n let textureInfo = this._webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n autoBindSampler: true,\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture: false,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n for (let i = 0; i < (arraySize || 1); ++i) {\r\n textureInfo.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n }\r\n\r\n const samplerType = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType] ?? \"sampler\";\r\n const isComparisonSampler = !!WebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType[samplerType];\r\n const samplerBindingType = isComparisonSampler ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n const samplerName = name + WebGPUShaderProcessor.AutoSamplerSuffix;\r\n\r\n let samplerInfo = this._webgpuProcessingContext.availableSamplers[samplerName];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n }\r\n\r\n const componentType = uniformType.charAt(0) === \"u\" ? \"u\" : uniformType.charAt(0) === \"i\" ? \"i\" : \"\";\r\n\r\n if (componentType) {\r\n uniformType = uniformType.substr(1);\r\n }\r\n\r\n const sampleType = isComparisonSampler\r\n ? WebGPUConstants.TextureSampleType.Depth\r\n : componentType === \"u\"\r\n ? WebGPUConstants.TextureSampleType.Uint\r\n : componentType === \"i\"\r\n ? WebGPUConstants.TextureSampleType.Sint\r\n : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n const isTextureArray = arraySize > 0;\r\n const samplerGroupIndex = samplerInfo.binding.groupIndex;\r\n const samplerBindingIndex = samplerInfo.binding.bindingIndex;\r\n const samplerFunction = WebGPUShaderProcessor._SamplerFunctionByWebGLSamplerType[uniformType];\r\n const textureType = WebGPUShaderProcessor._TextureTypeByWebGLSamplerType[uniformType];\r\n const textureDimension = WebGPUShaderProcessor._GpuTextureViewDimensionByWebGPUTextureType[textureType];\r\n\r\n // Manage textures and samplers.\r\n if (!isTextureArray) {\r\n arraySize = 1;\r\n uniform = `layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};\r\n layout(set = ${textureInfo.textures[0].groupIndex}, binding = ${textureInfo.textures[0].bindingIndex}) uniform ${textureType} ${name}Texture;\r\n #define ${name} ${componentType}${samplerFunction}(${name}Texture, ${samplerName})`;\r\n } else {\r\n const layouts = [];\r\n layouts.push(`layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};`);\r\n uniform = `\\r\\n`;\r\n for (let i = 0; i < arraySize; ++i) {\r\n const textureSetIndex = textureInfo.textures[i].groupIndex;\r\n const textureBindingIndex = textureInfo.textures[i].bindingIndex;\r\n\r\n layouts.push(`layout(set = ${textureSetIndex}, binding = ${textureBindingIndex}) uniform ${textureType} ${name}Texture${i};`);\r\n\r\n uniform += `${i > 0 ? \"\\r\\n\" : \"\"}#define ${name}${i} ${componentType}${samplerFunction}(${name}Texture${i}, ${samplerName})`;\r\n }\r\n uniform = layouts.join(\"\\r\\n\") + uniform;\r\n this._textureArrayProcessing.push(name);\r\n }\r\n\r\n this._webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n this._webgpuProcessingContext.availableSamplers[samplerName] = samplerInfo;\r\n\r\n this._addSamplerBindingDescription(samplerName, samplerInfo, !isFragment);\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, null, !isFragment);\r\n }\r\n } else {\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n uniform = \"\";\r\n }\r\n }\r\n return uniform;\r\n }\r\n\r\n public uniformBufferProcessor(uniformBuffer: string, isFragment: boolean): string {\r\n const uboRegex = /uniform\\s+(\\w+)/gm;\r\n\r\n const match = uboRegex.exec(uniformBuffer);\r\n if (match != null) {\r\n const name = match[1];\r\n\r\n let uniformBufferInfo = this._webgpuProcessingContext.availableBuffers[name];\r\n if (!uniformBufferInfo) {\r\n const knownUBO = WebGPUShaderProcessingContext.KnownUBOs[name];\r\n\r\n let binding;\r\n if (knownUBO && knownUBO.binding.groupIndex !== -1) {\r\n binding = knownUBO.binding;\r\n } else {\r\n binding = this._webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n uniformBufferInfo = { binding };\r\n this._webgpuProcessingContext.availableBuffers[name] = uniformBufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, uniformBufferInfo, WebGPUConstants.BufferBindingType.Uniform, !isFragment);\r\n\r\n uniformBuffer = uniformBuffer.replace(\"uniform\", `layout(set = ${uniformBufferInfo.binding.groupIndex}, binding = ${uniformBufferInfo.binding.bindingIndex}) uniform`);\r\n }\r\n return uniformBuffer;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n const hasDrawBuffersExtension = code.search(/#extension.+GL_EXT_draw_buffers.+require/) !== -1;\r\n\r\n // Remove extensions\r\n const regex = /#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\r\n code = code.replace(regex, \"\");\r\n\r\n // Replace instructions\r\n code = code.replace(/texture2D\\s*\\(/g, \"texture(\");\r\n if (isFragment) {\r\n const hasFragCoord = code.indexOf(\"gl_FragCoord\") >= 0;\r\n const fragCoordCode = `\r\n glFragCoord_ = gl_FragCoord;\r\n if (yFactor_ == 1.) {\r\n glFragCoord_.y = textureOutputHeight_ - glFragCoord_.y;\r\n }\r\n `;\r\n\r\n const injectCode = hasFragCoord ? \"vec4 glFragCoord_;\\n\" : \"\";\r\n\r\n code = code.replace(/texture2DLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCubeLodEXT\\s*\\(/g, \"textureLod(\");\r\n code = code.replace(/textureCube\\s*\\(/g, \"texture(\");\r\n code = code.replace(/gl_FragDepthEXT/g, \"gl_FragDepth\");\r\n code = code.replace(/gl_FragColor/g, \"glFragColor\");\r\n code = code.replace(/gl_FragData/g, \"glFragData\");\r\n code = code.replace(/gl_FragCoord/g, \"glFragCoord_\");\r\n code = code.replace(/void\\s+?main\\s*\\(/g, (hasDrawBuffersExtension ? \"\" : \"layout(location = 0) out vec4 glFragColor;\\n\") + \"void main(\");\r\n code = code.replace(/dFdy/g, \"(-yFactor_)*dFdy\"); // will also handle dFdyCoarse and dFdyFine\r\n code = code.replace(\"##INJECTCODE##\", injectCode);\r\n\r\n if (hasFragCoord) {\r\n code = this._injectStartingAndEndingCode(code, \"void main\", fragCoordCode);\r\n }\r\n } else {\r\n code = code.replace(/gl_InstanceID/g, \"gl_InstanceIndex\");\r\n code = code.replace(/gl_VertexID/g, \"gl_VertexIndex\");\r\n const hasMultiviewExtension = defines.indexOf(\"#define MULTIVIEW\") !== -1;\r\n if (hasMultiviewExtension) {\r\n return \"#extension GL_OVR_multiview2 : require\\nlayout (num_views = 2) in;\\n\" + code;\r\n }\r\n }\r\n\r\n // Flip Y + convert z range from [-1,1] to [0,1]\r\n if (!isFragment) {\r\n const lastClosingCurly = code.lastIndexOf(\"}\");\r\n code = code.substring(0, lastClosingCurly);\r\n code += \"gl_Position.y *= yFactor_;\\n\";\r\n if (!engine.isNDCHalfZRange) {\r\n code += \"gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0;\\n\";\r\n }\r\n code += \"}\";\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _applyTextureArrayProcessing(code: string, name: string): string {\r\n // Replaces the occurrences of name[XX] by nameXX\r\n const regex = new RegExp(name + \"\\\\s*\\\\[(.+)?\\\\]\", \"gm\");\r\n let match = regex.exec(code);\r\n\r\n while (match != null) {\r\n const index = match[1];\r\n let iindex = +index;\r\n if (this._preProcessors && isNaN(iindex)) {\r\n iindex = +this._preProcessors[index.trim()];\r\n }\r\n code = code.replace(match[0], name + iindex);\r\n match = regex.exec(code);\r\n }\r\n\r\n return code;\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `layout(set = ${uniformBufferDescription.binding.groupIndex}, binding = ${uniformBufferDescription.binding.bindingIndex}) uniform ${name} {\\n `;\r\n for (const leftOverUniform of this._webgpuProcessingContext.leftOverUniforms) {\r\n if (leftOverUniform.length > 0) {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name}[${leftOverUniform.length}];\\n`;\r\n } else {\r\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\\n\";\r\n\r\n return ubo;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string): { vertexCode: string; fragmentCode: string } {\r\n // make replacements for texture names in the texture array case\r\n for (let i = 0; i < this._textureArrayProcessing.length; ++i) {\r\n const name = this._textureArrayProcessing[i];\r\n vertexCode = this._applyTextureArrayProcessing(vertexCode, name);\r\n fragmentCode = this._applyTextureArrayProcessing(fragmentCode, name);\r\n }\r\n\r\n // inject the missing varying in the fragment shader\r\n for (let i = 0; i < this._missingVaryings.length; ++i) {\r\n const decl = this._missingVaryings[i];\r\n if (decl && decl.length > 0) {\r\n fragmentCode = decl + \"\\n\" + fragmentCode;\r\n }\r\n }\r\n\r\n // Builds the leftover UBOs.\r\n const leftOverUBO = this._buildLeftOverUBO();\r\n\r\n vertexCode = leftOverUBO + vertexCode;\r\n fragmentCode = leftOverUBO + fragmentCode;\r\n\r\n this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n this._preProcessors = null as any;\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n}\r\n"]}
|
|
@@ -46,10 +46,11 @@ export class WebGPUSnapshotRendering {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
endRenderTargetPass(currentRenderPass, gpuWrapper) {
|
|
49
|
+
var _a, _b, _c, _d;
|
|
49
50
|
if (this._play) {
|
|
50
|
-
gpuWrapper._bundleLists
|
|
51
|
+
(_b = (_a = gpuWrapper._bundleLists) === null || _a === void 0 ? void 0 : _a[gpuWrapper._currentLayer]) === null || _b === void 0 ? void 0 : _b.run(currentRenderPass);
|
|
51
52
|
if (this._mode === 1) {
|
|
52
|
-
this._engine._reportDrawCall(gpuWrapper._bundleLists
|
|
53
|
+
this._engine._reportDrawCall((_d = (_c = gpuWrapper._bundleLists) === null || _c === void 0 ? void 0 : _c[gpuWrapper._currentLayer]) === null || _d === void 0 ? void 0 : _d.numDrawCalls);
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
else if (this._record) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuSnapshotRendering.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuSnapshotRendering.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,gBAAgB;AAChB,MAAM,OAAO,uBAAuB;IAahC,YAAY,MAAoB,EAAE,aAAqB,EAAE,UAA4B,EAAE,sBAAwC;QAVvH,YAAO,GAAG,KAAK,CAAC;QAChB,UAAK,GAAG,KAAK,CAAC;QACd,wBAAmB,GAAuB,EAAE,CAAC;QAK7C,aAAQ,GAAG,KAAK,CAAC;QAIrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,uBAAuB,GAAG,sBAAsB,CAAC;IAC1D,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,OAAO,CAAC,QAAiB;QAChC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC,qFAAqF;SAC3I;IACL,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,IAAI,CAAC,IAAY;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;IACL,CAAC;IAEM,iBAAiB;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC;IAEM,mBAAmB,CAAC,iBAAuC,EAAE,UAAiC
|
|
1
|
+
{"version":3,"file":"webgpuSnapshotRendering.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuSnapshotRendering.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport { Constants } from \"../constants\";\r\nimport type { WebGPUEngine } from \"../webgpuEngine\";\r\nimport type { WebGPUBundleList } from \"./webgpuBundleList\";\r\nimport type { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\r\n\r\n/** @internal */\r\nexport class WebGPUSnapshotRendering {\r\n private _engine: WebGPUEngine;\r\n\r\n private _record = false;\r\n private _play = false;\r\n private _mainPassBundleList: WebGPUBundleList[] = [];\r\n private _modeSaved: number;\r\n private _bundleList: WebGPUBundleList;\r\n private _bundleListRenderTarget: WebGPUBundleList;\r\n\r\n private _enabled = false;\r\n private _mode: number;\r\n\r\n constructor(engine: WebGPUEngine, renderingMode: number, bundleList: WebGPUBundleList, bundleListRenderTarget: WebGPUBundleList) {\r\n this._engine = engine;\r\n this._mode = renderingMode;\r\n this._bundleList = bundleList;\r\n this._bundleListRenderTarget = bundleListRenderTarget;\r\n }\r\n\r\n public get enabled(): boolean {\r\n return this._enabled;\r\n }\r\n\r\n public get play() {\r\n return this._play;\r\n }\r\n\r\n public get record() {\r\n return this._record;\r\n }\r\n\r\n public set enabled(activate: boolean) {\r\n this._mainPassBundleList.length = 0;\r\n this._record = this._enabled = activate;\r\n this._play = false;\r\n if (activate) {\r\n this._modeSaved = this._mode;\r\n this._mode = Constants.SNAPSHOTRENDERING_STANDARD; // need to reset to standard for the recording pass to avoid some code being bypassed\r\n }\r\n }\r\n\r\n public get mode(): number {\r\n return this._mode;\r\n }\r\n\r\n public set mode(mode: number) {\r\n if (this._record) {\r\n this._modeSaved = mode;\r\n } else {\r\n this._mode = mode;\r\n }\r\n }\r\n\r\n public endMainRenderPass(): void {\r\n if (this._record) {\r\n this._mainPassBundleList.push(this._bundleList.clone());\r\n }\r\n }\r\n\r\n public endRenderTargetPass(currentRenderPass: GPURenderPassEncoder, gpuWrapper: WebGPUHardwareTexture): boolean {\r\n if (this._play) {\r\n gpuWrapper._bundleLists?.[gpuWrapper._currentLayer]?.run(currentRenderPass);\r\n if (this._mode === Constants.SNAPSHOTRENDERING_FAST) {\r\n this._engine._reportDrawCall(gpuWrapper._bundleLists?.[gpuWrapper._currentLayer]?.numDrawCalls);\r\n }\r\n } else if (this._record) {\r\n if (!gpuWrapper._bundleLists) {\r\n gpuWrapper._bundleLists = [];\r\n }\r\n gpuWrapper._bundleLists[gpuWrapper._currentLayer] = this._bundleListRenderTarget.clone();\r\n gpuWrapper._bundleLists[gpuWrapper._currentLayer].run(currentRenderPass);\r\n this._bundleListRenderTarget.reset();\r\n } else {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public endFrame(mainRenderPass: Nullable<GPURenderPassEncoder>): void {\r\n if (this._record) {\r\n this._mainPassBundleList.push(this._bundleList.clone());\r\n this._record = false;\r\n this._play = true;\r\n this._mode = this._modeSaved;\r\n }\r\n\r\n if (mainRenderPass !== null && this._play) {\r\n for (let i = 0; i < this._mainPassBundleList.length; ++i) {\r\n this._mainPassBundleList[i].run(mainRenderPass);\r\n if (this._mode === Constants.SNAPSHOTRENDERING_FAST) {\r\n this._engine._reportDrawCall(this._mainPassBundleList[i].numDrawCalls);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public reset(): void {\r\n this.enabled = false;\r\n this.enabled = true;\r\n }\r\n}\r\n"]}
|
|
@@ -83,7 +83,8 @@ export class WebGPUStencilStateComposer extends StencilStateComposer {
|
|
|
83
83
|
this._cache.resetStencilState();
|
|
84
84
|
}
|
|
85
85
|
apply() {
|
|
86
|
-
|
|
86
|
+
var _a;
|
|
87
|
+
const stencilMaterialEnabled = (_a = this.stencilMaterial) === null || _a === void 0 ? void 0 : _a.enabled;
|
|
87
88
|
this.enabled = stencilMaterialEnabled ? this.stencilMaterial.enabled : this.stencilGlobal.enabled;
|
|
88
89
|
if (!this.enabled) {
|
|
89
90
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuStencilStateComposer.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuStencilStateComposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;IAEI;AACJ,MAAM,OAAO,0BAA2B,SAAQ,oBAAoB;IAGhE,YAAmB,KAAgC;QAC/C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,IAAI,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,OAAO;SACV;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC1B,OAAO;SACV;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAW,aAAa,CAAC,KAAa;QAClC,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;YAC/B,OAAO;SACV;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAW,WAAW,CAAC,KAAa;QAChC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;YAC7B,OAAO;SACV;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,IAAW,kBAAkB,CAAC,KAAa;QACvC,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAAE;YACpC,OAAO;SACV;QAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,IAAI,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,OAAO;SACV;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YACzB,OAAO;SACV;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK;QACR,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAEM,KAAK
|
|
1
|
+
{"version":3,"file":"webgpuStencilStateComposer.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Engines/WebGPU/webgpuStencilStateComposer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WebGPUCacheRenderPipeline } from \"./webgpuCacheRenderPipeline\";\r\nimport { StencilStateComposer } from \"../../States/stencilStateComposer\";\r\n\r\n/**\r\n * @internal\r\n **/\r\nexport class WebGPUStencilStateComposer extends StencilStateComposer {\r\n private _cache: WebGPUCacheRenderPipeline;\r\n\r\n public constructor(cache: WebGPUCacheRenderPipeline) {\r\n super(false);\r\n this._cache = cache;\r\n this.reset();\r\n }\r\n\r\n public get func(): number {\r\n return this._func;\r\n }\r\n\r\n public set func(value: number) {\r\n if (this._func === value) {\r\n return;\r\n }\r\n\r\n this._func = value;\r\n this._cache.setStencilCompare(value);\r\n }\r\n\r\n public get funcMask(): number {\r\n return this._funcMask;\r\n }\r\n\r\n public set funcMask(value: number) {\r\n if (this._funcMask === value) {\r\n return;\r\n }\r\n\r\n this._funcMask = value;\r\n this._cache.setStencilReadMask(value);\r\n }\r\n\r\n public get opStencilFail(): number {\r\n return this._opStencilFail;\r\n }\r\n\r\n public set opStencilFail(value: number) {\r\n if (this._opStencilFail === value) {\r\n return;\r\n }\r\n\r\n this._opStencilFail = value;\r\n this._cache.setStencilFailOp(value);\r\n }\r\n\r\n public get opDepthFail(): number {\r\n return this._opDepthFail;\r\n }\r\n\r\n public set opDepthFail(value: number) {\r\n if (this._opDepthFail === value) {\r\n return;\r\n }\r\n\r\n this._opDepthFail = value;\r\n this._cache.setStencilDepthFailOp(value);\r\n }\r\n\r\n public get opStencilDepthPass(): number {\r\n return this._opStencilDepthPass;\r\n }\r\n\r\n public set opStencilDepthPass(value: number) {\r\n if (this._opStencilDepthPass === value) {\r\n return;\r\n }\r\n\r\n this._opStencilDepthPass = value;\r\n this._cache.setStencilPassOp(value);\r\n }\r\n\r\n public get mask(): number {\r\n return this._mask;\r\n }\r\n\r\n public set mask(value: number) {\r\n if (this._mask === value) {\r\n return;\r\n }\r\n\r\n this._mask = value;\r\n this._cache.setStencilWriteMask(value);\r\n }\r\n\r\n public get enabled(): boolean {\r\n return this._enabled;\r\n }\r\n\r\n public set enabled(value: boolean) {\r\n if (this._enabled === value) {\r\n return;\r\n }\r\n\r\n this._enabled = value;\r\n this._cache.setStencilEnabled(value);\r\n }\r\n\r\n public reset() {\r\n super.reset();\r\n this._cache.resetStencilState();\r\n }\r\n\r\n public apply() {\r\n const stencilMaterialEnabled = this.stencilMaterial?.enabled;\r\n\r\n this.enabled = stencilMaterialEnabled ? this.stencilMaterial!.enabled : this.stencilGlobal.enabled;\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n this.func = stencilMaterialEnabled ? this.stencilMaterial!.func : this.stencilGlobal.func;\r\n this.funcRef = stencilMaterialEnabled ? this.stencilMaterial!.funcRef : this.stencilGlobal.funcRef;\r\n this.funcMask = stencilMaterialEnabled ? this.stencilMaterial!.funcMask : this.stencilGlobal.funcMask;\r\n this.opStencilFail = stencilMaterialEnabled ? this.stencilMaterial!.opStencilFail : this.stencilGlobal.opStencilFail;\r\n this.opDepthFail = stencilMaterialEnabled ? this.stencilMaterial!.opDepthFail : this.stencilGlobal.opDepthFail;\r\n this.opStencilDepthPass = stencilMaterialEnabled ? this.stencilMaterial!.opStencilDepthPass : this.stencilGlobal.opStencilDepthPass;\r\n this.mask = stencilMaterialEnabled ? this.stencilMaterial!.mask : this.stencilGlobal.mask;\r\n }\r\n}\r\n"]}
|
|
@@ -918,6 +918,7 @@ export class WebGPUTextureHelper {
|
|
|
918
918
|
invertYPreMultiplyAlpha(gpuOrHdwTexture, width, height, format, invertY = false, premultiplyAlpha = false, faceIndex = 0, mipLevel = 0, layers = 1, ofstX = 0, ofstY = 0, rectWidth = 0, rectHeight = 0, commandEncoder,
|
|
919
919
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
920
920
|
allowGPUOptimization) {
|
|
921
|
+
var _a, _b, _c, _d, _e, _f;
|
|
921
922
|
const useRect = rectWidth !== 0;
|
|
922
923
|
const useOwnCommandEncoder = commandEncoder === undefined;
|
|
923
924
|
const [pipeline, bindGroupLayout] = this._getPipeline(format, useRect ? PipelineType.InvertYPremultiplyAlphaWithOfst : PipelineType.InvertYPremultiplyAlpha, {
|
|
@@ -928,7 +929,7 @@ export class WebGPUTextureHelper {
|
|
|
928
929
|
if (useOwnCommandEncoder) {
|
|
929
930
|
commandEncoder = this._device.createCommandEncoder({});
|
|
930
931
|
}
|
|
931
|
-
commandEncoder.pushDebugGroup
|
|
932
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, `internal process texture - invertY=${invertY} premultiplyAlpha=${premultiplyAlpha}`);
|
|
932
933
|
let gpuTexture;
|
|
933
934
|
if (WebGPUTextureHelper._IsHardwareTexture(gpuOrHdwTexture)) {
|
|
934
935
|
gpuTexture = gpuOrHdwTexture.underlyingResource;
|
|
@@ -948,9 +949,8 @@ export class WebGPUTextureHelper {
|
|
|
948
949
|
this._bufferManager.setRawData(this._ubCopyWithOfst, 0, new Float32Array([ofstX, ofstY, rectWidth, rectHeight]), 0, 4 * 4);
|
|
949
950
|
}
|
|
950
951
|
const webgpuHardwareTexture = gpuOrHdwTexture;
|
|
951
|
-
const outputTexture = webgpuHardwareTexture
|
|
952
|
-
|
|
953
|
-
const renderPassDescriptor = webgpuHardwareTexture?._copyInvertYRenderPassDescr ?? {
|
|
952
|
+
const outputTexture = (_c = webgpuHardwareTexture === null || webgpuHardwareTexture === void 0 ? void 0 : webgpuHardwareTexture._copyInvertYTempTexture) !== null && _c !== void 0 ? _c : this.createTexture({ width, height, layers: 1 }, false, false, false, false, false, format, 1, commandEncoder, WebGPUConstants.TextureUsage.CopySrc | WebGPUConstants.TextureUsage.RenderAttachment | WebGPUConstants.TextureUsage.TextureBinding);
|
|
953
|
+
const renderPassDescriptor = (_d = webgpuHardwareTexture === null || webgpuHardwareTexture === void 0 ? void 0 : webgpuHardwareTexture._copyInvertYRenderPassDescr) !== null && _d !== void 0 ? _d : {
|
|
954
954
|
colorAttachments: [
|
|
955
955
|
{
|
|
956
956
|
view: outputTexture.createView({
|
|
@@ -967,7 +967,7 @@ export class WebGPUTextureHelper {
|
|
|
967
967
|
],
|
|
968
968
|
};
|
|
969
969
|
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
970
|
-
let bindGroup = useRect ? webgpuHardwareTexture
|
|
970
|
+
let bindGroup = useRect ? webgpuHardwareTexture === null || webgpuHardwareTexture === void 0 ? void 0 : webgpuHardwareTexture._copyInvertYBindGroupWithOfst : webgpuHardwareTexture === null || webgpuHardwareTexture === void 0 ? void 0 : webgpuHardwareTexture._copyInvertYBindGroup;
|
|
971
971
|
if (!bindGroup) {
|
|
972
972
|
const descriptor = {
|
|
973
973
|
layout: bindGroupLayout,
|
|
@@ -1027,19 +1027,20 @@ export class WebGPUTextureHelper {
|
|
|
1027
1027
|
else {
|
|
1028
1028
|
this._deferredReleaseTextures.push([outputTexture, null]);
|
|
1029
1029
|
}
|
|
1030
|
-
commandEncoder.popDebugGroup
|
|
1030
|
+
(_f = (_e = commandEncoder).popDebugGroup) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
1031
1031
|
if (useOwnCommandEncoder) {
|
|
1032
1032
|
this._device.queue.submit([commandEncoder.finish()]);
|
|
1033
1033
|
commandEncoder = null;
|
|
1034
1034
|
}
|
|
1035
1035
|
}
|
|
1036
1036
|
copyWithInvertY(srcTextureView, format, renderPassDescriptor, commandEncoder) {
|
|
1037
|
+
var _a, _b, _c, _d;
|
|
1037
1038
|
const useOwnCommandEncoder = commandEncoder === undefined;
|
|
1038
1039
|
const [pipeline, bindGroupLayout] = this._getPipeline(format, PipelineType.InvertYPremultiplyAlpha, { invertY: true, premultiplyAlpha: false });
|
|
1039
1040
|
if (useOwnCommandEncoder) {
|
|
1040
1041
|
commandEncoder = this._device.createCommandEncoder({});
|
|
1041
1042
|
}
|
|
1042
|
-
commandEncoder.pushDebugGroup
|
|
1043
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, `internal copy texture with invertY`);
|
|
1043
1044
|
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
1044
1045
|
const bindGroup = this._device.createBindGroup({
|
|
1045
1046
|
layout: bindGroupLayout,
|
|
@@ -1054,7 +1055,7 @@ export class WebGPUTextureHelper {
|
|
|
1054
1055
|
passEncoder.setBindGroup(0, bindGroup);
|
|
1055
1056
|
passEncoder.draw(4, 1, 0, 0);
|
|
1056
1057
|
passEncoder.end();
|
|
1057
|
-
commandEncoder.popDebugGroup
|
|
1058
|
+
(_d = (_c = commandEncoder).popDebugGroup) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
1058
1059
|
if (useOwnCommandEncoder) {
|
|
1059
1060
|
this._device.queue.submit([commandEncoder.finish()]);
|
|
1060
1061
|
commandEncoder = null;
|
|
@@ -1134,28 +1135,30 @@ export class WebGPUTextureHelper {
|
|
|
1134
1135
|
return gpuTexture;
|
|
1135
1136
|
}
|
|
1136
1137
|
generateCubeMipmaps(gpuTexture, format, mipLevelCount, commandEncoder) {
|
|
1138
|
+
var _a, _b, _c, _d;
|
|
1137
1139
|
const useOwnCommandEncoder = commandEncoder === undefined;
|
|
1138
1140
|
if (useOwnCommandEncoder) {
|
|
1139
1141
|
commandEncoder = this._device.createCommandEncoder({});
|
|
1140
1142
|
}
|
|
1141
|
-
commandEncoder.pushDebugGroup
|
|
1143
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, `create cube mipmaps - ${mipLevelCount} levels`);
|
|
1142
1144
|
for (let f = 0; f < 6; ++f) {
|
|
1143
1145
|
this.generateMipmaps(gpuTexture, format, mipLevelCount, f, commandEncoder);
|
|
1144
1146
|
}
|
|
1145
|
-
commandEncoder.popDebugGroup
|
|
1147
|
+
(_d = (_c = commandEncoder).popDebugGroup) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
1146
1148
|
if (useOwnCommandEncoder) {
|
|
1147
1149
|
this._device.queue.submit([commandEncoder.finish()]);
|
|
1148
1150
|
commandEncoder = null;
|
|
1149
1151
|
}
|
|
1150
1152
|
}
|
|
1151
1153
|
generateMipmaps(gpuOrHdwTexture, format, mipLevelCount, faceIndex = 0, commandEncoder) {
|
|
1154
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1152
1155
|
const useOwnCommandEncoder = commandEncoder === undefined;
|
|
1153
1156
|
const [pipeline, bindGroupLayout] = this._getPipeline(format);
|
|
1154
1157
|
faceIndex = Math.max(faceIndex, 0);
|
|
1155
1158
|
if (useOwnCommandEncoder) {
|
|
1156
1159
|
commandEncoder = this._device.createCommandEncoder({});
|
|
1157
1160
|
}
|
|
1158
|
-
commandEncoder.pushDebugGroup
|
|
1161
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, `create mipmaps for face #${faceIndex} - ${mipLevelCount} levels`);
|
|
1159
1162
|
let gpuTexture;
|
|
1160
1163
|
if (WebGPUTextureHelper._IsHardwareTexture(gpuOrHdwTexture)) {
|
|
1161
1164
|
gpuTexture = gpuOrHdwTexture.underlyingResource;
|
|
@@ -1171,7 +1174,7 @@ export class WebGPUTextureHelper {
|
|
|
1171
1174
|
}
|
|
1172
1175
|
const webgpuHardwareTexture = gpuOrHdwTexture;
|
|
1173
1176
|
for (let i = 1; i < mipLevelCount; ++i) {
|
|
1174
|
-
const renderPassDescriptor = webgpuHardwareTexture
|
|
1177
|
+
const renderPassDescriptor = (_d = (_c = webgpuHardwareTexture === null || webgpuHardwareTexture === void 0 ? void 0 : webgpuHardwareTexture._mipmapGenRenderPassDescr[faceIndex]) === null || _c === void 0 ? void 0 : _c[i - 1]) !== null && _d !== void 0 ? _d : {
|
|
1175
1178
|
colorAttachments: [
|
|
1176
1179
|
{
|
|
1177
1180
|
view: gpuTexture.createView({
|
|
@@ -1192,27 +1195,26 @@ export class WebGPUTextureHelper {
|
|
|
1192
1195
|
webgpuHardwareTexture._mipmapGenRenderPassDescr[faceIndex][i - 1] = renderPassDescriptor;
|
|
1193
1196
|
}
|
|
1194
1197
|
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
1195
|
-
const bindGroup = webgpuHardwareTexture
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
});
|
|
1198
|
+
const bindGroup = (_f = (_e = webgpuHardwareTexture === null || webgpuHardwareTexture === void 0 ? void 0 : webgpuHardwareTexture._mipmapGenBindGroup[faceIndex]) === null || _e === void 0 ? void 0 : _e[i - 1]) !== null && _f !== void 0 ? _f : this._device.createBindGroup({
|
|
1199
|
+
layout: bindGroupLayout,
|
|
1200
|
+
entries: [
|
|
1201
|
+
{
|
|
1202
|
+
binding: 0,
|
|
1203
|
+
resource: this._mipmapSampler,
|
|
1204
|
+
},
|
|
1205
|
+
{
|
|
1206
|
+
binding: 1,
|
|
1207
|
+
resource: gpuTexture.createView({
|
|
1208
|
+
format,
|
|
1209
|
+
dimension: WebGPUConstants.TextureViewDimension.E2d,
|
|
1210
|
+
baseMipLevel: i - 1,
|
|
1211
|
+
mipLevelCount: 1,
|
|
1212
|
+
arrayLayerCount: 1,
|
|
1213
|
+
baseArrayLayer: faceIndex,
|
|
1214
|
+
}),
|
|
1215
|
+
},
|
|
1216
|
+
],
|
|
1217
|
+
});
|
|
1216
1218
|
if (webgpuHardwareTexture) {
|
|
1217
1219
|
webgpuHardwareTexture._mipmapGenBindGroup[faceIndex] = webgpuHardwareTexture._mipmapGenBindGroup[faceIndex] || [];
|
|
1218
1220
|
webgpuHardwareTexture._mipmapGenBindGroup[faceIndex][i - 1] = bindGroup;
|
|
@@ -1222,7 +1224,7 @@ export class WebGPUTextureHelper {
|
|
|
1222
1224
|
passEncoder.draw(4, 1, 0, 0);
|
|
1223
1225
|
passEncoder.end();
|
|
1224
1226
|
}
|
|
1225
|
-
commandEncoder.popDebugGroup
|
|
1227
|
+
(_h = (_g = commandEncoder).popDebugGroup) === null || _h === void 0 ? void 0 : _h.call(_g);
|
|
1226
1228
|
if (useOwnCommandEncoder) {
|
|
1227
1229
|
this._device.queue.submit([commandEncoder.finish()]);
|
|
1228
1230
|
commandEncoder = null;
|
|
@@ -1242,7 +1244,7 @@ export class WebGPUTextureHelper {
|
|
|
1242
1244
|
depth = texture.depth;
|
|
1243
1245
|
}
|
|
1244
1246
|
const gpuTextureWrapper = texture._hardwareTexture;
|
|
1245
|
-
const isStorageTexture = ((creationFlags
|
|
1247
|
+
const isStorageTexture = ((creationFlags !== null && creationFlags !== void 0 ? creationFlags : 0) & 1) !== 0;
|
|
1246
1248
|
gpuTextureWrapper.format = WebGPUTextureHelper.GetWebGPUTextureFormat(texture.type, texture.format, texture._useSRGBBuffer);
|
|
1247
1249
|
gpuTextureWrapper.textureUsages =
|
|
1248
1250
|
texture._source === InternalTextureSource.RenderTarget || texture.source === InternalTextureSource.MultiRenderTarget
|
|
@@ -1298,11 +1300,11 @@ export class WebGPUTextureHelper {
|
|
|
1298
1300
|
}
|
|
1299
1301
|
createMSAATexture(texture, samples) {
|
|
1300
1302
|
const gpuTextureWrapper = texture._hardwareTexture;
|
|
1301
|
-
if (gpuTextureWrapper
|
|
1303
|
+
if (gpuTextureWrapper === null || gpuTextureWrapper === void 0 ? void 0 : gpuTextureWrapper.msaaTexture) {
|
|
1302
1304
|
this.releaseTexture(gpuTextureWrapper.msaaTexture);
|
|
1303
1305
|
gpuTextureWrapper.msaaTexture = null;
|
|
1304
1306
|
}
|
|
1305
|
-
if (!gpuTextureWrapper || (samples
|
|
1307
|
+
if (!gpuTextureWrapper || (samples !== null && samples !== void 0 ? samples : 1) <= 1) {
|
|
1306
1308
|
return;
|
|
1307
1309
|
}
|
|
1308
1310
|
const width = texture.width;
|
|
@@ -1469,7 +1471,7 @@ export class WebGPUTextureHelper {
|
|
|
1469
1471
|
hardwareTexture.destroy();
|
|
1470
1472
|
}
|
|
1471
1473
|
}
|
|
1472
|
-
irradianceTexture
|
|
1474
|
+
irradianceTexture === null || irradianceTexture === void 0 ? void 0 : irradianceTexture.dispose();
|
|
1473
1475
|
}
|
|
1474
1476
|
this._deferredReleaseTextures.length = 0;
|
|
1475
1477
|
}
|