@babylonjs/core 5.0.0-beta.2 → 5.0.0-beta.6
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/Actions/actionManager.d.ts +1 -1
- package/Actions/actionManager.js +5 -1
- package/Actions/actionManager.js.map +1 -1
- package/Audio/analyser.d.ts +2 -1
- package/Audio/analyser.js +5 -0
- package/Audio/analyser.js.map +1 -1
- package/Audio/audioSceneComponent.d.ts +1 -1
- package/Audio/audioSceneComponent.js +5 -0
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.d.ts +1 -1
- package/Audio/sound.js +8 -1
- package/Audio/sound.js.map +1 -1
- package/Audio/soundTrack.d.ts +2 -1
- package/Audio/soundTrack.js +5 -0
- package/Audio/soundTrack.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +5 -0
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/bone.d.ts +2 -1
- package/Bones/bone.js +28 -18
- package/Bones/bone.js.map +1 -1
- package/Bones/skeleton.js +3 -3
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.d.ts +4 -0
- package/Buffers/buffer.js +13 -3
- package/Buffers/buffer.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -0
- package/Cameras/Inputs/freeCameraMouseInput.js +6 -3
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
- package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +1 -0
- package/Cameras/VR/vrExperienceHelper.js +1 -0
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/webVRCamera.d.ts +2 -1
- package/Cameras/VR/webVRCamera.js +3 -2
- package/Cameras/VR/webVRCamera.js.map +1 -1
- package/Cameras/arcRotateCamera.d.ts +1 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.d.ts +1 -1
- package/Cameras/camera.js +1 -1
- package/Cameras/camera.js.map +1 -1
- package/Cameras/deviceOrientationCamera.d.ts +1 -1
- package/Cameras/deviceOrientationCamera.js.map +1 -1
- package/Cameras/flyCamera.d.ts +1 -1
- package/Cameras/flyCamera.js.map +1 -1
- package/Cameras/followCamera.d.ts +1 -1
- package/Cameras/followCamera.js.map +1 -1
- package/Cameras/freeCamera.d.ts +1 -1
- package/Cameras/freeCamera.js.map +1 -1
- package/Cameras/gamepadCamera.d.ts +1 -1
- package/Cameras/gamepadCamera.js.map +1 -1
- package/Cameras/targetCamera.d.ts +1 -1
- package/Cameras/targetCamera.js.map +1 -1
- package/Cameras/touchCamera.d.ts +1 -1
- package/Cameras/touchCamera.js.map +1 -1
- package/Cameras/universalCamera.d.ts +1 -1
- package/Cameras/universalCamera.js.map +1 -1
- package/Cameras/virtualJoysticksCamera.d.ts +1 -1
- package/Cameras/virtualJoysticksCamera.js.map +1 -1
- package/Collisions/collider.d.ts +1 -1
- package/Collisions/collider.js +48 -2
- package/Collisions/collider.js.map +1 -1
- package/Compute/computeEffect.js +2 -2
- package/Compute/computeEffect.js.map +1 -1
- package/Culling/Octrees/octreeSceneComponent.d.ts +1 -1
- package/Culling/Octrees/octreeSceneComponent.js +5 -0
- package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
- package/Culling/ray.d.ts +6 -4
- package/Culling/ray.js +33 -11
- package/Culling/ray.js.map +1 -1
- package/Debug/axesViewer.d.ts +2 -1
- package/Debug/axesViewer.js +6 -0
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/debugLayer.d.ts +1 -1
- package/Debug/debugLayer.js +6 -2
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/physicsViewer.d.ts +1 -1
- package/Debug/physicsViewer.js +3 -0
- package/Debug/physicsViewer.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.d.ts +1 -1
- package/DeviceInput/Helpers/eventFactory.js +1 -1
- package/DeviceInput/Helpers/eventFactory.js.map +1 -1
- package/DeviceInput/InputDevices/deviceEnums.d.ts +52 -1
- package/DeviceInput/InputDevices/deviceEnums.js +52 -0
- package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSource.d.ts +35 -0
- package/DeviceInput/InputDevices/deviceSource.js +38 -0
- package/DeviceInput/InputDevices/deviceSource.js.map +1 -0
- package/DeviceInput/InputDevices/deviceSourceManager.d.ts +14 -72
- package/DeviceInput/InputDevices/deviceSourceManager.js +10 -180
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
- package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
- package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.d.ts +1 -5
- package/DeviceInput/{Interfaces → InputDevices}/inputInterfaces.js +0 -0
- package/DeviceInput/InputDevices/inputInterfaces.js.map +1 -0
- package/DeviceInput/InputDevices/internalDeviceSourceManager.d.ts +46 -0
- package/DeviceInput/InputDevices/internalDeviceSourceManager.js +144 -0
- package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -0
- package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.d.ts +3 -7
- package/DeviceInput/{Implementations → InputDevices}/nativeDeviceInputSystem.js +9 -15
- package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -0
- package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.d.ts +11 -15
- package/DeviceInput/{Implementations → InputDevices}/webDeviceInputSystem.js +116 -95
- package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -0
- package/DeviceInput/index.d.ts +1 -5
- package/DeviceInput/index.js +1 -5
- package/DeviceInput/index.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +5 -2
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiview.d.ts +5 -0
- package/Engines/Extensions/engine.multiview.js +4 -1
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +3 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +13 -13
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -7
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.d.ts +2 -0
- package/Engines/WebGPU/webgpuCacheSampler.js +23 -2
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +3 -3
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.d.ts +0 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +0 -3
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.d.ts +0 -8
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +0 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +8 -30
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/engine.d.ts +3 -7
- package/Engines/engine.js +2 -6
- package/Engines/engine.js.map +1 -1
- package/Engines/engineCapabilities.d.ts +4 -0
- package/Engines/engineCapabilities.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -0
- package/Engines/nativeEngine.js +39 -12
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +3 -1
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +11 -2
- package/Engines/thinEngine.js +34 -21
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +3 -7
- package/Engines/webgpuEngine.js +12 -22
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gamepads/Controllers/daydreamController.js +1 -1
- package/Gamepads/Controllers/daydreamController.js.map +1 -1
- package/Gamepads/Controllers/oculusTouchController.js +2 -2
- package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
- package/Gamepads/Controllers/webVRController.d.ts +1 -0
- package/Gamepads/Controllers/webVRController.js +1 -0
- package/Gamepads/Controllers/webVRController.js.map +1 -1
- package/Gamepads/gamepadManager.js +1 -1
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/gizmoManager.d.ts +2 -0
- package/Gizmos/gizmoManager.js +28 -24
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Helpers/sceneHelpers.d.ts +1 -0
- package/Helpers/sceneHelpers.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +2 -2
- package/Inputs/scene.inputManager.js +10 -9
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +2 -2
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/effectLayer.d.ts +1 -1
- package/Layers/effectLayer.js +1 -1
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.d.ts +1 -1
- package/Layers/effectLayerSceneComponent.js +7 -3
- package/Layers/effectLayerSceneComponent.js.map +1 -1
- package/Layers/glowLayer.d.ts +1 -1
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.d.ts +1 -1
- package/Layers/highlightLayer.js +2 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layer.d.ts +2 -2
- package/Layers/layer.js.map +1 -1
- package/Layers/layerSceneComponent.d.ts +1 -1
- package/Layers/layerSceneComponent.js +7 -3
- package/Layers/layerSceneComponent.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +2 -2
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +115 -29
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/loadingScreen.js +8 -8
- package/Loading/loadingScreen.js.map +1 -1
- package/Loading/sceneLoader.js +3 -3
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +13 -13
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
- package/Materials/Node/Blocks/Dual/index.js +1 -0
- package/Materials/Node/Blocks/Dual/index.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +28 -28
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +32 -32
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
- package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/addBlock.js +1 -1
- package/Materials/Node/Blocks/addBlock.js.map +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.js +3 -3
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.js +7 -7
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.js +10 -10
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/Blocks/crossBlock.js +1 -1
- package/Materials/Node/Blocks/crossBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +1 -1
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/desaturateBlock.js +4 -4
- package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
- package/Materials/Node/Blocks/distanceBlock.js +1 -1
- package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
- package/Materials/Node/Blocks/divideBlock.js +1 -1
- package/Materials/Node/Blocks/divideBlock.js.map +1 -1
- package/Materials/Node/Blocks/dotBlock.js +1 -1
- package/Materials/Node/Blocks/dotBlock.js.map +1 -1
- package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
- package/Materials/Node/Blocks/elbowBlock.js +60 -0
- package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
- package/Materials/Node/Blocks/fresnelBlock.js +2 -2
- package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +8 -8
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/index.d.ts +1 -0
- package/Materials/Node/Blocks/index.js +1 -0
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/Node/Blocks/lengthBlock.js +1 -1
- package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
- package/Materials/Node/Blocks/lerpBlock.js +1 -1
- package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/maxBlock.js +1 -1
- package/Materials/Node/Blocks/maxBlock.js.map +1 -1
- package/Materials/Node/Blocks/minBlock.js +1 -1
- package/Materials/Node/Blocks/minBlock.js.map +1 -1
- package/Materials/Node/Blocks/modBlock.js +1 -1
- package/Materials/Node/Blocks/modBlock.js.map +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/negateBlock.js +1 -1
- package/Materials/Node/Blocks/negateBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
- package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.js +1 -1
- package/Materials/Node/Blocks/powBlock.js.map +1 -1
- package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
- package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
- package/Materials/Node/Blocks/reflectBlock.js +1 -1
- package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
- package/Materials/Node/Blocks/refractBlock.js +1 -1
- package/Materials/Node/Blocks/refractBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.js +3 -3
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
- package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
- package/Materials/Node/Blocks/scaleBlock.js +1 -1
- package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
- package/Materials/Node/Blocks/stepBlock.js +1 -1
- package/Materials/Node/Blocks/stepBlock.js.map +1 -1
- package/Materials/Node/Blocks/subtractBlock.js +1 -1
- package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.js +13 -13
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
- package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
- package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
- package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.js +3 -3
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
- package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
- package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +4 -0
- package/Materials/Node/nodeMaterial.js +22 -11
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +12 -12
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +24 -24
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +2 -1
- package/Materials/PBR/pbrBaseMaterial.js +4 -3
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrMaterial.d.ts +1 -1
- package/Materials/PBR/pbrMaterial.js +2 -3
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +8 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +2 -2
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.d.ts +2 -1
- package/Materials/Textures/MultiviewRenderTarget.js +10 -2
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +1 -1
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
- package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.d.ts +2 -2
- package/Materials/Textures/mirrorTexture.js +7 -3
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +1 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
- package/Materials/Textures/prePassRenderTarget.js.map +1 -1
- package/Materials/Textures/refractionTexture.d.ts +1 -1
- package/Materials/Textures/refractionTexture.js +2 -2
- package/Materials/Textures/refractionTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +1 -1
- package/Materials/Textures/renderTargetTexture.js +2 -2
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +1 -1
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +1 -0
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/effect.js +3 -3
- package/Materials/effect.js.map +1 -1
- package/Materials/material.d.ts +3 -1
- package/Materials/material.js +11 -3
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.js +4 -1
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/materialPluginManager.js +3 -3
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/multiMaterial.d.ts +3 -1
- package/Materials/multiMaterial.js +13 -11
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/pushMaterial.d.ts +1 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/shaderMaterial.js +8 -4
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.d.ts +1 -1
- package/Materials/shadowDepthWrapper.js +3 -3
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.d.ts +2 -6
- package/Materials/standardMaterial.js +5 -10
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/math.path.d.ts +1 -0
- package/Maths/math.path.js +1 -0
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.size.js +1 -1
- package/Maths/math.size.js.map +1 -1
- package/Maths/math.vector.d.ts +5 -2
- package/Maths/math.vector.js +35 -32
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
- package/Meshes/Builders/cylinderBuilder.js +1 -1
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/geodesicBuilder.d.ts +1 -0
- package/Meshes/Builders/geodesicBuilder.js +1 -0
- package/Meshes/Builders/geodesicBuilder.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +1 -0
- package/Meshes/Builders/goldbergBuilder.js +1 -0
- package/Meshes/Builders/goldbergBuilder.js.map +1 -1
- package/Meshes/Builders/linesBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +30 -11
- package/Meshes/Builders/tiledBoxBuilder.js +30 -11
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +21 -16
- package/Meshes/Builders/tiledPlaneBuilder.js +21 -16
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCompression.d.ts +3 -0
- package/Meshes/Compression/dracoCompression.js +23 -7
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +6 -0
- package/Meshes/abstractMesh.js +18 -2
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +1 -1
- package/Meshes/geometry.js +7 -3
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/groundMesh.d.ts +1 -1
- package/Meshes/groundMesh.js.map +1 -1
- package/Meshes/mesh.js +21 -6
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.lts.d.ts +1 -1
- package/Meshes/mesh.lts.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +1 -1
- package/Meshes/mesh.vertexData.js +2 -2
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/subMesh.js +1 -2
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/subMesh.project.js +1 -2
- package/Meshes/subMesh.project.js.map +1 -1
- package/Meshes/thinInstanceMesh.js +5 -0
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Meshes/trailMesh.d.ts +1 -1
- package/Meshes/trailMesh.js.map +1 -1
- package/Meshes/transformNode.js +40 -13
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +5 -0
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +13 -2
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -19
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/assetsManager.d.ts +2 -1
- package/Misc/assetsManager.js +15 -1
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/basis.js +1 -1
- package/Misc/basis.js.map +1 -1
- package/Misc/brdfTextureTools.js +4 -1
- package/Misc/brdfTextureTools.js.map +1 -1
- package/Misc/dds.js +7 -0
- package/Misc/dds.js.map +1 -1
- package/Misc/devTools.js +1 -1
- package/Misc/devTools.js.map +1 -1
- package/Misc/environmentTextureTools.js +2 -2
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.js +4 -4
- package/Misc/fileTools.js.map +1 -1
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +1 -0
- package/Misc/index.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +4 -3
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/reflector.js +6 -6
- package/Misc/reflector.js.map +1 -1
- package/Misc/tools.js +15 -13
- package/Misc/tools.js.map +1 -1
- package/Misc/uniqueIdGenerator.js +1 -1
- package/Misc/uniqueIdGenerator.js.map +1 -1
- package/Offline/database.js +1 -1
- package/Offline/database.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +4 -1
- package/Particles/baseParticleSystem.js +20 -5
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +2 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleHelper.js +2 -2
- package/Particles/particleHelper.js.map +1 -1
- package/Physics/Plugins/ammoJSPlugin.d.ts +5 -1
- package/Physics/Plugins/ammoJSPlugin.js +16 -11
- package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
- package/Physics/physicsEngine.d.ts +1 -0
- package/Physics/physicsEngine.js +3 -1
- package/Physics/physicsEngine.js.map +1 -1
- package/Physics/physicsImpostor.d.ts +2 -2
- package/Physics/physicsImpostor.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +5 -5
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +1 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +2 -2
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/Probes/reflectionProbe.js +2 -2
- package/Probes/reflectionProbe.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +3 -3
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +8 -8
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js +1 -1
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +4 -0
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
- package/Shaders/color.fragment.js +1 -1
- package/Shaders/color.fragment.js.map +1 -1
- package/Shaders/color.vertex.js +1 -1
- package/Shaders/color.vertex.js.map +1 -1
- package/Shaders/default.fragment.js +1 -1
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/default.vertex.js +1 -1
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/pbr.vertex.js +1 -1
- package/Shaders/pbr.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
- package/Sprites/spriteManager.js +9 -10
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteMap.js +2 -2
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spriteRenderer.js +1 -1
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.js +15 -9
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.js +1 -1
- package/XR/features/WebXRDOMOverlay.js.map +1 -1
- package/XR/features/WebXRHandTracking.js +30 -30
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRImageTracking.js +2 -2
- package/XR/features/WebXRImageTracking.js.map +1 -1
- package/XR/features/WebXRLayers.d.ts +28 -5
- package/XR/features/WebXRLayers.js +54 -20
- package/XR/features/WebXRLayers.js.map +1 -1
- package/XR/features/WebXRNearInteraction.d.ts +35 -3
- package/XR/features/WebXRNearInteraction.js +201 -40
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.js +1 -1
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/motionController/webXRMotionControllerManager.js +2 -2
- package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
- package/XR/motionController/webXRProfiledMotionController.js +1 -1
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.js +17 -4
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRDefaultExperience.js +3 -0
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.js +2 -2
- package/XR/webXREnterExitUI.js.map +1 -1
- package/XR/webXRExperienceHelper.js +3 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRFeaturesManager.js +6 -6
- package/XR/webXRFeaturesManager.js.map +1 -1
- package/XR/webXRInputSource.js +3 -3
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
- package/XR/webXRRenderTargetTextureProvider.js +37 -18
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +1 -0
- package/XR/webXRSessionManager.js +6 -1
- package/XR/webXRSessionManager.js.map +1 -1
- package/assetContainer.d.ts +1 -1
- package/assetContainer.js +4 -0
- package/assetContainer.js.map +1 -1
- package/node.d.ts +1 -1
- package/node.js.map +1 -1
- package/package.json +22 -13
- package/scene.d.ts +5 -2
- package/scene.js +31 -5
- package/scene.js.map +1 -1
- package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +0 -1
- package/DeviceInput/Implementations/webDeviceInputSystem.js.map +0 -1
- package/DeviceInput/Interfaces/inputInterfaces.js.map +0 -1
- package/DeviceInput/deviceInputSystem.d.ts +0 -60
- package/DeviceInput/deviceInputSystem.js +0 -84
- package/DeviceInput/deviceInputSystem.js.map +0 -1
|
@@ -90,7 +90,7 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
90
90
|
this._varyingNamesWGSL = [];
|
|
91
91
|
};
|
|
92
92
|
WebGPUShaderProcessorWGSL.prototype.preProcessShaderCode = function (code, isFragment) {
|
|
93
|
-
return "struct "
|
|
93
|
+
return "struct ".concat(WebGPUShaderProcessor.InternalsUBOName, " {\nyFactor__: f32;\ntextureOutputHeight__: f32;\n};\nvar<uniform> ").concat(internalsVarName, " : ").concat(WebGPUShaderProcessor.InternalsUBOName, ";\n") + RemoveComments(code);
|
|
94
94
|
};
|
|
95
95
|
WebGPUShaderProcessorWGSL.prototype.varyingProcessor = function (varying, isFragment, preProcessors, processingContext) {
|
|
96
96
|
var varyingRegex = /\s*varying\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s*:\s*(.+)\s*;/gm;
|
|
@@ -102,14 +102,14 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
102
102
|
if (isFragment) {
|
|
103
103
|
location_1 = this.webgpuProcessingContext.availableVaryings[name_1];
|
|
104
104
|
if (location_1 === undefined) {
|
|
105
|
-
Logger.Warn("Invalid fragment shader: The varying named \""
|
|
105
|
+
Logger.Warn("Invalid fragment shader: The varying named \"".concat(name_1, "\" is not declared in the vertex shader! This declaration will be ignored."));
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
else {
|
|
109
109
|
location_1 = this.webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name_1, varyingType, preProcessors)[2]);
|
|
110
110
|
this.webgpuProcessingContext.availableVaryings[name_1] = location_1;
|
|
111
|
-
this._varyingsWGSL.push("
|
|
112
|
-
this._varyingsDeclWGSL.push("var<private> "
|
|
111
|
+
this._varyingsWGSL.push("@location(".concat(location_1, ") ").concat(name_1, " : ").concat(varyingType, ";"));
|
|
112
|
+
this._varyingsDeclWGSL.push("var<private> ".concat(name_1, " : ").concat(varyingType, ";"));
|
|
113
113
|
this._varyingNamesWGSL.push(name_1);
|
|
114
114
|
}
|
|
115
115
|
varying = "";
|
|
@@ -125,8 +125,8 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
125
125
|
var location_2 = this.webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name_2, attributeType, preProcessors)[2]);
|
|
126
126
|
this.webgpuProcessingContext.availableAttributes[name_2] = location_2;
|
|
127
127
|
this.webgpuProcessingContext.orderedAttributes[location_2] = name_2;
|
|
128
|
-
this._attributesWGSL.push("
|
|
129
|
-
this._attributesDeclWGSL.push("var<private> "
|
|
128
|
+
this._attributesWGSL.push("@location(".concat(location_2, ") ").concat(name_2, " : ").concat(attributeType, ";"));
|
|
129
|
+
this._attributesDeclWGSL.push("var<private> ".concat(name_2, " : ").concat(attributeType, ";"));
|
|
130
130
|
this._attributeNamesWGSL.push(name_2);
|
|
131
131
|
attribute = "";
|
|
132
132
|
}
|
|
@@ -177,12 +177,12 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
177
177
|
componentType === 'i32' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;
|
|
178
178
|
textureInfo.sampleType = sampleType;
|
|
179
179
|
if (textureDimension === undefined) {
|
|
180
|
-
throw "Can't get the texture dimension corresponding to the texture function \""
|
|
180
|
+
throw "Can't get the texture dimension corresponding to the texture function \"".concat(textureFunc, "\"!");
|
|
181
181
|
}
|
|
182
182
|
for (var i = 0; i < arraySize; ++i) {
|
|
183
183
|
var _a = textureInfo.textures[i], groupIndex = _a.groupIndex, bindingIndex = _a.bindingIndex;
|
|
184
184
|
if (i === 0) {
|
|
185
|
-
texture = "
|
|
185
|
+
texture = "@group(".concat(groupIndex, ") @binding(").concat(bindingIndex, ") ").concat(texture);
|
|
186
186
|
}
|
|
187
187
|
this._addTextureBindingDescription(name_4, textureInfo, i, textureDimension, storageTextureFormat, !isFragment);
|
|
188
188
|
}
|
|
@@ -207,41 +207,41 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
207
207
|
// Vertex code
|
|
208
208
|
vertexCode = vertexCode.replace(/#define /g, "//#define ");
|
|
209
209
|
var varyingsDecl = this._varyingsDeclWGSL.join("\n") + "\n";
|
|
210
|
-
var vertexBuiltinDecl = "var<private> "
|
|
210
|
+
var vertexBuiltinDecl = "var<private> ".concat(builtInName_vertex_index, " : u32;\nvar<private> ").concat(builtInName_instance_index, " : u32;\nvar<private> ").concat(builtInName_position, " : vec4<f32>;\n");
|
|
211
211
|
var vertexAttributesDecl = this._attributesDeclWGSL.join("\n") + "\n";
|
|
212
|
-
var vertexInputs = "struct VertexInputs {\n
|
|
212
|
+
var vertexInputs = "struct VertexInputs {\n @builtin(vertex_index) vertexIndex : u32;\n @builtin(instance_index) instanceIndex : u32;\n";
|
|
213
213
|
if (this._attributesWGSL.length > 0) {
|
|
214
214
|
vertexInputs += this._attributesWGSL.join("\n");
|
|
215
215
|
}
|
|
216
216
|
vertexInputs += "\n};\n";
|
|
217
|
-
var vertexFragmentInputs = "struct FragmentInputs {\n
|
|
217
|
+
var vertexFragmentInputs = "struct FragmentInputs {\n @builtin(position) position : vec4<f32>;\n";
|
|
218
218
|
if (this._varyingsWGSL.length > 0) {
|
|
219
219
|
vertexFragmentInputs += this._varyingsWGSL.join("\n");
|
|
220
220
|
}
|
|
221
221
|
vertexFragmentInputs += "\n};\n";
|
|
222
222
|
vertexCode = vertexBuiltinDecl + vertexInputs + vertexAttributesDecl + vertexFragmentInputs + varyingsDecl + vertexCode;
|
|
223
|
-
var vertexStartingCode = " var output : FragmentInputs;\n "
|
|
223
|
+
var vertexStartingCode = " var output : FragmentInputs;\n ".concat(builtInName_vertex_index, " = input.vertexIndex;\n ").concat(builtInName_instance_index, " = input.instanceIndex;\n");
|
|
224
224
|
for (var i = 0; i < this._attributeNamesWGSL.length; ++i) {
|
|
225
225
|
var name_5 = this._attributeNamesWGSL[i];
|
|
226
|
-
vertexStartingCode += " "
|
|
226
|
+
vertexStartingCode += " ".concat(name_5, " = input.").concat(name_5, ";\n");
|
|
227
227
|
}
|
|
228
|
-
var vertexEndingCode = " output.position = "
|
|
228
|
+
var vertexEndingCode = " output.position = ".concat(builtInName_position, ";\n output.position.y = output.position.y * internals.yFactor__;\n");
|
|
229
229
|
for (var i = 0; i < this._varyingNamesWGSL.length; ++i) {
|
|
230
230
|
var name_6 = this._varyingNamesWGSL[i];
|
|
231
|
-
vertexEndingCode += " output."
|
|
231
|
+
vertexEndingCode += " output.".concat(name_6, " = ").concat(name_6, ";\n");
|
|
232
232
|
}
|
|
233
233
|
vertexEndingCode += " return output;";
|
|
234
234
|
vertexCode = this._injectStartingAndEndingCode(vertexCode, "fn main", vertexStartingCode, vertexEndingCode);
|
|
235
235
|
// fragment code
|
|
236
236
|
fragmentCode = fragmentCode.replace(/#define /g, "//#define ");
|
|
237
237
|
fragmentCode = fragmentCode.replace(/dpdy/g, "(-internals.yFactor__)*dpdy"); // will also handle dpdyCoarse and dpdyFine
|
|
238
|
-
var fragmentBuiltinDecl = "var<private> "
|
|
239
|
-
var fragmentFragmentInputs = "struct FragmentInputs {\n
|
|
238
|
+
var fragmentBuiltinDecl = "var<private> ".concat(builtInName_position_frag, " : vec4<f32>;\nvar<private> ").concat(builtInName_front_facing, " : bool;\nvar<private> ").concat(builtInName_FragColor, " : vec4<f32>;\nvar<private> ").concat(builtInName_frag_depth, " : f32;\n");
|
|
239
|
+
var fragmentFragmentInputs = "struct FragmentInputs {\n @builtin(position) position : vec4<f32>;\n @builtin(front_facing) frontFacing : bool;\n";
|
|
240
240
|
if (this._varyingsWGSL.length > 0) {
|
|
241
241
|
fragmentFragmentInputs += this._varyingsWGSL.join("\n");
|
|
242
242
|
}
|
|
243
243
|
fragmentFragmentInputs += "\n};\n";
|
|
244
|
-
var fragmentOutputs = "struct FragmentOutputs {\n
|
|
244
|
+
var fragmentOutputs = "struct FragmentOutputs {\n @location(0) color : vec4<f32>;\n";
|
|
245
245
|
var hasFragDepth = false;
|
|
246
246
|
var idx = 0;
|
|
247
247
|
while (!hasFragDepth) {
|
|
@@ -261,18 +261,18 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
261
261
|
idx = saveIndex + builtInName_frag_depth.length;
|
|
262
262
|
}
|
|
263
263
|
if (hasFragDepth) {
|
|
264
|
-
fragmentOutputs += "
|
|
264
|
+
fragmentOutputs += " @builtin(frag_depth) fragDepth: f32;\n";
|
|
265
265
|
}
|
|
266
266
|
fragmentOutputs += "};\n";
|
|
267
267
|
fragmentCode = fragmentBuiltinDecl + fragmentFragmentInputs + varyingsDecl + fragmentOutputs + fragmentCode;
|
|
268
|
-
var fragmentStartingCode = " var output : FragmentOutputs;\n "
|
|
268
|
+
var fragmentStartingCode = " var output : FragmentOutputs;\n ".concat(builtInName_position_frag, " = input.position;\n ").concat(builtInName_front_facing, " = input.frontFacing;\n") + fragCoordCode;
|
|
269
269
|
for (var i = 0; i < this._varyingNamesWGSL.length; ++i) {
|
|
270
270
|
var name_7 = this._varyingNamesWGSL[i];
|
|
271
|
-
fragmentStartingCode += " "
|
|
271
|
+
fragmentStartingCode += " ".concat(name_7, " = input.").concat(name_7, ";\n");
|
|
272
272
|
}
|
|
273
|
-
var fragmentEndingCode = " output.color = "
|
|
273
|
+
var fragmentEndingCode = " output.color = ".concat(builtInName_FragColor, ";\n");
|
|
274
274
|
if (hasFragDepth) {
|
|
275
|
-
fragmentEndingCode += " output.fragDepth = "
|
|
275
|
+
fragmentEndingCode += " output.fragDepth = ".concat(builtInName_frag_depth, ";\n");
|
|
276
276
|
}
|
|
277
277
|
fragmentEndingCode += " return output;";
|
|
278
278
|
fragmentCode = this._injectStartingAndEndingCode(fragmentCode, "fn main", fragmentStartingCode, fragmentEndingCode);
|
|
@@ -281,25 +281,25 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
281
281
|
return { vertexCode: vertexCode, fragmentCode: fragmentCode };
|
|
282
282
|
};
|
|
283
283
|
WebGPUShaderProcessorWGSL.prototype._generateLeftOverUBOCode = function (name, uniformBufferDescription) {
|
|
284
|
-
var ubo = "struct "
|
|
284
|
+
var ubo = "struct ".concat(name, " {\n");
|
|
285
285
|
for (var _i = 0, _a = this.webgpuProcessingContext.leftOverUniforms; _i < _a.length; _i++) {
|
|
286
286
|
var leftOverUniform = _a[_i];
|
|
287
287
|
var type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, "$1");
|
|
288
288
|
var size = WebGPUShaderProcessor.UniformSizes[type];
|
|
289
289
|
if (leftOverUniform.length > 0) {
|
|
290
290
|
if (size <= 2) {
|
|
291
|
-
ubo += "
|
|
291
|
+
ubo += " @align(16) ".concat(leftOverUniform.name, " : @stride(16) array<").concat(leftOverUniform.type, ", ").concat(leftOverUniform.length, ">;\n");
|
|
292
292
|
}
|
|
293
293
|
else {
|
|
294
|
-
ubo += " "
|
|
294
|
+
ubo += " ".concat(leftOverUniform.name, " : array<").concat(leftOverUniform.type, ", ").concat(leftOverUniform.length, ">;\n");
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
else {
|
|
298
|
-
ubo += " "
|
|
298
|
+
ubo += " ".concat(leftOverUniform.name, " : ").concat(leftOverUniform.type, ";\n");
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
ubo += "};\n";
|
|
302
|
-
ubo += "
|
|
302
|
+
ubo += "@group(".concat(uniformBufferDescription.binding.groupIndex, ") @binding(").concat(uniformBufferDescription.binding.bindingIndex, ") var<uniform> ").concat(leftOverVarName, " : ").concat(name, ";\n");
|
|
303
303
|
return ubo;
|
|
304
304
|
};
|
|
305
305
|
WebGPUShaderProcessorWGSL.prototype._processSamplers = function (code, isVertex) {
|
|
@@ -329,7 +329,7 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
329
329
|
}
|
|
330
330
|
this._addSamplerBindingDescription(name_8, samplerInfo, isVertex);
|
|
331
331
|
var part1 = code.substring(0, match.index);
|
|
332
|
-
var insertPart = "
|
|
332
|
+
var insertPart = "@group(".concat(samplerInfo.binding.groupIndex, ") @binding(").concat(samplerInfo.binding.bindingIndex, ") ");
|
|
333
333
|
var part2 = code.substring(match.index);
|
|
334
334
|
code = part1 + insertPart + part2;
|
|
335
335
|
samplerRegexp.lastIndex += insertPart.length;
|
|
@@ -368,7 +368,7 @@ var WebGPUShaderProcessorWGSL = /** @class */ (function (_super) {
|
|
|
368
368
|
var groupIndex = bufferInfo.binding.groupIndex;
|
|
369
369
|
var bindingIndex = bufferInfo.binding.bindingIndex;
|
|
370
370
|
var part1 = code.substring(0, match.index);
|
|
371
|
-
var insertPart = "
|
|
371
|
+
var insertPart = "@group(".concat(groupIndex, ") @binding(").concat(bindingIndex, ") ");
|
|
372
372
|
var part2 = code.substring(match.index);
|
|
373
373
|
code = part1 + insertPart + part2;
|
|
374
374
|
instantiateBufferRegexp.lastIndex += insertPart.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuShaderProcessorsWGSL.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuShaderProcessorsWGSL.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from '../../types';\r\nimport { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\nimport { WebGPUShaderProcessingContext, WebGPUBufferDescription } from './webgpuShaderProcessingContext';\r\nimport * as WebGPUConstants from './webgpuConstants';\r\nimport { Logger } from '../../Misc/logger';\r\nimport { ThinEngine } from \"../thinEngine\";\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\nimport { RemoveComments } from \"../../Misc/codeStringParsingTools\";\r\n\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimation\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneFragment\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/meshUboDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\nconst builtInName_vertex_index = \"gl_VertexID\";\r\nconst builtInName_instance_index = \"gl_InstanceID\";\r\nconst builtInName_position = \"gl_Position\";\r\n\r\nconst builtInName_position_frag = \"gl_FragCoord\";\r\nconst builtInName_front_facing = \"gl_FrontFacing\";\r\nconst builtInName_frag_depth = \"gl_FragDepth\";\r\nconst builtInName_FragColor = \"gl_FragColor\";\r\n\r\nconst leftOverVarName = \"uniforms\";\r\nconst internalsVarName = \"internals\";\r\n\r\nconst gpuTextureViewDimensionByWebGPUTextureFunction: { [key: string]: Nullable<GPUTextureViewDimension> } = {\r\n \"texture_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_depth_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_depth_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_depth_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_storage_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_storage_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_external\": null\r\n};\r\n\r\n /** @hidden */\r\nexport class WebGPUShaderProcessorWGSL extends WebGPUShaderProcessor {\r\n\r\n protected _attributesWGSL: string[];\r\n protected _attributesDeclWGSL: string[];\r\n protected _attributeNamesWGSL: string[];\r\n protected _varyingsWGSL: string[];\r\n protected _varyingsDeclWGSL: string[];\r\n protected _varyingNamesWGSL: string[];\r\n\r\n public shaderLanguage = ShaderLanguage.WGSL;\r\n public uniformRegexp = /uniform\\s+(\\w+)\\s*:\\s*(.+)\\s*;/;\r\n public textureRegexp = /var\\s+(\\w+)\\s*:\\s*((array<\\s*)?(texture_\\w+)\\s*(<\\s*(.+)\\s*>)?\\s*(,\\s*\\w+\\s*>\\s*)?);/;\r\n public noPrecision = true;\r\n\r\n protected _getArraySize(name: string, uniformType: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n\r\n const endArray = uniformType.lastIndexOf(\">\");\r\n if (uniformType.indexOf(\"array\") >= 0 && endArray > 0) {\r\n let startArray = endArray;\r\n while (startArray > 0 && uniformType.charAt(startArray) !== ' ' && uniformType.charAt(startArray) !== ',') {\r\n startArray--;\r\n }\r\n const lengthInString = uniformType.substring(startArray + 1, endArray);\r\n length = +(lengthInString);\r\n if (isNaN(length)) {\r\n length = +(preProcessors[lengthInString.trim()]);\r\n }\r\n while (startArray > 0 && (uniformType.charAt(startArray) === ' ' || uniformType.charAt(startArray) === ',')) {\r\n startArray--;\r\n }\r\n uniformType = uniformType.substring(uniformType.indexOf(\"<\") + 1, startArray + 1);\r\n }\r\n\r\n return [name, uniformType, 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._attributesWGSL = [];\r\n this._attributesDeclWGSL = [];\r\n this._attributeNamesWGSL = [];\r\n this._varyingsWGSL = [];\r\n this._varyingsDeclWGSL = [];\r\n this._varyingNamesWGSL = [];\r\n }\r\n\r\n public preProcessShaderCode(code: string, isFragment: boolean): string {\r\n return `struct ${WebGPUShaderProcessor.InternalsUBOName} {\\nyFactor__: f32;\\ntextureOutputHeight__: f32;\\n};\\nvar<uniform> ${internalsVarName} : ${WebGPUShaderProcessor.InternalsUBOName};\\n` + RemoveComments(code);\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\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[2];\r\n const name = match[1];\r\n let location: number;\r\n if (isFragment) {\r\n location = this.webgpuProcessingContext.availableVaryings[name];\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 }\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._varyingsWGSL.push(`[[location(${location})]] ${name} : ${varyingType};`);\r\n this._varyingsDeclWGSL.push(`var<private> ${name} : ${varyingType};`);\r\n this._varyingNamesWGSL.push(name);\r\n }\r\n\r\n varying = \"\";\r\n }\r\n return varying;\r\n }\r\n\r\n public attributeProcessor(attribute: string, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\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[2];\r\n const name = match[1];\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 this._attributesWGSL.push(`[[location(${location})]] ${name} : ${attributeType};`);\r\n this._attributesDeclWGSL.push(`var<private> ${name} : ${attributeType};`);\r\n this._attributeNamesWGSL.push(name);\r\n attribute = \"\";\r\n }\r\n return attribute;\r\n }\r\n\r\n public uniformProcessor(uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.uniformRegexp.exec(uniform);\r\n if (match !== null) {\r\n let uniformType = match[2];\r\n let name = match[1];\r\n\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n\r\n uniform = \"\";\r\n }\r\n return uniform;\r\n }\r\n\r\n public textureProcessor(texture: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.textureRegexp.exec(texture);\r\n if (match !== null) {\r\n const name = match[1]; // name of the variable\r\n const type = match[2]; // texture_2d<f32> or array<texture_2d_array<f32>, 5> for eg\r\n const isArrayOfTexture = !!match[3];\r\n const textureFunc = match[4]; // texture_2d, texture_depth_2d, etc\r\n const isStorageTexture = textureFunc.indexOf(\"storage\") > 0;\r\n const componentType = match[6]; // f32 or i32 or u32 or undefined\r\n const storageTextureFormat = isStorageTexture ? componentType.substring(0, componentType.indexOf(\",\")).trim() as GPUTextureFormat : null;\r\n\r\n let arraySize = isArrayOfTexture ? this._getArraySize(name, type, preProcessors)[2] : 0;\r\n let textureInfo = this.webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n arraySize = arraySize || 1;\r\n for (let i = 0; i < arraySize; ++i) {\r\n textureInfo.textures.push(this.webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n } else {\r\n arraySize = textureInfo.textures.length;\r\n }\r\n\r\n this.webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n\r\n const isDepthTexture = textureFunc.indexOf(\"depth\") > 0;\r\n const textureDimension = gpuTextureViewDimensionByWebGPUTextureFunction[textureFunc];\r\n const sampleType =\r\n isDepthTexture ? WebGPUConstants.TextureSampleType.Depth :\r\n componentType === 'u32' ? WebGPUConstants.TextureSampleType.Uint :\r\n componentType === 'i32' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n if (textureDimension === undefined) {\r\n throw `Can't get the texture dimension corresponding to the texture function \"${textureFunc}\"!`;\r\n }\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n const { groupIndex, bindingIndex } = textureInfo.textures[i];\r\n\r\n if (i === 0) {\r\n texture = `[[group(${groupIndex}), binding(${bindingIndex})]] ${texture}`;\r\n }\r\n\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, storageTextureFormat, !isFragment);\r\n }\r\n }\r\n\r\n return texture;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n return code;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>): { vertexCode: string, fragmentCode: string } {\r\n const fragCoordCode = fragmentCode.indexOf(\"gl_FragCoord\") >= 0 ? `\r\n if (internals.yFactor__ == 1.) {\r\n gl_FragCoord.y = internals.textureOutputHeight__ - gl_FragCoord.y;\r\n }\r\n ` : \"\";\r\n\r\n // Add the group/binding info to the sampler declaration (var xxx: sampler|sampler_comparison)\r\n vertexCode = this._processSamplers(vertexCode, true);\r\n fragmentCode = this._processSamplers(fragmentCode, false);\r\n\r\n // Add the group/binding info to the uniform/storage buffer declarations (var<uniform> XXX:YYY or var<storage(,read_write|read)> XXX:YYY)\r\n vertexCode = this._processCustomBuffers(vertexCode, true);\r\n fragmentCode = this._processCustomBuffers(fragmentCode, false);\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 // Vertex code\r\n vertexCode = vertexCode.replace(/#define /g, \"//#define \");\r\n\r\n let varyingsDecl = this._varyingsDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexBuiltinDecl = `var<private> ${builtInName_vertex_index} : u32;\\nvar<private> ${builtInName_instance_index} : u32;\\nvar<private> ${builtInName_position} : vec4<f32>;\\n`;\r\n\r\n let vertexAttributesDecl = this._attributesDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexInputs = \"struct VertexInputs {\\n [[builtin(vertex_index)]] vertexIndex : u32;\\n [[builtin(instance_index)]] instanceIndex : u32;\\n\";\r\n if (this._attributesWGSL.length > 0) {\r\n vertexInputs += this._attributesWGSL.join(\"\\n\");\r\n }\r\n vertexInputs += \"\\n};\\n\";\r\n\r\n let vertexFragmentInputs = \"struct FragmentInputs {\\n [[builtin(position)]] position : vec4<f32>;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n vertexFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n vertexFragmentInputs += \"\\n};\\n\";\r\n\r\n vertexCode = vertexBuiltinDecl + vertexInputs + vertexAttributesDecl + vertexFragmentInputs + varyingsDecl + vertexCode;\r\n\r\n let vertexStartingCode = ` var output : FragmentInputs;\\n ${builtInName_vertex_index} = input.vertexIndex;\\n ${builtInName_instance_index} = input.instanceIndex;\\n`;\r\n\r\n for (let i = 0; i < this._attributeNamesWGSL.length; ++i) {\r\n const name = this._attributeNamesWGSL[i];\r\n vertexStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let vertexEndingCode = ` output.position = ${builtInName_position};\\n output.position.y = output.position.y * internals.yFactor__;\\n`;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n vertexEndingCode += ` output.${name} = ${name};\\n`;\r\n }\r\n\r\n vertexEndingCode += \" return output;\";\r\n\r\n vertexCode = this._injectStartingAndEndingCode(vertexCode, \"fn main\", vertexStartingCode, vertexEndingCode);\r\n\r\n // fragment code\r\n fragmentCode = fragmentCode.replace(/#define /g, \"//#define \");\r\n fragmentCode = fragmentCode.replace(/dpdy/g, \"(-internals.yFactor__)*dpdy\"); // will also handle dpdyCoarse and dpdyFine\r\n\r\n let fragmentBuiltinDecl = `var<private> ${builtInName_position_frag} : vec4<f32>;\\nvar<private> ${builtInName_front_facing} : bool;\\nvar<private> ${builtInName_FragColor} : vec4<f32>;\\nvar<private> ${builtInName_frag_depth} : f32;\\n`;\r\n\r\n let fragmentFragmentInputs = \"struct FragmentInputs {\\n [[builtin(position)]] position : vec4<f32>;\\n [[builtin(front_facing)]] frontFacing : bool;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n fragmentFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n fragmentFragmentInputs += \"\\n};\\n\";\r\n\r\n let fragmentOutputs = \"struct FragmentOutputs {\\n [[location(0)]] color : vec4<f32>;\\n\";\r\n\r\n let hasFragDepth = false;\r\n let idx = 0;\r\n while (!hasFragDepth) {\r\n idx = fragmentCode.indexOf(builtInName_frag_depth, idx);\r\n if (idx < 0) {\r\n break;\r\n }\r\n const saveIndex = idx;\r\n hasFragDepth = true;\r\n while (idx > 1 && fragmentCode.charAt(idx) !== '\\n') {\r\n if (fragmentCode.charAt(idx) === '/' && fragmentCode.charAt(idx - 1) === '/') {\r\n hasFragDepth = false;\r\n break;\r\n }\r\n idx--;\r\n }\r\n idx = saveIndex + builtInName_frag_depth.length;\r\n }\r\n\r\n if (hasFragDepth) {\r\n fragmentOutputs += \" [[builtin(frag_depth)]] fragDepth: f32;\\n\";\r\n }\r\n\r\n fragmentOutputs += \"};\\n\";\r\n\r\n fragmentCode = fragmentBuiltinDecl + fragmentFragmentInputs + varyingsDecl + fragmentOutputs + fragmentCode;\r\n\r\n let fragmentStartingCode = ` var output : FragmentOutputs;\\n ${builtInName_position_frag} = input.position;\\n ${builtInName_front_facing} = input.frontFacing;\\n` + fragCoordCode;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n fragmentStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let fragmentEndingCode = ` output.color = ${builtInName_FragColor};\\n`;\r\n\r\n if (hasFragDepth) {\r\n fragmentEndingCode += ` output.fragDepth = ${builtInName_frag_depth};\\n`;\r\n }\r\n\r\n fragmentEndingCode += \" return output;\";\r\n\r\n fragmentCode = this._injectStartingAndEndingCode(fragmentCode, \"fn main\", fragmentStartingCode, fragmentEndingCode);\r\n\r\n this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `struct ${name} {\\n`;\r\n for (let leftOverUniform of this.webgpuProcessingContext.leftOverUniforms) {\r\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\r\n const size = WebGPUShaderProcessor.UniformSizes[type];\r\n\r\n if (leftOverUniform.length > 0) {\r\n if (size <= 2) {\r\n ubo += ` [[align(16)]] ${leftOverUniform.name} : [[stride(16)]] array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n } else {\r\n ubo += ` ${leftOverUniform.name} : array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n }\r\n }\r\n else {\r\n ubo += ` ${leftOverUniform.name} : ${leftOverUniform.type};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\";\r\n\r\n ubo += `[[group(${uniformBufferDescription.binding.groupIndex}), binding(${uniformBufferDescription.binding.bindingIndex})]] var<uniform> ${leftOverVarName} : ${name};\\n`;\r\n\r\n return ubo;\r\n }\r\n\r\n private _processSamplers(code: string, isVertex: boolean): string {\r\n const samplerRegexp = /var\\s+(\\w+Sampler)\\s*:\\s*(sampler|sampler_comparison)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = samplerRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n const name = match[1]; // name of the variable\r\n const samplerType = match[2]; // sampler or sampler_comparison\r\n const textureName = name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix) === name.length - WebGPUShaderProcessor.AutoSamplerSuffix.length ? name.substring(0, name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix)) : null;\r\n const samplerBindingType = samplerType === \"sampler_comparison\" ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n\r\n if (textureName) {\r\n const textureInfo = this.webgpuProcessingContext.availableTextures[textureName];\r\n if (textureInfo) {\r\n textureInfo.autoBindSampler = true;\r\n }\r\n }\r\n\r\n let samplerInfo = this.webgpuProcessingContext.availableSamplers[name];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this.webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n this.webgpuProcessingContext.availableSamplers[name] = samplerInfo;\r\n }\r\n\r\n this._addSamplerBindingDescription(name, samplerInfo, isVertex);\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `[[group(${samplerInfo.binding.groupIndex}), binding(${samplerInfo.binding.bindingIndex})]] `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n samplerRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _processCustomBuffers(code: string, isVertex: boolean): string {\r\n const instantiateBufferRegexp = /var<\\s*(uniform|storage)\\s*(,\\s*(read|read_write)\\s*)?>\\s+(\\S+)\\s*:\\s*(\\S+)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = instantiateBufferRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n let type = match[1];\r\n let decoration = match[3];\r\n let name = match[4];\r\n const structName = match[5];\r\n\r\n let bufferInfo = this.webgpuProcessingContext.availableBuffers[name];\r\n if (!bufferInfo) {\r\n const knownUBO = type === \"uniform\" ? WebGPUShaderProcessingContext.KnownUBOs[structName] : null;\r\n\r\n let binding;\r\n if (knownUBO) {\r\n name = structName;\r\n binding = knownUBO.binding;\r\n if (binding.groupIndex === -1) {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n } else {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n bufferInfo = { binding };\r\n this.webgpuProcessingContext.availableBuffers[name] = bufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, this.webgpuProcessingContext.availableBuffers[name], decoration === \"read_write\" ? WebGPUConstants.BufferBindingType.Storage : type === \"storage\" ? WebGPUConstants.BufferBindingType.ReadOnlyStorage : WebGPUConstants.BufferBindingType.Uniform, isVertex);\r\n\r\n const groupIndex = bufferInfo.binding.groupIndex;\r\n const bindingIndex = bufferInfo.binding.bindingIndex;\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `[[group(${groupIndex}), binding(${bindingIndex})]] `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n instantiateBufferRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n}"]}
|
|
1
|
+
{"version":3,"file":"webgpuShaderProcessorsWGSL.js","sourceRoot":"","sources":["../../../../sourceES6/core/Engines/WebGPU/webgpuShaderProcessorsWGSL.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from '../../types';\r\nimport { ShaderProcessingContext } from \"../Processors/shaderProcessingOptions\";\r\nimport { WebGPUShaderProcessingContext, WebGPUBufferDescription } from './webgpuShaderProcessingContext';\r\nimport * as WebGPUConstants from './webgpuConstants';\r\nimport { Logger } from '../../Misc/logger';\r\nimport { ThinEngine } from \"../thinEngine\";\r\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\r\nimport { RemoveComments } from \"../../Misc/codeStringParsingTools\";\r\n\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bonesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimation\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneFragment\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/instancesVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/meshUboDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertex\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal\";\r\nimport \"../../ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration\";\r\nimport \"../../ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\r\nimport { ShaderLanguage } from \"../../Materials/shaderLanguage\";\r\n\r\nconst builtInName_vertex_index = \"gl_VertexID\";\r\nconst builtInName_instance_index = \"gl_InstanceID\";\r\nconst builtInName_position = \"gl_Position\";\r\n\r\nconst builtInName_position_frag = \"gl_FragCoord\";\r\nconst builtInName_front_facing = \"gl_FrontFacing\";\r\nconst builtInName_frag_depth = \"gl_FragDepth\";\r\nconst builtInName_FragColor = \"gl_FragColor\";\r\n\r\nconst leftOverVarName = \"uniforms\";\r\nconst internalsVarName = \"internals\";\r\n\r\nconst gpuTextureViewDimensionByWebGPUTextureFunction: { [key: string]: Nullable<GPUTextureViewDimension> } = {\r\n \"texture_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_depth_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_depth_cube\": WebGPUConstants.TextureViewDimension.Cube,\r\n \"texture_depth_cube_array\": WebGPUConstants.TextureViewDimension.CubeArray,\r\n \"texture_depth_multisampled_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_1d\": WebGPUConstants.TextureViewDimension.E1d,\r\n \"texture_storage_2d\": WebGPUConstants.TextureViewDimension.E2d,\r\n \"texture_storage_2d_array\": WebGPUConstants.TextureViewDimension.E2dArray,\r\n \"texture_storage_3d\": WebGPUConstants.TextureViewDimension.E3d,\r\n \"texture_external\": null\r\n};\r\n\r\n /** @hidden */\r\nexport class WebGPUShaderProcessorWGSL extends WebGPUShaderProcessor {\r\n\r\n protected _attributesWGSL: string[];\r\n protected _attributesDeclWGSL: string[];\r\n protected _attributeNamesWGSL: string[];\r\n protected _varyingsWGSL: string[];\r\n protected _varyingsDeclWGSL: string[];\r\n protected _varyingNamesWGSL: string[];\r\n\r\n public shaderLanguage = ShaderLanguage.WGSL;\r\n public uniformRegexp = /uniform\\s+(\\w+)\\s*:\\s*(.+)\\s*;/;\r\n public textureRegexp = /var\\s+(\\w+)\\s*:\\s*((array<\\s*)?(texture_\\w+)\\s*(<\\s*(.+)\\s*>)?\\s*(,\\s*\\w+\\s*>\\s*)?);/;\r\n public noPrecision = true;\r\n\r\n protected _getArraySize(name: string, uniformType: string, preProcessors: { [key: string]: string }): [string, string, number] {\r\n let length = 0;\r\n\r\n const endArray = uniformType.lastIndexOf(\">\");\r\n if (uniformType.indexOf(\"array\") >= 0 && endArray > 0) {\r\n let startArray = endArray;\r\n while (startArray > 0 && uniformType.charAt(startArray) !== ' ' && uniformType.charAt(startArray) !== ',') {\r\n startArray--;\r\n }\r\n const lengthInString = uniformType.substring(startArray + 1, endArray);\r\n length = +(lengthInString);\r\n if (isNaN(length)) {\r\n length = +(preProcessors[lengthInString.trim()]);\r\n }\r\n while (startArray > 0 && (uniformType.charAt(startArray) === ' ' || uniformType.charAt(startArray) === ',')) {\r\n startArray--;\r\n }\r\n uniformType = uniformType.substring(uniformType.indexOf(\"<\") + 1, startArray + 1);\r\n }\r\n\r\n return [name, uniformType, 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._attributesWGSL = [];\r\n this._attributesDeclWGSL = [];\r\n this._attributeNamesWGSL = [];\r\n this._varyingsWGSL = [];\r\n this._varyingsDeclWGSL = [];\r\n this._varyingNamesWGSL = [];\r\n }\r\n\r\n public preProcessShaderCode(code: string, isFragment: boolean): string {\r\n return `struct ${WebGPUShaderProcessor.InternalsUBOName} {\\nyFactor__: f32;\\ntextureOutputHeight__: f32;\\n};\\nvar<uniform> ${internalsVarName} : ${WebGPUShaderProcessor.InternalsUBOName};\\n` + RemoveComments(code);\r\n }\r\n\r\n public varyingProcessor(varying: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\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[2];\r\n const name = match[1];\r\n let location: number;\r\n if (isFragment) {\r\n location = this.webgpuProcessingContext.availableVaryings[name];\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 }\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._varyingsWGSL.push(`@location(${location}) ${name} : ${varyingType};`);\r\n this._varyingsDeclWGSL.push(`var<private> ${name} : ${varyingType};`);\r\n this._varyingNamesWGSL.push(name);\r\n }\r\n\r\n varying = \"\";\r\n }\r\n return varying;\r\n }\r\n\r\n public attributeProcessor(attribute: string, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>) {\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[2];\r\n const name = match[1];\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 this._attributesWGSL.push(`@location(${location}) ${name} : ${attributeType};`);\r\n this._attributesDeclWGSL.push(`var<private> ${name} : ${attributeType};`);\r\n this._attributeNamesWGSL.push(name);\r\n attribute = \"\";\r\n }\r\n return attribute;\r\n }\r\n\r\n public uniformProcessor(uniform: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.uniformRegexp.exec(uniform);\r\n if (match !== null) {\r\n let uniformType = match[2];\r\n let name = match[1];\r\n\r\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\r\n\r\n uniform = \"\";\r\n }\r\n return uniform;\r\n }\r\n\r\n public textureProcessor(texture: string, isFragment: boolean, preProcessors: { [key: string]: string }, processingContext: Nullable<ShaderProcessingContext>): string {\r\n const match = this.textureRegexp.exec(texture);\r\n if (match !== null) {\r\n const name = match[1]; // name of the variable\r\n const type = match[2]; // texture_2d<f32> or array<texture_2d_array<f32>, 5> for eg\r\n const isArrayOfTexture = !!match[3];\r\n const textureFunc = match[4]; // texture_2d, texture_depth_2d, etc\r\n const isStorageTexture = textureFunc.indexOf(\"storage\") > 0;\r\n const componentType = match[6]; // f32 or i32 or u32 or undefined\r\n const storageTextureFormat = isStorageTexture ? componentType.substring(0, componentType.indexOf(\",\")).trim() as GPUTextureFormat : null;\r\n\r\n let arraySize = isArrayOfTexture ? this._getArraySize(name, type, preProcessors)[2] : 0;\r\n let textureInfo = this.webgpuProcessingContext.availableTextures[name];\r\n if (!textureInfo) {\r\n textureInfo = {\r\n isTextureArray: arraySize > 0,\r\n isStorageTexture,\r\n textures: [],\r\n sampleType: WebGPUConstants.TextureSampleType.Float,\r\n };\r\n arraySize = arraySize || 1;\r\n for (let i = 0; i < arraySize; ++i) {\r\n textureInfo.textures.push(this.webgpuProcessingContext.getNextFreeUBOBinding());\r\n }\r\n } else {\r\n arraySize = textureInfo.textures.length;\r\n }\r\n\r\n this.webgpuProcessingContext.availableTextures[name] = textureInfo;\r\n\r\n const isDepthTexture = textureFunc.indexOf(\"depth\") > 0;\r\n const textureDimension = gpuTextureViewDimensionByWebGPUTextureFunction[textureFunc];\r\n const sampleType =\r\n isDepthTexture ? WebGPUConstants.TextureSampleType.Depth :\r\n componentType === 'u32' ? WebGPUConstants.TextureSampleType.Uint :\r\n componentType === 'i32' ? WebGPUConstants.TextureSampleType.Sint : WebGPUConstants.TextureSampleType.Float;\r\n\r\n textureInfo.sampleType = sampleType;\r\n\r\n if (textureDimension === undefined) {\r\n throw `Can't get the texture dimension corresponding to the texture function \"${textureFunc}\"!`;\r\n }\r\n\r\n for (let i = 0; i < arraySize; ++i) {\r\n const { groupIndex, bindingIndex } = textureInfo.textures[i];\r\n\r\n if (i === 0) {\r\n texture = `@group(${groupIndex}) @binding(${bindingIndex}) ${texture}`;\r\n }\r\n\r\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, storageTextureFormat, !isFragment);\r\n }\r\n }\r\n\r\n return texture;\r\n }\r\n\r\n public postProcessor(code: string, defines: string[], isFragment: boolean, processingContext: Nullable<ShaderProcessingContext>, engine: ThinEngine) {\r\n return code;\r\n }\r\n\r\n public finalizeShaders(vertexCode: string, fragmentCode: string, processingContext: Nullable<ShaderProcessingContext>): { vertexCode: string, fragmentCode: string } {\r\n const fragCoordCode = fragmentCode.indexOf(\"gl_FragCoord\") >= 0 ? `\r\n if (internals.yFactor__ == 1.) {\r\n gl_FragCoord.y = internals.textureOutputHeight__ - gl_FragCoord.y;\r\n }\r\n ` : \"\";\r\n\r\n // Add the group/binding info to the sampler declaration (var xxx: sampler|sampler_comparison)\r\n vertexCode = this._processSamplers(vertexCode, true);\r\n fragmentCode = this._processSamplers(fragmentCode, false);\r\n\r\n // Add the group/binding info to the uniform/storage buffer declarations (var<uniform> XXX:YYY or var<storage(,read_write|read)> XXX:YYY)\r\n vertexCode = this._processCustomBuffers(vertexCode, true);\r\n fragmentCode = this._processCustomBuffers(fragmentCode, false);\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 // Vertex code\r\n vertexCode = vertexCode.replace(/#define /g, \"//#define \");\r\n\r\n let varyingsDecl = this._varyingsDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexBuiltinDecl = `var<private> ${builtInName_vertex_index} : u32;\\nvar<private> ${builtInName_instance_index} : u32;\\nvar<private> ${builtInName_position} : vec4<f32>;\\n`;\r\n\r\n let vertexAttributesDecl = this._attributesDeclWGSL.join(\"\\n\") + \"\\n\";\r\n\r\n let vertexInputs = \"struct VertexInputs {\\n @builtin(vertex_index) vertexIndex : u32;\\n @builtin(instance_index) instanceIndex : u32;\\n\";\r\n if (this._attributesWGSL.length > 0) {\r\n vertexInputs += this._attributesWGSL.join(\"\\n\");\r\n }\r\n vertexInputs += \"\\n};\\n\";\r\n\r\n let vertexFragmentInputs = \"struct FragmentInputs {\\n @builtin(position) position : vec4<f32>;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n vertexFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n vertexFragmentInputs += \"\\n};\\n\";\r\n\r\n vertexCode = vertexBuiltinDecl + vertexInputs + vertexAttributesDecl + vertexFragmentInputs + varyingsDecl + vertexCode;\r\n\r\n let vertexStartingCode = ` var output : FragmentInputs;\\n ${builtInName_vertex_index} = input.vertexIndex;\\n ${builtInName_instance_index} = input.instanceIndex;\\n`;\r\n\r\n for (let i = 0; i < this._attributeNamesWGSL.length; ++i) {\r\n const name = this._attributeNamesWGSL[i];\r\n vertexStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let vertexEndingCode = ` output.position = ${builtInName_position};\\n output.position.y = output.position.y * internals.yFactor__;\\n`;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n vertexEndingCode += ` output.${name} = ${name};\\n`;\r\n }\r\n\r\n vertexEndingCode += \" return output;\";\r\n\r\n vertexCode = this._injectStartingAndEndingCode(vertexCode, \"fn main\", vertexStartingCode, vertexEndingCode);\r\n\r\n // fragment code\r\n fragmentCode = fragmentCode.replace(/#define /g, \"//#define \");\r\n fragmentCode = fragmentCode.replace(/dpdy/g, \"(-internals.yFactor__)*dpdy\"); // will also handle dpdyCoarse and dpdyFine\r\n\r\n let fragmentBuiltinDecl = `var<private> ${builtInName_position_frag} : vec4<f32>;\\nvar<private> ${builtInName_front_facing} : bool;\\nvar<private> ${builtInName_FragColor} : vec4<f32>;\\nvar<private> ${builtInName_frag_depth} : f32;\\n`;\r\n\r\n let fragmentFragmentInputs = \"struct FragmentInputs {\\n @builtin(position) position : vec4<f32>;\\n @builtin(front_facing) frontFacing : bool;\\n\";\r\n if (this._varyingsWGSL.length > 0) {\r\n fragmentFragmentInputs += this._varyingsWGSL.join(\"\\n\");\r\n }\r\n fragmentFragmentInputs += \"\\n};\\n\";\r\n\r\n let fragmentOutputs = \"struct FragmentOutputs {\\n @location(0) color : vec4<f32>;\\n\";\r\n\r\n let hasFragDepth = false;\r\n let idx = 0;\r\n while (!hasFragDepth) {\r\n idx = fragmentCode.indexOf(builtInName_frag_depth, idx);\r\n if (idx < 0) {\r\n break;\r\n }\r\n const saveIndex = idx;\r\n hasFragDepth = true;\r\n while (idx > 1 && fragmentCode.charAt(idx) !== '\\n') {\r\n if (fragmentCode.charAt(idx) === '/' && fragmentCode.charAt(idx - 1) === '/') {\r\n hasFragDepth = false;\r\n break;\r\n }\r\n idx--;\r\n }\r\n idx = saveIndex + builtInName_frag_depth.length;\r\n }\r\n\r\n if (hasFragDepth) {\r\n fragmentOutputs += \" @builtin(frag_depth) fragDepth: f32;\\n\";\r\n }\r\n\r\n fragmentOutputs += \"};\\n\";\r\n\r\n fragmentCode = fragmentBuiltinDecl + fragmentFragmentInputs + varyingsDecl + fragmentOutputs + fragmentCode;\r\n\r\n let fragmentStartingCode = ` var output : FragmentOutputs;\\n ${builtInName_position_frag} = input.position;\\n ${builtInName_front_facing} = input.frontFacing;\\n` + fragCoordCode;\r\n\r\n for (let i = 0; i < this._varyingNamesWGSL.length; ++i) {\r\n const name = this._varyingNamesWGSL[i];\r\n fragmentStartingCode += ` ${name} = input.${name};\\n`;\r\n }\r\n\r\n let fragmentEndingCode = ` output.color = ${builtInName_FragColor};\\n`;\r\n\r\n if (hasFragDepth) {\r\n fragmentEndingCode += ` output.fragDepth = ${builtInName_frag_depth};\\n`;\r\n }\r\n\r\n fragmentEndingCode += \" return output;\";\r\n\r\n fragmentCode = this._injectStartingAndEndingCode(fragmentCode, \"fn main\", fragmentStartingCode, fragmentEndingCode);\r\n\r\n this._collectBindingNames();\r\n this._preCreateBindGroupEntries();\r\n\r\n return { vertexCode, fragmentCode };\r\n }\r\n\r\n protected _generateLeftOverUBOCode(name: string, uniformBufferDescription: WebGPUBufferDescription): string {\r\n let ubo = `struct ${name} {\\n`;\r\n for (let leftOverUniform of this.webgpuProcessingContext.leftOverUniforms) {\r\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\r\n const size = WebGPUShaderProcessor.UniformSizes[type];\r\n\r\n if (leftOverUniform.length > 0) {\r\n if (size <= 2) {\r\n ubo += ` @align(16) ${leftOverUniform.name} : @stride(16) array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n } else {\r\n ubo += ` ${leftOverUniform.name} : array<${leftOverUniform.type}, ${leftOverUniform.length}>;\\n`;\r\n }\r\n }\r\n else {\r\n ubo += ` ${leftOverUniform.name} : ${leftOverUniform.type};\\n`;\r\n }\r\n }\r\n ubo += \"};\\n\";\r\n\r\n ubo += `@group(${uniformBufferDescription.binding.groupIndex}) @binding(${uniformBufferDescription.binding.bindingIndex}) var<uniform> ${leftOverVarName} : ${name};\\n`;\r\n\r\n return ubo;\r\n }\r\n\r\n private _processSamplers(code: string, isVertex: boolean): string {\r\n const samplerRegexp = /var\\s+(\\w+Sampler)\\s*:\\s*(sampler|sampler_comparison)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = samplerRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n const name = match[1]; // name of the variable\r\n const samplerType = match[2]; // sampler or sampler_comparison\r\n const textureName = name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix) === name.length - WebGPUShaderProcessor.AutoSamplerSuffix.length ? name.substring(0, name.indexOf(WebGPUShaderProcessor.AutoSamplerSuffix)) : null;\r\n const samplerBindingType = samplerType === \"sampler_comparison\" ? WebGPUConstants.SamplerBindingType.Comparison : WebGPUConstants.SamplerBindingType.Filtering;\r\n\r\n if (textureName) {\r\n const textureInfo = this.webgpuProcessingContext.availableTextures[textureName];\r\n if (textureInfo) {\r\n textureInfo.autoBindSampler = true;\r\n }\r\n }\r\n\r\n let samplerInfo = this.webgpuProcessingContext.availableSamplers[name];\r\n if (!samplerInfo) {\r\n samplerInfo = {\r\n binding: this.webgpuProcessingContext.getNextFreeUBOBinding(),\r\n type: samplerBindingType,\r\n };\r\n this.webgpuProcessingContext.availableSamplers[name] = samplerInfo;\r\n }\r\n\r\n this._addSamplerBindingDescription(name, samplerInfo, isVertex);\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `@group(${samplerInfo.binding.groupIndex}) @binding(${samplerInfo.binding.bindingIndex}) `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n samplerRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _processCustomBuffers(code: string, isVertex: boolean): string {\r\n const instantiateBufferRegexp = /var<\\s*(uniform|storage)\\s*(,\\s*(read|read_write)\\s*)?>\\s+(\\S+)\\s*:\\s*(\\S+)\\s*;/gm;\r\n\r\n while (true) {\r\n const match = instantiateBufferRegexp.exec(code);\r\n if (match === null) {\r\n break;\r\n }\r\n\r\n let type = match[1];\r\n let decoration = match[3];\r\n let name = match[4];\r\n const structName = match[5];\r\n\r\n let bufferInfo = this.webgpuProcessingContext.availableBuffers[name];\r\n if (!bufferInfo) {\r\n const knownUBO = type === \"uniform\" ? WebGPUShaderProcessingContext.KnownUBOs[structName] : null;\r\n\r\n let binding;\r\n if (knownUBO) {\r\n name = structName;\r\n binding = knownUBO.binding;\r\n if (binding.groupIndex === -1) {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n } else {\r\n binding = this.webgpuProcessingContext.getNextFreeUBOBinding();\r\n }\r\n\r\n bufferInfo = { binding };\r\n this.webgpuProcessingContext.availableBuffers[name] = bufferInfo;\r\n }\r\n\r\n this._addBufferBindingDescription(name, this.webgpuProcessingContext.availableBuffers[name], decoration === \"read_write\" ? WebGPUConstants.BufferBindingType.Storage : type === \"storage\" ? WebGPUConstants.BufferBindingType.ReadOnlyStorage : WebGPUConstants.BufferBindingType.Uniform, isVertex);\r\n\r\n const groupIndex = bufferInfo.binding.groupIndex;\r\n const bindingIndex = bufferInfo.binding.bindingIndex;\r\n\r\n const part1 = code.substring(0, match.index);\r\n const insertPart = `@group(${groupIndex}) @binding(${bindingIndex}) `;\r\n const part2 = code.substring(match.index);\r\n\r\n code = part1 + insertPart + part2;\r\n\r\n instantiateBufferRegexp.lastIndex += insertPart.length;\r\n }\r\n\r\n return code;\r\n }\r\n\r\n}"]}
|
|
@@ -28,7 +28,6 @@ export declare class WebGPUTextureHelper {
|
|
|
28
28
|
private static _GetBlockInformationFromFormat;
|
|
29
29
|
private static _IsHardwareTexture;
|
|
30
30
|
private static _IsInternalTexture;
|
|
31
|
-
static GetCompareFunction(compareFunction: Nullable<number>): GPUCompareFunction;
|
|
32
31
|
static IsImageBitmap(imageBitmap: ImageBitmap | {
|
|
33
32
|
width: number;
|
|
34
33
|
height: number;
|
|
@@ -424,28 +424,6 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
424
424
|
WebGPUTextureHelper._IsInternalTexture = function (texture) {
|
|
425
425
|
return !!texture.dispose;
|
|
426
426
|
};
|
|
427
|
-
WebGPUTextureHelper.GetCompareFunction = function (compareFunction) {
|
|
428
|
-
switch (compareFunction) {
|
|
429
|
-
case 519:
|
|
430
|
-
return WebGPUConstants.CompareFunction.Always;
|
|
431
|
-
case 514:
|
|
432
|
-
return WebGPUConstants.CompareFunction.Equal;
|
|
433
|
-
case 516:
|
|
434
|
-
return WebGPUConstants.CompareFunction.Greater;
|
|
435
|
-
case 518:
|
|
436
|
-
return WebGPUConstants.CompareFunction.GreaterEqual;
|
|
437
|
-
case 513:
|
|
438
|
-
return WebGPUConstants.CompareFunction.Less;
|
|
439
|
-
case 515:
|
|
440
|
-
return WebGPUConstants.CompareFunction.LessEqual;
|
|
441
|
-
case 512:
|
|
442
|
-
return WebGPUConstants.CompareFunction.Never;
|
|
443
|
-
case 517:
|
|
444
|
-
return WebGPUConstants.CompareFunction.NotEqual;
|
|
445
|
-
default:
|
|
446
|
-
return WebGPUConstants.CompareFunction.Less;
|
|
447
|
-
}
|
|
448
|
-
};
|
|
449
427
|
WebGPUTextureHelper.IsImageBitmap = function (imageBitmap) {
|
|
450
428
|
return imageBitmap.close !== undefined;
|
|
451
429
|
};
|
|
@@ -793,7 +771,7 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
793
771
|
case WebGPUConstants.TextureFormat.ASTC12x12UnormSRGB:
|
|
794
772
|
return 4;
|
|
795
773
|
}
|
|
796
|
-
throw "Unknown format "
|
|
774
|
+
throw "Unknown format ".concat(format, "!");
|
|
797
775
|
};
|
|
798
776
|
WebGPUTextureHelper.HasStencilAspect = function (format) {
|
|
799
777
|
switch (format) {
|
|
@@ -823,7 +801,7 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
823
801
|
if (useOwnCommandEncoder) {
|
|
824
802
|
commandEncoder = this._device.createCommandEncoder({});
|
|
825
803
|
}
|
|
826
|
-
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, "internal process texture - invertY="
|
|
804
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, "internal process texture - invertY=".concat(invertY, " premultiplyAlpha=").concat(premultiplyAlpha));
|
|
827
805
|
var gpuTexture;
|
|
828
806
|
if (WebGPUTextureHelper._IsHardwareTexture(gpuOrHdwTexture)) {
|
|
829
807
|
gpuTexture = gpuOrHdwTexture.underlyingResource;
|
|
@@ -977,7 +955,7 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
977
955
|
var usages = usage >= 0 ? usage : WebGPUConstants.TextureUsage.CopySrc | WebGPUConstants.TextureUsage.CopyDst | WebGPUConstants.TextureUsage.TextureBinding;
|
|
978
956
|
additionalUsages |= hasMipmaps && !isCompressedFormat ? WebGPUConstants.TextureUsage.CopySrc | WebGPUConstants.TextureUsage.RenderAttachment : 0;
|
|
979
957
|
if (!isCompressedFormat) {
|
|
980
|
-
// we don't know in advance if the texture will be updated with
|
|
958
|
+
// we don't know in advance if the texture will be updated with copyExternalImageToTexture (which requires to have those flags), so we need to force the flags all the times
|
|
981
959
|
additionalUsages |= WebGPUConstants.TextureUsage.RenderAttachment | WebGPUConstants.TextureUsage.CopyDst;
|
|
982
960
|
}
|
|
983
961
|
var gpuTexture = this._device.createTexture({
|
|
@@ -1016,7 +994,7 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
1016
994
|
var usages = usage >= 0 ? usage : WebGPUConstants.TextureUsage.CopySrc | WebGPUConstants.TextureUsage.CopyDst | WebGPUConstants.TextureUsage.TextureBinding;
|
|
1017
995
|
additionalUsages |= hasMipmaps && !isCompressedFormat ? WebGPUConstants.TextureUsage.CopySrc | WebGPUConstants.TextureUsage.RenderAttachment : 0;
|
|
1018
996
|
if (!isCompressedFormat) {
|
|
1019
|
-
// we don't know in advance if the texture will be updated with
|
|
997
|
+
// we don't know in advance if the texture will be updated with copyExternalImageToTexture (which requires to have those flags), so we need to force the flags all the times
|
|
1020
998
|
additionalUsages |= WebGPUConstants.TextureUsage.RenderAttachment | WebGPUConstants.TextureUsage.CopyDst;
|
|
1021
999
|
}
|
|
1022
1000
|
var gpuTexture = this._device.createTexture({
|
|
@@ -1045,7 +1023,7 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
1045
1023
|
if (useOwnCommandEncoder) {
|
|
1046
1024
|
commandEncoder = this._device.createCommandEncoder({});
|
|
1047
1025
|
}
|
|
1048
|
-
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, "create cube mipmaps - "
|
|
1026
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, "create cube mipmaps - ".concat(mipLevelCount, " levels"));
|
|
1049
1027
|
for (var f = 0; f < 6; ++f) {
|
|
1050
1028
|
this.generateMipmaps(gpuTexture, format, mipLevelCount, f, commandEncoder);
|
|
1051
1029
|
}
|
|
@@ -1064,7 +1042,7 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
1064
1042
|
if (useOwnCommandEncoder) {
|
|
1065
1043
|
commandEncoder = this._device.createCommandEncoder({});
|
|
1066
1044
|
}
|
|
1067
|
-
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, "create mipmaps for face #"
|
|
1045
|
+
(_b = (_a = commandEncoder).pushDebugGroup) === null || _b === void 0 ? void 0 : _b.call(_a, "create mipmaps for face #".concat(faceIndex, " - ").concat(mipLevelCount, " levels"));
|
|
1068
1046
|
var gpuTexture;
|
|
1069
1047
|
if (WebGPUTextureHelper._IsHardwareTexture(gpuOrHdwTexture)) {
|
|
1070
1048
|
gpuTexture = gpuOrHdwTexture.underlyingResource;
|
|
@@ -1199,11 +1177,11 @@ var WebGPUTextureHelper = /** @class */ (function () {
|
|
|
1199
1177
|
var layerCount = texture.depth || 1;
|
|
1200
1178
|
if (texture.isCube) {
|
|
1201
1179
|
var gpuMSAATexture = this.createCubeTexture({ width: width, height: height }, false, false, texture.invertY, false, gpuTextureWrapper.format, samples, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages);
|
|
1202
|
-
gpuTextureWrapper.
|
|
1180
|
+
gpuTextureWrapper.msaaTexture = gpuMSAATexture;
|
|
1203
1181
|
}
|
|
1204
1182
|
else {
|
|
1205
1183
|
var gpuMSAATexture = this.createTexture({ width: width, height: height, layers: layerCount }, false, false, texture.invertY, false, texture.is3D, gpuTextureWrapper.format, samples, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages);
|
|
1206
|
-
gpuTextureWrapper.
|
|
1184
|
+
gpuTextureWrapper.msaaTexture = gpuMSAATexture;
|
|
1207
1185
|
}
|
|
1208
1186
|
};
|
|
1209
1187
|
//------------------------------------------------------------------------------
|