@onerjs/core 8.56.3 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.core.js +36 -0
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationGroup.pure.d.ts +61 -1
- package/Animations/animationGroup.pure.js +191 -2
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/index.d.ts +1 -0
- package/Animations/index.js +1 -0
- package/Animations/index.js.map +1 -1
- package/Animations/pure.d.ts +1 -0
- package/Animations/pure.js +1 -0
- package/Animations/pure.js.map +1 -1
- package/Animations/rootMotion.d.ts +560 -0
- package/Animations/rootMotion.js +1709 -0
- package/Animations/rootMotion.js.map +1 -0
- package/Animations/runtimeAnimation.d.ts +57 -0
- package/Animations/runtimeAnimation.js +127 -3
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.d.ts +2 -0
- package/Cameras/arcRotateCamera.pure.js +2 -0
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +4 -0
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +2 -0
- package/Cameras/targetCamera.pure.js +7 -1
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
- package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
- package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.pure.js +63 -0
- package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +1 -1
- package/Engines/Extensions/pure.js +1 -1
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
- package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
- package/Engines/WebGPU/Extensions/pure.js +1 -1
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
- package/Engines/WebGPU/webgpuBundleList.js +4 -0
- package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
- package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
- package/Engines/WebGPU/webgpuTextureManager.js +286 -13
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +2 -0
- package/Engines/abstractEngine.pure.js +7 -3
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +14 -0
- package/Engines/thinEngine.pure.js +48 -12
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +1 -0
- package/Engines/thinNativeEngine.pure.js +7 -1
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +4 -0
- package/Engines/thinWebGPUEngine.js +10 -1
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +5 -2
- package/Engines/webgpuEngine.pure.js +48 -13
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +4 -0
- package/FlowGraph/flowGraph.js +38 -7
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +3 -0
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphConnection.d.ts +7 -0
- package/FlowGraph/flowGraphConnection.js +7 -0
- package/FlowGraph/flowGraphConnection.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +2 -1
- package/FlowGraph/flowGraphContext.js +4 -3
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
- package/FlowGraph/flowGraphCoordinator.js +47 -16
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
- package/FlowGraph/flowGraphEventBlock.js +7 -0
- package/FlowGraph/flowGraphEventBlock.js.map +1 -1
- package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
- package/FlowGraph/flowGraphHostResolver.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +60 -2
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/serialization.d.ts +2 -0
- package/FlowGraph/serialization.js +10 -22
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +8 -0
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
- package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/pure.js +1 -0
- package/FrameGraph/Node/Blocks/pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/frameGraphObjectList.d.ts +6 -1
- package/FrameGraph/frameGraphObjectList.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
- package/FrameGraph/frameGraphRenderContext.js +5 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/FrameGraph/pure.d.ts +1 -0
- package/FrameGraph/pure.js +1 -0
- package/FrameGraph/pure.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +4 -0
- package/Inputs/scene.inputManager.js +50 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
- package/Materials/Node/nodeMaterial.pure.js +4 -0
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +25 -3
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +3 -0
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +1 -1
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +8 -1
- package/Materials/Textures/internalTexture.js +9 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/textureHelper.functions.d.ts +14 -0
- package/Materials/Textures/textureHelper.functions.js +24 -0
- package/Materials/Textures/textureHelper.functions.js.map +1 -1
- package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +46 -1
- package/Materials/materialHelper.geometryrendering.js +105 -8
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/prepass.defines.d.ts +2 -0
- package/Materials/prepass.defines.js +2 -0
- package/Materials/prepass.defines.js.map +1 -1
- package/Materials/pure.d.ts +1 -0
- package/Materials/pure.js +1 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -0
- package/Materials/standardMaterial.pure.js +6 -3
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
- package/Meshes/Builders/polygonBuilder.pure.js +4 -1
- package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.d.ts +18 -0
- package/Meshes/abstractMesh.pure.js +22 -0
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.pure.d.ts +5 -0
- package/Meshes/instancedMesh.pure.js +12 -0
- package/Meshes/instancedMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +23 -8
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/meshBlendingTag.d.ts +47 -0
- package/Meshes/meshBlendingTag.js +64 -0
- package/Meshes/meshBlendingTag.js.map +1 -0
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Misc/fileTools.pure.js +21 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -2
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +89 -28
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.pure.d.ts +2 -0
- package/Particles/thinParticleSystem.pure.js +84 -19
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
- package/Particles/webgl2ParticleSystem.pure.js +12 -4
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/index.d.ts +2 -0
- package/PostProcesses/index.js +2 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
- package/PostProcesses/meshBlendingBlueNoise.js +77 -0
- package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
- package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
- package/PostProcesses/meshBlendingPostProcess.js +315 -0
- package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
- package/PostProcesses/pure.d.ts +2 -0
- package/PostProcesses/pure.js +2 -0
- package/PostProcesses/pure.js.map +1 -1
- package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +2 -1
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/depthRenderer.pure.js +3 -4
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.d.ts +4 -2
- package/Rendering/edgesRenderer.pure.js +11 -2
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
- package/Rendering/geometryBufferRenderer.pure.js +126 -17
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +7 -1
- package/Rendering/objectRenderer.js +45 -7
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +6 -2
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/renderingManager.d.ts +1 -1
- package/Rendering/renderingManager.js +5 -4
- package/Rendering/renderingManager.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +6 -2
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/default.fragment.js +31 -40
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.js +13 -9
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +63 -3
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +80 -0
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.js +17 -11
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +43 -1
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +96 -16
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/meshBlending.fragment.d.ts +5 -0
- package/Shaders/meshBlending.fragment.js +519 -0
- package/Shaders/meshBlending.fragment.js.map +1 -0
- package/Shaders/particles.fragment.js +43 -1
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.js +84 -3
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.js +52 -2
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.js +62 -1
- package/Shaders/sprites.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +17 -48
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.js +37 -2
- package/ShadersWGSL/geometry.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
- package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
- package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
- package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
- package/ShadersWGSL/meshBlending.fragment.js +576 -0
- package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
- package/ShadersWGSL/openpbr.fragment.js +2 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/particles.fragment.js +45 -1
- package/ShadersWGSL/particles.fragment.js.map +1 -1
- package/ShadersWGSL/particles.vertex.js +86 -4
- package/ShadersWGSL/particles.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +2 -1
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.fragment.js +56 -2
- package/ShadersWGSL/sprites.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.vertex.js +62 -1
- package/ShadersWGSL/sprites.vertex.js.map +1 -1
- package/Sprites/spriteManager.d.ts +13 -0
- package/Sprites/spriteManager.js +15 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +24 -1
- package/Sprites/spriteRenderer.js +368 -50
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.d.ts +4 -0
- package/Sprites/thinSprite.js +4 -0
- package/Sprites/thinSprite.js.map +1 -1
- package/States/alphaCullingState.d.ts +3 -1
- package/States/alphaCullingState.js +18 -3
- package/States/alphaCullingState.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +5 -1
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.d.ts +2 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +23 -0
- package/scene.pure.js +35 -0
- package/scene.pure.js.map +1 -1
|
@@ -136,7 +136,7 @@ export declare class NodeMaterialBuildState {
|
|
|
136
136
|
/**
|
|
137
137
|
* @internal
|
|
138
138
|
*/
|
|
139
|
-
_getShaderType(type: NodeMaterialBlockConnectionPointTypes): "" | "float" | "i32" | "
|
|
139
|
+
_getShaderType(type: NodeMaterialBlockConnectionPointTypes): "" | "float" | "i32" | "f32" | "int" | "vec2f" | "vec2" | "vec3f" | "vec3" | "vec4f" | "vec4" | "mat4x4f" | "mat4";
|
|
140
140
|
/**
|
|
141
141
|
* @internal
|
|
142
142
|
*/
|
|
@@ -171,9 +171,31 @@ export class NodeMaterialBuildState {
|
|
|
171
171
|
this.compilationString = "precision highp float;\n" + this.compilationString;
|
|
172
172
|
this.compilationString = "#if defined(WEBGL2) || defined(WEBGPU)\nprecision highp sampler2DArray;\n#endif\n" + this.compilationString;
|
|
173
173
|
if (isFragmentMode) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
174
|
+
let prePassDeclaration = "#if defined(PREPASS)\r\n" + "#extension GL_EXT_draw_buffers : require\r\n" + "#ifdef PREPASS_MESH_BLEND_TAG\r\n";
|
|
175
|
+
for (let index = 0; index < 8; index++) {
|
|
176
|
+
prePassDeclaration += `#if SCENE_MRT_COUNT > ${index}\r\n`;
|
|
177
|
+
prePassDeclaration += `#if PREPASS_MESH_BLEND_TAG_INDEX == ${index}\r\n`;
|
|
178
|
+
prePassDeclaration += `layout(location = ${index}) out highp uvec4 meshBlendTagOutput;\r\n`;
|
|
179
|
+
prePassDeclaration += "#else\r\n";
|
|
180
|
+
prePassDeclaration += `layout(location = ${index}) out highp vec4 glFragData${index};\r\n`;
|
|
181
|
+
prePassDeclaration += "#endif\r\n";
|
|
182
|
+
prePassDeclaration += "#endif\r\n";
|
|
183
|
+
}
|
|
184
|
+
prePassDeclaration += "void writeGeometryFragmentOutput(highp int index, highp vec4 value) {\r\n";
|
|
185
|
+
for (let index = 0; index < 8; index++) {
|
|
186
|
+
prePassDeclaration += `#if SCENE_MRT_COUNT > ${index} && PREPASS_MESH_BLEND_TAG_INDEX != ${index}\r\n`;
|
|
187
|
+
prePassDeclaration += `if (index == ${index}) { glFragData${index} = value; }\r\n`;
|
|
188
|
+
prePassDeclaration += "#endif\r\n";
|
|
189
|
+
}
|
|
190
|
+
prePassDeclaration += "}\r\n";
|
|
191
|
+
prePassDeclaration += "#define WRITE_GEOMETRY_FRAGMENT_OUTPUT(INDEX, VALUE) writeGeometryFragmentOutput(INDEX, VALUE)\r\n";
|
|
192
|
+
prePassDeclaration += "#else\r\n";
|
|
193
|
+
prePassDeclaration += "layout(location = 0) out highp vec4 glFragData[SCENE_MRT_COUNT];\r\n";
|
|
194
|
+
prePassDeclaration += "#define WRITE_GEOMETRY_FRAGMENT_OUTPUT(INDEX, VALUE) gl_FragData[INDEX] = VALUE\r\n";
|
|
195
|
+
prePassDeclaration += "#endif\r\n";
|
|
196
|
+
prePassDeclaration += "highp vec4 gl_FragColor;\r\n";
|
|
197
|
+
prePassDeclaration += "#endif\r\n";
|
|
198
|
+
this.compilationString = prePassDeclaration + this.compilationString;
|
|
177
199
|
}
|
|
178
200
|
for (const extensionName in this.extensions) {
|
|
179
201
|
const extension = this.extensions[extensionName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeMaterialBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/nodeMaterialBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlockConnectionPointTypes } from \"./Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { NodeMaterialBlockTargets } from \"./Enums/nodeMaterialBlockTargets\";\r\nimport { type NodeMaterialBuildStateSharedData } from \"./nodeMaterialBuildStateSharedData\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { type NodeMaterialConnectionPoint } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport { ShaderStore as EngineShaderStore } from \"../../Engines/shaderStore\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { type NodeMaterialBlock } from \"./nodeMaterialBlock\";\r\nimport { Process } from \"core/Engines/Processors/shaderProcessor\";\r\nimport { type _IProcessingOptions } from \"core/Engines/Processors/shaderProcessingOptions\";\r\nimport { WebGLShaderProcessor } from \"core/Engines/WebGL/webGLShaderProcessors\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Class used to store node based material build state\r\n */\r\nexport class NodeMaterialBuildState {\r\n /** Gets or sets a boolean indicating if the current state can emit uniform buffers */\r\n public supportUniformBuffers = false;\r\n /**\r\n * Gets the list of emitted attributes\r\n */\r\n public attributes: string[] = [];\r\n /**\r\n * Gets the list of emitted uniforms\r\n */\r\n public uniforms: string[] = [];\r\n /**\r\n * Gets the list of emitted constants\r\n */\r\n public constants: string[] = [];\r\n /**\r\n * Gets the list of emitted samplers\r\n */\r\n public samplers: string[] = [];\r\n /**\r\n * Gets the list of emitted functions\r\n */\r\n public functions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted extensions\r\n */\r\n public extensions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted prePass outputs - if using the prepass\r\n */\r\n public prePassOutput: { [key: string]: string } = {};\r\n\r\n /**\r\n * Gets the target of the compilation state\r\n */\r\n public target: NodeMaterialBlockTargets;\r\n /**\r\n * Gets the list of emitted counters\r\n */\r\n public counters: { [key: string]: number } = {};\r\n\r\n /**\r\n * Shared data between multiple NodeMaterialBuildState instances\r\n */\r\n public sharedData: NodeMaterialBuildStateSharedData;\r\n\r\n /** @internal */\r\n public _terminalBlocks: Set<NodeMaterialBlock> = new Set();\r\n\r\n /** @internal */\r\n public _vertexState: NodeMaterialBuildState;\r\n\r\n /** @internal */\r\n public _attributeDeclaration = \"\";\r\n /** @internal */\r\n public _uniformDeclaration = \"\";\r\n /** @internal */\r\n public _constantDeclaration = \"\";\r\n /** @internal */\r\n public _samplerDeclaration = \"\";\r\n /** @internal */\r\n public _varyingTransfer = \"\";\r\n /** @internal */\r\n public _injectAtEnd = \"\";\r\n /** @internal */\r\n public _injectAtTop = \"\";\r\n /** @internal */\r\n public _customEntryHeader = \"\";\r\n /** @internal */\r\n private _repeatableContentAnchorIndex = 0;\r\n /** @internal */\r\n public _builtCompilationString = \"\";\r\n\r\n /**\r\n * Gets the emitted compilation strings\r\n */\r\n public compilationString = \"\";\r\n\r\n /**\r\n * Gets the current shader language to use\r\n */\r\n public get shaderLanguage() {\r\n return this.sharedData.nodeMaterial.shaderLanguage;\r\n }\r\n\r\n /** Gets suffix to add behind type casting */\r\n public get fSuffix() {\r\n return this.shaderLanguage === ShaderLanguage.WGSL ? \"f\" : \"\";\r\n }\r\n\r\n /**\r\n * Returns the processed, compiled shader code\r\n * @param defines defines to use for the shader processing\r\n * @returns the raw shader code used by the engine\r\n */\r\n public async getProcessedShaderAsync(defines: string): Promise<string> {\r\n if (!this._builtCompilationString) {\r\n Logger.Error(\"getProcessedShaderAsync: Shader not built yet.\");\r\n return \"\";\r\n }\r\n\r\n const engine = this.sharedData.nodeMaterial.getScene().getEngine();\r\n const options: _IProcessingOptions = {\r\n defines: defines.split(\"\\n\"),\r\n indexParameters: undefined,\r\n isFragment: this.target === NodeMaterialBlockTargets.Fragment,\r\n shouldUseHighPrecisionShader: engine._shouldUseHighPrecisionShader,\r\n processor: engine._getShaderProcessor(this.shaderLanguage),\r\n supportsUniformBuffers: engine.supportsUniformBuffers,\r\n shadersRepository: EngineShaderStore.GetShadersRepository(this.shaderLanguage),\r\n includesShadersStore: EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage),\r\n version: (engine.version * 100).toString(),\r\n platformName: engine.shaderPlatformName,\r\n processingContext: null,\r\n isNDCHalfZRange: engine.isNDCHalfZRange,\r\n useReverseDepthBuffer: engine.useReverseDepthBuffer,\r\n };\r\n\r\n // Export WebGL2 shaders with WebGL1 syntax for max compatibility\r\n if (!engine.isWebGPU && engine.version > 1.0) {\r\n options.processor = new WebGLShaderProcessor();\r\n }\r\n\r\n return await new Promise((resolve) => {\r\n Process(\r\n this._builtCompilationString,\r\n options,\r\n (migratedCode, _) => {\r\n resolve(migratedCode);\r\n },\r\n engine\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Finalize the compilation strings\r\n * @param state defines the current compilation state\r\n */\r\n public finalize(state: NodeMaterialBuildState) {\r\n const emitComments = state.sharedData.emitComments;\r\n const isFragmentMode = this.target === NodeMaterialBlockTargets.Fragment;\r\n\r\n let entryPointString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}`;\r\n if (this._customEntryHeader) {\r\n entryPointString += this._customEntryHeader;\r\n } else if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (isFragmentMode) {\r\n entryPointString += `@fragment\\nfn main(input: FragmentInputs) -> FragmentOutputs {\\n${this.sharedData.varyingInitializationsFragment}`;\r\n } else {\r\n entryPointString += `@vertex\\nfn main(input: VertexInputs) -> FragmentInputs{\\n`;\r\n }\r\n } else {\r\n entryPointString += `void main(void) {\\n`;\r\n }\r\n\r\n this.compilationString = entryPointString + this.compilationString;\r\n\r\n if (this._constantDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Constants\\n\" : \"\"}${this._constantDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n let functionCode = \"\";\r\n for (const functionName in this.functions) {\r\n functionCode += this.functions[functionName] + `\\n`;\r\n }\r\n this.compilationString = `\\n${functionCode}\\n${this.compilationString}`;\r\n\r\n if (!isFragmentMode && this._varyingTransfer) {\r\n this.compilationString = `${this.compilationString}\\n${this._varyingTransfer}`;\r\n }\r\n\r\n if (this._injectAtEnd) {\r\n this.compilationString = `${this.compilationString}\\n${this._injectAtEnd}`;\r\n }\r\n\r\n this.compilationString = `${this.compilationString}\\n}`;\r\n\r\n if (this.sharedData.varyingDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Varyings\\n\" : \"\"}${isFragmentMode ? this.sharedData.varyingDeclarationFragment : this.sharedData.varyingDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._samplerDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Samplers\\n\" : \"\"}${this._samplerDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._uniformDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Uniforms\\n\" : \"\"}${this._uniformDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._attributeDeclaration && !isFragmentMode) {\r\n this.compilationString = `\\n${emitComments ? \"//Attributes\\n\" : \"\"}${this._attributeDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this.shaderLanguage !== ShaderLanguage.WGSL) {\r\n this.compilationString = \"precision highp float;\\n\" + this.compilationString;\r\n this.compilationString = \"#if defined(WEBGL2) || defined(WEBGPU)\\nprecision highp sampler2DArray;\\n#endif\\n\" + this.compilationString;\r\n\r\n if (isFragmentMode) {\r\n this.compilationString =\r\n \"#if defined(PREPASS)\\r\\n#extension GL_EXT_draw_buffers : require\\r\\nlayout(location = 0) out highp vec4 glFragData[SCENE_MRT_COUNT];\\r\\nhighp vec4 gl_FragColor;\\r\\n#endif\\r\\n\" +\r\n this.compilationString;\r\n }\r\n\r\n for (const extensionName in this.extensions) {\r\n const extension = this.extensions[extensionName];\r\n this.compilationString = `\\n${extension}\\n${this.compilationString}`;\r\n }\r\n }\r\n\r\n if (this._injectAtTop) {\r\n this.compilationString = `${this._injectAtTop}\\n${this.compilationString}`;\r\n }\r\n\r\n this._builtCompilationString = this.compilationString;\r\n }\r\n\r\n /** @internal */\r\n public get _repeatableContentAnchor(): string {\r\n return `###___ANCHOR${this._repeatableContentAnchorIndex++}___###`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeVariableName(prefix: string): string {\r\n prefix = this.sharedData.formatConfig.formatVariablename(prefix);\r\n\r\n if (this.sharedData.variableNames[prefix] === undefined) {\r\n this.sharedData.variableNames[prefix] = 0;\r\n\r\n // Check reserved words\r\n if (prefix === \"output\" || prefix === \"texture\") {\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n return prefix;\r\n } else {\r\n this.sharedData.variableNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeDefineName(prefix: string): string {\r\n if (this.sharedData.defineNames[prefix] === undefined) {\r\n this.sharedData.defineNames[prefix] = 0;\r\n } else {\r\n this.sharedData.defineNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.defineNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _excludeVariableName(name: string) {\r\n this.sharedData.variableNames[name] = 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DSampler(name: string, define = \"\", force = false, annotation?: string, unsignedSampler?: boolean, precision?: string) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n const unsignedSamplerPrefix = unsignedSampler ? \"u\" : \"f\";\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_2d<${unsignedSamplerPrefix}32>;\\n`;\r\n } else {\r\n const unsignedSamplerPrefix = unsignedSampler ? \"u\" : \"\";\r\n const precisionDecl = precision ?? \"\";\r\n this._samplerDeclaration += `uniform ${precisionDecl} ${unsignedSamplerPrefix}sampler2D ${name}; ${annotation ? annotation : \"\"}\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCubeSampler(name: string, define = \"\", force = false) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_cube<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform samplerCube ${name};\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DArraySampler(name: string) {\r\n if (this.samplers.indexOf(name) < 0) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_2d_array<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform sampler2DArray ${name};\\n`;\r\n }\r\n this.samplers.push(name);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getGLType(type: NodeMaterialBlockConnectionPointTypes): string {\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getShaderType(type: NodeMaterialBlockConnectionPointTypes) {\r\n const isWGSL = this.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return isWGSL ? \"f32\" : \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return isWGSL ? \"i32\" : \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return isWGSL ? \"vec2f\" : \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return isWGSL ? \"vec3f\" : \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return isWGSL ? \"vec4f\" : \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return isWGSL ? \"mat4x4f\" : \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitExtension(name: string, extension: string, define: string = \"\") {\r\n if (this.extensions[name]) {\r\n return;\r\n }\r\n\r\n if (define) {\r\n extension = `#if ${define}\\n${extension}\\n#endif`;\r\n }\r\n this.extensions[name] = extension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunction(name: string, code: string, comments: string) {\r\n if (this.functions[name]) {\r\n return;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n this.functions[name] = code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCodeFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n }\r\n ) {\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n\r\n if (options && options.repeatKey) {\r\n return `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n }\r\n\r\n let code = store[includeName] + \"\\n\";\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n if (!options) {\r\n return code;\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n code = code.replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunctionFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n removeAttributes?: boolean;\r\n removeUniforms?: boolean;\r\n removeVaryings?: boolean;\r\n removeIfDef?: boolean;\r\n define?: string;\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n },\r\n storeKey: string = \"\"\r\n ) {\r\n const key = includeName + storeKey + (options?.define ? `_${options.define}` : \"\");\r\n if (this.functions[key]) {\r\n return;\r\n }\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n\r\n if (!options || (!options.removeAttributes && !options.removeUniforms && !options.removeVaryings && !options.removeIfDef && !options.replaceStrings)) {\r\n if (options && options.repeatKey) {\r\n this.functions[key] = `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n } else {\r\n this.functions[key] = `#include<${includeName}>${options?.substitutionVars ? \"(\" + options?.substitutionVars + \")\" : \"\"}\\n`;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n if (options?.define) {\r\n this.functions[key] = `#ifdef ${options.define}\\n${this.functions[key]}#endif\\n`;\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.functions[key] = store[includeName];\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n if (options.removeIfDef) {\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#ifdef.+$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#endif.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#else.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#elif.*$/gm, \"\");\r\n }\r\n\r\n if (options.removeAttributes) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?attribute .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeUniforms) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?uniform .*?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeVaryings) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?(varying|in) .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n this.functions[key] = this.functions[key].replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n\r\n if (options.define) {\r\n this.functions[key] = `#ifdef ${options.define}\\n${this.functions[key]}#endif\\n`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _registerTempVariable(name: string) {\r\n if (this.sharedData.temps.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.temps.push(name);\r\n return true;\r\n }\r\n\r\n private _emitDefineStart(define?: string, notDefine = false) {\r\n let code = \"\";\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n code = `#if ${define}\\n`;\r\n } else {\r\n code = `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _emitDefineEnd(define?: string) {\r\n return define ? `#endif\\n` : \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitVaryingFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.sharedData.varyings.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.varyings.push(name);\r\n\r\n const shaderType = this._getShaderType(type);\r\n\r\n const emitCode = (forFragment = false) => {\r\n let code = this._emitDefineStart(define, notDefine);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n switch (shaderType) {\r\n case \"i32\":\r\n case \"f32\":\r\n case \"vec2f\":\r\n case \"vec3f\":\r\n case \"vec4f\":\r\n code += `varying ${name}: ${shaderType};\\n`;\r\n\r\n if (forFragment) {\r\n code += `var<private> ${name}: ${shaderType};\\n`;\r\n this.sharedData.varyingInitializationsFragment +=\r\n this._emitDefineStart(define, notDefine) + `${name} = fragmentInputs.${name};\\n` + this._emitDefineEnd(define);\r\n }\r\n break;\r\n case \"mat4x4f\":\r\n // We can't pass a matrix as a varying in WGSL, so we need to split it into 4 vectors\r\n code += `varying ${name}_r0: vec4f;\\n`;\r\n code += `varying ${name}_r1: vec4f;\\n`;\r\n code += `varying ${name}_r2: vec4f;\\n`;\r\n code += `varying ${name}_r3: vec4f;\\n`;\r\n\r\n if (forFragment) {\r\n code += `var<private> ${name}: mat4x4f;\\n`;\r\n this.sharedData.varyingInitializationsFragment +=\r\n this._emitDefineStart(define, notDefine) +\r\n `${name} = mat4x4f(fragmentInputs.${name}_r0, fragmentInputs.${name}_r1, fragmentInputs.${name}_r2, fragmentInputs.${name}_r3);\\n` +\r\n this._emitDefineEnd(define);\r\n }\r\n break;\r\n default:\r\n code += `varying ${name}: ${shaderType};\\n`;\r\n break;\r\n }\r\n } else {\r\n code += `varying ${shaderType} ${name};\\n`;\r\n }\r\n code += this._emitDefineEnd(define);\r\n return code;\r\n };\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this.sharedData.varyingDeclaration += emitCode(false);\r\n this.sharedData.varyingDeclarationFragment += emitCode(true);\r\n } else {\r\n const code = emitCode();\r\n this.sharedData.varyingDeclaration += code;\r\n this.sharedData.varyingDeclarationFragment += code;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getVaryingName(name: string): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return (this.target !== NodeMaterialBlockTargets.Fragment ? \"vertexOutputs.\" : \"fragmentInputs.\") + name;\r\n }\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitUniformFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.uniforms.indexOf(name) !== -1) {\r\n return;\r\n }\r\n\r\n this.uniforms.push(name);\r\n\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n this._uniformDeclaration += `#if ${define}\\n`;\r\n } else {\r\n this._uniformDeclaration += `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n if (this.sharedData.formatConfig.getUniformAnnotation) {\r\n this._uniformDeclaration += this.sharedData.formatConfig.getUniformAnnotation(name);\r\n }\r\n const shaderType = this._getShaderType(type);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._uniformDeclaration += `uniform ${name}: ${shaderType};\\n`;\r\n } else {\r\n this._uniformDeclaration += `uniform ${shaderType} ${name};\\n`;\r\n }\r\n if (define) {\r\n this._uniformDeclaration += `#endif\\n`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTernary(trueStatement: string, falseStatement: string, condition: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `select(${falseStatement}, ${trueStatement}, ${condition})`;\r\n }\r\n\r\n return `(${condition}) ? ${trueStatement} : ${falseStatement}`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFloat(value: number) {\r\n if (value.toString() === value.toFixed(0)) {\r\n return `${value}.0`;\r\n }\r\n\r\n return value.toString();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareOutput(output: NodeMaterialConnectionPoint, isConst?: boolean): string {\r\n return this._declareLocalVar(output.associatedVariableName, output.type, isConst);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareLocalVar(name: string, type: NodeMaterialBlockConnectionPointTypes, isConst?: boolean, isVarPrivate?: boolean): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${isConst ? \"const\" : \"var\" + (isVarPrivate ? \"<private>\" : \"\")} ${name}: ${this._getShaderType(type)}`;\r\n } else {\r\n return `${isConst ? \"const \" : \"\"}${this._getShaderType(type)} ${name}`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerCubeFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"textureCube\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"texture2D\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerLODFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSampleLevel\";\r\n }\r\n return \"texture2DLodEXT\";\r\n }\r\n\r\n public _toLinearSpace(output: NodeMaterialConnectionPoint) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (output.type === NodeMaterialBlockConnectionPointTypes.Color3 || output.type === NodeMaterialBlockConnectionPointTypes.Vector3) {\r\n return `toLinearSpaceVec3(${output.associatedVariableName})`;\r\n }\r\n\r\n return `toLinearSpace(${output.associatedVariableName})`;\r\n }\r\n return `toLinearSpace(${output.associatedVariableName})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSample(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerLODFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerLODFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCube(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCubeLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n private _convertVariableDeclarationToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\s+(\\\\w+)`, \"g\"), `var $2: ${dest}`);\r\n }\r\n\r\n private _convertVariableConstructorsToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\(`, \"g\"), ` ${dest}(`);\r\n }\r\n\r\n private _convertOutParametersToWGSL(source: string): string {\r\n return source.replace(new RegExp(`out\\\\s+var\\\\s+(\\\\w+)\\\\s*:\\\\s*(\\\\w+)`, \"g\"), `$1: ptr<function, $2>`);\r\n }\r\n\r\n private _convertTernaryOperandsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.*?)\\\\?(.*?):(.*)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `select(${falseCase}, ${trueCase}, ${condition})`);\r\n }\r\n\r\n private _convertModOperatorsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`mod\\\\((.+?),\\\\s*(.+?)\\\\)`, \"g\"), (match, left, right) => `((${left})%(${right}))`);\r\n }\r\n\r\n private _convertConstToWGSL(source: string): string {\r\n return source.replace(new RegExp(`const var`, \"g\"), `const`);\r\n }\r\n\r\n private _convertInnerFunctionsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`inversesqrt`, \"g\"), `inverseSqrt`);\r\n }\r\n\r\n private _convertFunctionsToWGSL(source: string): string {\r\n const regex = /var\\s+(\\w+)\\s*:\\s*(\\w+)\\((.*)\\)/g;\r\n\r\n let match: RegExpMatchArray | null;\r\n while ((match = regex.exec(source)) !== null) {\r\n const funcName = match[1];\r\n const funcType = match[2];\r\n const params = match[3]; // All parameters as a single string\r\n\r\n // Processing the parameters to match 'name: type' format\r\n const formattedParams = params.replace(/var\\s/g, \"\");\r\n\r\n // Constructing the final output string\r\n source = source.replace(match[0], `fn ${funcName}(${formattedParams}) -> ${funcType}`);\r\n }\r\n return source;\r\n }\r\n\r\n public _babylonSLtoWGSL(code: string) {\r\n // variable declarations\r\n code = this._convertVariableDeclarationToWGSL(\"void\", \"voidnull\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"bool\", \"bool\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"int\", \"i32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"uint\", \"u32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Type constructors\r\n code = this._convertVariableConstructorsToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Ternary operands\r\n code = this._convertTernaryOperandsToWGSL(code);\r\n\r\n // Mod operators\r\n code = this._convertModOperatorsToWGSL(code);\r\n\r\n // Const\r\n code = this._convertConstToWGSL(code);\r\n\r\n // Inner functions\r\n code = this._convertInnerFunctionsToWGSL(code);\r\n\r\n // Out paramters\r\n code = this._convertOutParametersToWGSL(code);\r\n code = code.replace(/\\[\\*\\]/g, \"*\");\r\n\r\n // Functions\r\n code = this._convertFunctionsToWGSL(code);\r\n\r\n // Remove voidnull\r\n code = code.replace(/\\s->\\svoidnull/g, \"\");\r\n\r\n // Derivatives\r\n code = code.replace(/dFdx/g, \"dpdx\");\r\n code = code.replace(/dFdy/g, \"dpdy\");\r\n\r\n return code;\r\n }\r\n\r\n private _convertTernaryOperandsToGLSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.+?)\\\\?(.+?):(.+)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `${condition} ? ${trueCase} : ${falseCase}`);\r\n }\r\n\r\n public _babylonSLtoGLSL(code: string) {\r\n /** Remove BSL specifics */\r\n code = code.replace(/\\[\\*\\]/g, \"\");\r\n code = this._convertTernaryOperandsToGLSL(code);\r\n\r\n return code;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"nodeMaterialBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Node/nodeMaterialBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlockConnectionPointTypes } from \"./Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport { NodeMaterialBlockTargets } from \"./Enums/nodeMaterialBlockTargets\";\r\nimport { type NodeMaterialBuildStateSharedData } from \"./nodeMaterialBuildStateSharedData\";\r\nimport { ShaderLanguage } from \"../shaderLanguage\";\r\nimport { type NodeMaterialConnectionPoint } from \"./nodeMaterialBlockConnectionPoint\";\r\nimport { ShaderStore as EngineShaderStore } from \"../../Engines/shaderStore\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { type NodeMaterialBlock } from \"./nodeMaterialBlock\";\r\nimport { Process } from \"core/Engines/Processors/shaderProcessor\";\r\nimport { type _IProcessingOptions } from \"core/Engines/Processors/shaderProcessingOptions\";\r\nimport { WebGLShaderProcessor } from \"core/Engines/WebGL/webGLShaderProcessors\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Class used to store node based material build state\r\n */\r\nexport class NodeMaterialBuildState {\r\n /** Gets or sets a boolean indicating if the current state can emit uniform buffers */\r\n public supportUniformBuffers = false;\r\n /**\r\n * Gets the list of emitted attributes\r\n */\r\n public attributes: string[] = [];\r\n /**\r\n * Gets the list of emitted uniforms\r\n */\r\n public uniforms: string[] = [];\r\n /**\r\n * Gets the list of emitted constants\r\n */\r\n public constants: string[] = [];\r\n /**\r\n * Gets the list of emitted samplers\r\n */\r\n public samplers: string[] = [];\r\n /**\r\n * Gets the list of emitted functions\r\n */\r\n public functions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted extensions\r\n */\r\n public extensions: { [key: string]: string } = {};\r\n /**\r\n * Gets the list of emitted prePass outputs - if using the prepass\r\n */\r\n public prePassOutput: { [key: string]: string } = {};\r\n\r\n /**\r\n * Gets the target of the compilation state\r\n */\r\n public target: NodeMaterialBlockTargets;\r\n /**\r\n * Gets the list of emitted counters\r\n */\r\n public counters: { [key: string]: number } = {};\r\n\r\n /**\r\n * Shared data between multiple NodeMaterialBuildState instances\r\n */\r\n public sharedData: NodeMaterialBuildStateSharedData;\r\n\r\n /** @internal */\r\n public _terminalBlocks: Set<NodeMaterialBlock> = new Set();\r\n\r\n /** @internal */\r\n public _vertexState: NodeMaterialBuildState;\r\n\r\n /** @internal */\r\n public _attributeDeclaration = \"\";\r\n /** @internal */\r\n public _uniformDeclaration = \"\";\r\n /** @internal */\r\n public _constantDeclaration = \"\";\r\n /** @internal */\r\n public _samplerDeclaration = \"\";\r\n /** @internal */\r\n public _varyingTransfer = \"\";\r\n /** @internal */\r\n public _injectAtEnd = \"\";\r\n /** @internal */\r\n public _injectAtTop = \"\";\r\n /** @internal */\r\n public _customEntryHeader = \"\";\r\n /** @internal */\r\n private _repeatableContentAnchorIndex = 0;\r\n /** @internal */\r\n public _builtCompilationString = \"\";\r\n\r\n /**\r\n * Gets the emitted compilation strings\r\n */\r\n public compilationString = \"\";\r\n\r\n /**\r\n * Gets the current shader language to use\r\n */\r\n public get shaderLanguage() {\r\n return this.sharedData.nodeMaterial.shaderLanguage;\r\n }\r\n\r\n /** Gets suffix to add behind type casting */\r\n public get fSuffix() {\r\n return this.shaderLanguage === ShaderLanguage.WGSL ? \"f\" : \"\";\r\n }\r\n\r\n /**\r\n * Returns the processed, compiled shader code\r\n * @param defines defines to use for the shader processing\r\n * @returns the raw shader code used by the engine\r\n */\r\n public async getProcessedShaderAsync(defines: string): Promise<string> {\r\n if (!this._builtCompilationString) {\r\n Logger.Error(\"getProcessedShaderAsync: Shader not built yet.\");\r\n return \"\";\r\n }\r\n\r\n const engine = this.sharedData.nodeMaterial.getScene().getEngine();\r\n const options: _IProcessingOptions = {\r\n defines: defines.split(\"\\n\"),\r\n indexParameters: undefined,\r\n isFragment: this.target === NodeMaterialBlockTargets.Fragment,\r\n shouldUseHighPrecisionShader: engine._shouldUseHighPrecisionShader,\r\n processor: engine._getShaderProcessor(this.shaderLanguage),\r\n supportsUniformBuffers: engine.supportsUniformBuffers,\r\n shadersRepository: EngineShaderStore.GetShadersRepository(this.shaderLanguage),\r\n includesShadersStore: EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage),\r\n version: (engine.version * 100).toString(),\r\n platformName: engine.shaderPlatformName,\r\n processingContext: null,\r\n isNDCHalfZRange: engine.isNDCHalfZRange,\r\n useReverseDepthBuffer: engine.useReverseDepthBuffer,\r\n };\r\n\r\n // Export WebGL2 shaders with WebGL1 syntax for max compatibility\r\n if (!engine.isWebGPU && engine.version > 1.0) {\r\n options.processor = new WebGLShaderProcessor();\r\n }\r\n\r\n return await new Promise((resolve) => {\r\n Process(\r\n this._builtCompilationString,\r\n options,\r\n (migratedCode, _) => {\r\n resolve(migratedCode);\r\n },\r\n engine\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Finalize the compilation strings\r\n * @param state defines the current compilation state\r\n */\r\n public finalize(state: NodeMaterialBuildState) {\r\n const emitComments = state.sharedData.emitComments;\r\n const isFragmentMode = this.target === NodeMaterialBlockTargets.Fragment;\r\n\r\n let entryPointString = `\\n${emitComments ? \"//Entry point\\n\" : \"\"}`;\r\n if (this._customEntryHeader) {\r\n entryPointString += this._customEntryHeader;\r\n } else if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (isFragmentMode) {\r\n entryPointString += `@fragment\\nfn main(input: FragmentInputs) -> FragmentOutputs {\\n${this.sharedData.varyingInitializationsFragment}`;\r\n } else {\r\n entryPointString += `@vertex\\nfn main(input: VertexInputs) -> FragmentInputs{\\n`;\r\n }\r\n } else {\r\n entryPointString += `void main(void) {\\n`;\r\n }\r\n\r\n this.compilationString = entryPointString + this.compilationString;\r\n\r\n if (this._constantDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Constants\\n\" : \"\"}${this._constantDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n let functionCode = \"\";\r\n for (const functionName in this.functions) {\r\n functionCode += this.functions[functionName] + `\\n`;\r\n }\r\n this.compilationString = `\\n${functionCode}\\n${this.compilationString}`;\r\n\r\n if (!isFragmentMode && this._varyingTransfer) {\r\n this.compilationString = `${this.compilationString}\\n${this._varyingTransfer}`;\r\n }\r\n\r\n if (this._injectAtEnd) {\r\n this.compilationString = `${this.compilationString}\\n${this._injectAtEnd}`;\r\n }\r\n\r\n this.compilationString = `${this.compilationString}\\n}`;\r\n\r\n if (this.sharedData.varyingDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Varyings\\n\" : \"\"}${isFragmentMode ? this.sharedData.varyingDeclarationFragment : this.sharedData.varyingDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._samplerDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Samplers\\n\" : \"\"}${this._samplerDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._uniformDeclaration) {\r\n this.compilationString = `\\n${emitComments ? \"//Uniforms\\n\" : \"\"}${this._uniformDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this._attributeDeclaration && !isFragmentMode) {\r\n this.compilationString = `\\n${emitComments ? \"//Attributes\\n\" : \"\"}${this._attributeDeclaration}\\n${this.compilationString}`;\r\n }\r\n\r\n if (this.shaderLanguage !== ShaderLanguage.WGSL) {\r\n this.compilationString = \"precision highp float;\\n\" + this.compilationString;\r\n this.compilationString = \"#if defined(WEBGL2) || defined(WEBGPU)\\nprecision highp sampler2DArray;\\n#endif\\n\" + this.compilationString;\r\n\r\n if (isFragmentMode) {\r\n let prePassDeclaration = \"#if defined(PREPASS)\\r\\n\" + \"#extension GL_EXT_draw_buffers : require\\r\\n\" + \"#ifdef PREPASS_MESH_BLEND_TAG\\r\\n\";\r\n\r\n for (let index = 0; index < 8; index++) {\r\n prePassDeclaration += `#if SCENE_MRT_COUNT > ${index}\\r\\n`;\r\n prePassDeclaration += `#if PREPASS_MESH_BLEND_TAG_INDEX == ${index}\\r\\n`;\r\n prePassDeclaration += `layout(location = ${index}) out highp uvec4 meshBlendTagOutput;\\r\\n`;\r\n prePassDeclaration += \"#else\\r\\n\";\r\n prePassDeclaration += `layout(location = ${index}) out highp vec4 glFragData${index};\\r\\n`;\r\n prePassDeclaration += \"#endif\\r\\n\";\r\n prePassDeclaration += \"#endif\\r\\n\";\r\n }\r\n\r\n prePassDeclaration += \"void writeGeometryFragmentOutput(highp int index, highp vec4 value) {\\r\\n\";\r\n for (let index = 0; index < 8; index++) {\r\n prePassDeclaration += `#if SCENE_MRT_COUNT > ${index} && PREPASS_MESH_BLEND_TAG_INDEX != ${index}\\r\\n`;\r\n prePassDeclaration += `if (index == ${index}) { glFragData${index} = value; }\\r\\n`;\r\n prePassDeclaration += \"#endif\\r\\n\";\r\n }\r\n prePassDeclaration += \"}\\r\\n\";\r\n prePassDeclaration += \"#define WRITE_GEOMETRY_FRAGMENT_OUTPUT(INDEX, VALUE) writeGeometryFragmentOutput(INDEX, VALUE)\\r\\n\";\r\n prePassDeclaration += \"#else\\r\\n\";\r\n prePassDeclaration += \"layout(location = 0) out highp vec4 glFragData[SCENE_MRT_COUNT];\\r\\n\";\r\n prePassDeclaration += \"#define WRITE_GEOMETRY_FRAGMENT_OUTPUT(INDEX, VALUE) gl_FragData[INDEX] = VALUE\\r\\n\";\r\n prePassDeclaration += \"#endif\\r\\n\";\r\n prePassDeclaration += \"highp vec4 gl_FragColor;\\r\\n\";\r\n prePassDeclaration += \"#endif\\r\\n\";\r\n\r\n this.compilationString = prePassDeclaration + this.compilationString;\r\n }\r\n\r\n for (const extensionName in this.extensions) {\r\n const extension = this.extensions[extensionName];\r\n this.compilationString = `\\n${extension}\\n${this.compilationString}`;\r\n }\r\n }\r\n\r\n if (this._injectAtTop) {\r\n this.compilationString = `${this._injectAtTop}\\n${this.compilationString}`;\r\n }\r\n\r\n this._builtCompilationString = this.compilationString;\r\n }\r\n\r\n /** @internal */\r\n public get _repeatableContentAnchor(): string {\r\n return `###___ANCHOR${this._repeatableContentAnchorIndex++}___###`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeVariableName(prefix: string): string {\r\n prefix = this.sharedData.formatConfig.formatVariablename(prefix);\r\n\r\n if (this.sharedData.variableNames[prefix] === undefined) {\r\n this.sharedData.variableNames[prefix] = 0;\r\n\r\n // Check reserved words\r\n if (prefix === \"output\" || prefix === \"texture\") {\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n return prefix;\r\n } else {\r\n this.sharedData.variableNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.variableNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getFreeDefineName(prefix: string): string {\r\n if (this.sharedData.defineNames[prefix] === undefined) {\r\n this.sharedData.defineNames[prefix] = 0;\r\n } else {\r\n this.sharedData.defineNames[prefix]++;\r\n }\r\n\r\n return prefix + this.sharedData.defineNames[prefix];\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _excludeVariableName(name: string) {\r\n this.sharedData.variableNames[name] = 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DSampler(name: string, define = \"\", force = false, annotation?: string, unsignedSampler?: boolean, precision?: string) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n const unsignedSamplerPrefix = unsignedSampler ? \"u\" : \"f\";\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_2d<${unsignedSamplerPrefix}32>;\\n`;\r\n } else {\r\n const unsignedSamplerPrefix = unsignedSampler ? \"u\" : \"\";\r\n const precisionDecl = precision ?? \"\";\r\n this._samplerDeclaration += `uniform ${precisionDecl} ${unsignedSamplerPrefix}sampler2D ${name}; ${annotation ? annotation : \"\"}\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCubeSampler(name: string, define = \"\", force = false) {\r\n if (this.samplers.indexOf(name) < 0 || force) {\r\n if (define) {\r\n this._samplerDeclaration += `#if ${define}\\n`;\r\n }\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_cube<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform samplerCube ${name};\\n`;\r\n }\r\n\r\n if (define) {\r\n this._samplerDeclaration += `#endif\\n`;\r\n }\r\n\r\n if (!force) {\r\n this.samplers.push(name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emit2DArraySampler(name: string) {\r\n if (this.samplers.indexOf(name) < 0) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._samplerDeclaration += `var ${name + Constants.AUTOSAMPLERSUFFIX}: sampler;\\n`;\r\n this._samplerDeclaration += `var ${name}: texture_2d_array<f32>;\\n`;\r\n } else {\r\n this._samplerDeclaration += `uniform sampler2DArray ${name};\\n`;\r\n }\r\n this.samplers.push(name);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getGLType(type: NodeMaterialBlockConnectionPointTypes): string {\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getShaderType(type: NodeMaterialBlockConnectionPointTypes) {\r\n const isWGSL = this.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n switch (type) {\r\n case NodeMaterialBlockConnectionPointTypes.Float:\r\n return isWGSL ? \"f32\" : \"float\";\r\n case NodeMaterialBlockConnectionPointTypes.Int:\r\n return isWGSL ? \"i32\" : \"int\";\r\n case NodeMaterialBlockConnectionPointTypes.Vector2:\r\n return isWGSL ? \"vec2f\" : \"vec2\";\r\n case NodeMaterialBlockConnectionPointTypes.Color3:\r\n case NodeMaterialBlockConnectionPointTypes.Vector3:\r\n return isWGSL ? \"vec3f\" : \"vec3\";\r\n case NodeMaterialBlockConnectionPointTypes.Color4:\r\n case NodeMaterialBlockConnectionPointTypes.Vector4:\r\n return isWGSL ? \"vec4f\" : \"vec4\";\r\n case NodeMaterialBlockConnectionPointTypes.Matrix:\r\n return isWGSL ? \"mat4x4f\" : \"mat4\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitExtension(name: string, extension: string, define: string = \"\") {\r\n if (this.extensions[name]) {\r\n return;\r\n }\r\n\r\n if (define) {\r\n extension = `#if ${define}\\n${extension}\\n#endif`;\r\n }\r\n this.extensions[name] = extension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunction(name: string, code: string, comments: string) {\r\n if (this.functions[name]) {\r\n return;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n this.functions[name] = code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitCodeFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n }\r\n ) {\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n\r\n if (options && options.repeatKey) {\r\n return `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n }\r\n\r\n let code = store[includeName] + \"\\n\";\r\n\r\n if (this.sharedData.emitComments) {\r\n code = comments + `\\n` + code;\r\n }\r\n\r\n if (!options) {\r\n return code;\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n code = code.replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFunctionFromInclude(\r\n includeName: string,\r\n comments: string,\r\n options?: {\r\n repeatKey?: string;\r\n substitutionVars?: string;\r\n removeAttributes?: boolean;\r\n removeUniforms?: boolean;\r\n removeVaryings?: boolean;\r\n removeIfDef?: boolean;\r\n define?: string;\r\n replaceStrings?: { search: RegExp; replace: string }[];\r\n },\r\n storeKey: string = \"\"\r\n ) {\r\n const key = includeName + storeKey + (options?.define ? `_${options.define}` : \"\");\r\n if (this.functions[key]) {\r\n return;\r\n }\r\n const store = EngineShaderStore.GetIncludesShadersStore(this.shaderLanguage);\r\n\r\n if (!options || (!options.removeAttributes && !options.removeUniforms && !options.removeVaryings && !options.removeIfDef && !options.replaceStrings)) {\r\n if (options && options.repeatKey) {\r\n this.functions[key] = `#include<${includeName}>${options.substitutionVars ? \"(\" + options.substitutionVars + \")\" : \"\"}[0..${options.repeatKey}]\\n`;\r\n } else {\r\n this.functions[key] = `#include<${includeName}>${options?.substitutionVars ? \"(\" + options?.substitutionVars + \")\" : \"\"}\\n`;\r\n }\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n if (options?.define) {\r\n this.functions[key] = `#ifdef ${options.define}\\n${this.functions[key]}#endif\\n`;\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.functions[key] = store[includeName];\r\n\r\n if (this.sharedData.emitComments) {\r\n this.functions[key] = comments + `\\n` + this.functions[key];\r\n }\r\n\r\n if (options.removeIfDef) {\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#ifdef.+$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#endif.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#else.*$/gm, \"\");\r\n this.functions[key] = this.functions[key].replace(/^\\s*?#elif.*$/gm, \"\");\r\n }\r\n\r\n if (options.removeAttributes) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?attribute .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeUniforms) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?uniform .*?;/g, \"\\n\");\r\n }\r\n\r\n if (options.removeVaryings) {\r\n this.functions[key] = this.functions[key].replace(/\\s*?(varying|in) .+?;/g, \"\\n\");\r\n }\r\n\r\n if (options.replaceStrings) {\r\n for (let index = 0; index < options.replaceStrings.length; index++) {\r\n const replaceString = options.replaceStrings[index];\r\n this.functions[key] = this.functions[key].replace(replaceString.search, replaceString.replace);\r\n }\r\n }\r\n\r\n if (options.define) {\r\n this.functions[key] = `#ifdef ${options.define}\\n${this.functions[key]}#endif\\n`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _registerTempVariable(name: string) {\r\n if (this.sharedData.temps.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.temps.push(name);\r\n return true;\r\n }\r\n\r\n private _emitDefineStart(define?: string, notDefine = false) {\r\n let code = \"\";\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n code = `#if ${define}\\n`;\r\n } else {\r\n code = `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n\r\n return code;\r\n }\r\n\r\n private _emitDefineEnd(define?: string) {\r\n return define ? `#endif\\n` : \"\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitVaryingFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.sharedData.varyings.indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n this.sharedData.varyings.push(name);\r\n\r\n const shaderType = this._getShaderType(type);\r\n\r\n const emitCode = (forFragment = false) => {\r\n let code = this._emitDefineStart(define, notDefine);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n switch (shaderType) {\r\n case \"i32\":\r\n case \"f32\":\r\n case \"vec2f\":\r\n case \"vec3f\":\r\n case \"vec4f\":\r\n code += `varying ${name}: ${shaderType};\\n`;\r\n\r\n if (forFragment) {\r\n code += `var<private> ${name}: ${shaderType};\\n`;\r\n this.sharedData.varyingInitializationsFragment +=\r\n this._emitDefineStart(define, notDefine) + `${name} = fragmentInputs.${name};\\n` + this._emitDefineEnd(define);\r\n }\r\n break;\r\n case \"mat4x4f\":\r\n // We can't pass a matrix as a varying in WGSL, so we need to split it into 4 vectors\r\n code += `varying ${name}_r0: vec4f;\\n`;\r\n code += `varying ${name}_r1: vec4f;\\n`;\r\n code += `varying ${name}_r2: vec4f;\\n`;\r\n code += `varying ${name}_r3: vec4f;\\n`;\r\n\r\n if (forFragment) {\r\n code += `var<private> ${name}: mat4x4f;\\n`;\r\n this.sharedData.varyingInitializationsFragment +=\r\n this._emitDefineStart(define, notDefine) +\r\n `${name} = mat4x4f(fragmentInputs.${name}_r0, fragmentInputs.${name}_r1, fragmentInputs.${name}_r2, fragmentInputs.${name}_r3);\\n` +\r\n this._emitDefineEnd(define);\r\n }\r\n break;\r\n default:\r\n code += `varying ${name}: ${shaderType};\\n`;\r\n break;\r\n }\r\n } else {\r\n code += `varying ${shaderType} ${name};\\n`;\r\n }\r\n code += this._emitDefineEnd(define);\r\n return code;\r\n };\r\n\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this.sharedData.varyingDeclaration += emitCode(false);\r\n this.sharedData.varyingDeclarationFragment += emitCode(true);\r\n } else {\r\n const code = emitCode();\r\n this.sharedData.varyingDeclaration += code;\r\n this.sharedData.varyingDeclarationFragment += code;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getVaryingName(name: string): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return (this.target !== NodeMaterialBlockTargets.Fragment ? \"vertexOutputs.\" : \"fragmentInputs.\") + name;\r\n }\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitUniformFromString(name: string, type: NodeMaterialBlockConnectionPointTypes, define: string = \"\", notDefine = false) {\r\n if (this.uniforms.indexOf(name) !== -1) {\r\n return;\r\n }\r\n\r\n this.uniforms.push(name);\r\n\r\n if (define) {\r\n if (define.startsWith(\"defined(\")) {\r\n this._uniformDeclaration += `#if ${define}\\n`;\r\n } else {\r\n this._uniformDeclaration += `${notDefine ? \"#ifndef\" : \"#ifdef\"} ${define}\\n`;\r\n }\r\n }\r\n if (this.sharedData.formatConfig.getUniformAnnotation) {\r\n this._uniformDeclaration += this.sharedData.formatConfig.getUniformAnnotation(name);\r\n }\r\n const shaderType = this._getShaderType(type);\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n this._uniformDeclaration += `uniform ${name}: ${shaderType};\\n`;\r\n } else {\r\n this._uniformDeclaration += `uniform ${shaderType} ${name};\\n`;\r\n }\r\n if (define) {\r\n this._uniformDeclaration += `#endif\\n`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTernary(trueStatement: string, falseStatement: string, condition: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `select(${falseStatement}, ${trueStatement}, ${condition})`;\r\n }\r\n\r\n return `(${condition}) ? ${trueStatement} : ${falseStatement}`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _emitFloat(value: number) {\r\n if (value.toString() === value.toFixed(0)) {\r\n return `${value}.0`;\r\n }\r\n\r\n return value.toString();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareOutput(output: NodeMaterialConnectionPoint, isConst?: boolean): string {\r\n return this._declareLocalVar(output.associatedVariableName, output.type, isConst);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _declareLocalVar(name: string, type: NodeMaterialBlockConnectionPointTypes, isConst?: boolean, isVarPrivate?: boolean): string {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${isConst ? \"const\" : \"var\" + (isVarPrivate ? \"<private>\" : \"\")} ${name}: ${this._getShaderType(type)}`;\r\n } else {\r\n return `${isConst ? \"const \" : \"\"}${this._getShaderType(type)} ${name}`;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerCubeFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"textureCube\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"texture2D\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _samplerLODFunc() {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSampleLevel\";\r\n }\r\n return \"texture2DLodEXT\";\r\n }\r\n\r\n public _toLinearSpace(output: NodeMaterialConnectionPoint) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n if (output.type === NodeMaterialBlockConnectionPointTypes.Color3 || output.type === NodeMaterialBlockConnectionPointTypes.Vector3) {\r\n return `toLinearSpaceVec3(${output.associatedVariableName})`;\r\n }\r\n\r\n return `toLinearSpace(${output.associatedVariableName})`;\r\n }\r\n return `toLinearSpace(${output.associatedVariableName})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSample(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerLODFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerLODFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCube(uv: string, samplerName: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv})`;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _generateTextureSampleCubeLOD(uv: string, samplerName: string, lod: string) {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerCubeFunc()}(${samplerName},${samplerName + Constants.AUTOSAMPLERSUFFIX}, ${uv}, ${lod})`;\r\n }\r\n return `${this._samplerCubeFunc()}(${samplerName}, ${uv}, ${lod})`;\r\n }\r\n\r\n private _convertVariableDeclarationToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\s+(\\\\w+)`, \"g\"), `var $2: ${dest}`);\r\n }\r\n\r\n private _convertVariableConstructorsToWGSL(type: string, dest: string, source: string): string {\r\n return source.replace(new RegExp(`(${type})\\\\(`, \"g\"), ` ${dest}(`);\r\n }\r\n\r\n private _convertOutParametersToWGSL(source: string): string {\r\n return source.replace(new RegExp(`out\\\\s+var\\\\s+(\\\\w+)\\\\s*:\\\\s*(\\\\w+)`, \"g\"), `$1: ptr<function, $2>`);\r\n }\r\n\r\n private _convertTernaryOperandsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.*?)\\\\?(.*?):(.*)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `select(${falseCase}, ${trueCase}, ${condition})`);\r\n }\r\n\r\n private _convertModOperatorsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`mod\\\\((.+?),\\\\s*(.+?)\\\\)`, \"g\"), (match, left, right) => `((${left})%(${right}))`);\r\n }\r\n\r\n private _convertConstToWGSL(source: string): string {\r\n return source.replace(new RegExp(`const var`, \"g\"), `const`);\r\n }\r\n\r\n private _convertInnerFunctionsToWGSL(source: string): string {\r\n return source.replace(new RegExp(`inversesqrt`, \"g\"), `inverseSqrt`);\r\n }\r\n\r\n private _convertFunctionsToWGSL(source: string): string {\r\n const regex = /var\\s+(\\w+)\\s*:\\s*(\\w+)\\((.*)\\)/g;\r\n\r\n let match: RegExpMatchArray | null;\r\n while ((match = regex.exec(source)) !== null) {\r\n const funcName = match[1];\r\n const funcType = match[2];\r\n const params = match[3]; // All parameters as a single string\r\n\r\n // Processing the parameters to match 'name: type' format\r\n const formattedParams = params.replace(/var\\s/g, \"\");\r\n\r\n // Constructing the final output string\r\n source = source.replace(match[0], `fn ${funcName}(${formattedParams}) -> ${funcType}`);\r\n }\r\n return source;\r\n }\r\n\r\n public _babylonSLtoWGSL(code: string) {\r\n // variable declarations\r\n code = this._convertVariableDeclarationToWGSL(\"void\", \"voidnull\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"bool\", \"bool\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"int\", \"i32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"uint\", \"u32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableDeclarationToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Type constructors\r\n code = this._convertVariableConstructorsToWGSL(\"float\", \"f32\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec2\", \"vec2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec3\", \"vec3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"vec4\", \"vec4f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat2\", \"mat2x2f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat3\", \"mat3x3f\", code);\r\n code = this._convertVariableConstructorsToWGSL(\"mat4\", \"mat4x4f\", code);\r\n\r\n // Ternary operands\r\n code = this._convertTernaryOperandsToWGSL(code);\r\n\r\n // Mod operators\r\n code = this._convertModOperatorsToWGSL(code);\r\n\r\n // Const\r\n code = this._convertConstToWGSL(code);\r\n\r\n // Inner functions\r\n code = this._convertInnerFunctionsToWGSL(code);\r\n\r\n // Out paramters\r\n code = this._convertOutParametersToWGSL(code);\r\n code = code.replace(/\\[\\*\\]/g, \"*\");\r\n\r\n // Functions\r\n code = this._convertFunctionsToWGSL(code);\r\n\r\n // Remove voidnull\r\n code = code.replace(/\\s->\\svoidnull/g, \"\");\r\n\r\n // Derivatives\r\n code = code.replace(/dFdx/g, \"dpdx\");\r\n code = code.replace(/dFdy/g, \"dpdy\");\r\n\r\n return code;\r\n }\r\n\r\n private _convertTernaryOperandsToGLSL(source: string): string {\r\n return source.replace(new RegExp(`\\\\[(.+?)\\\\?(.+?):(.+)\\\\]`, \"g\"), (match, condition, trueCase, falseCase) => `${condition} ? ${trueCase} : ${falseCase}`);\r\n }\r\n\r\n public _babylonSLtoGLSL(code: string) {\r\n /** Remove BSL specifics */\r\n code = code.replace(/\\[\\*\\]/g, \"\");\r\n code = this._convertTernaryOperandsToGLSL(code);\r\n\r\n return code;\r\n }\r\n}\r\n"]}
|
|
@@ -54,6 +54,8 @@ declare const OpenPBRMaterialDefinesBase_base: {
|
|
|
54
54
|
PREPASS_OBJECT_ID: boolean;
|
|
55
55
|
PREPASS_OBJECT_ID_INDEX: number;
|
|
56
56
|
PREPASS_OBJECT_ID_R8: boolean;
|
|
57
|
+
PREPASS_MESH_BLEND_TAG: boolean;
|
|
58
|
+
PREPASS_MESH_BLEND_TAG_INDEX: number;
|
|
57
59
|
SCENE_MRT_COUNT: number;
|
|
58
60
|
};
|
|
59
61
|
} & {
|
|
@@ -57,6 +57,8 @@ declare const PBRMaterialDefinesBase_base: {
|
|
|
57
57
|
PREPASS_OBJECT_ID: boolean;
|
|
58
58
|
PREPASS_OBJECT_ID_INDEX: number;
|
|
59
59
|
PREPASS_OBJECT_ID_R8: boolean;
|
|
60
|
+
PREPASS_MESH_BLEND_TAG: boolean;
|
|
61
|
+
PREPASS_MESH_BLEND_TAG_INDEX: number;
|
|
60
62
|
SCENE_MRT_COUNT: number;
|
|
61
63
|
};
|
|
62
64
|
} & {
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import { Observable } from "../../../Misc/observable.pure.js";
|
|
3
3
|
import { type Nullable } from "../../../types.js";
|
|
4
4
|
import { type Scene } from "../../../scene.pure.js";
|
|
5
|
-
import { type
|
|
6
|
-
import { type Color4, type Color3 } from "../../../Maths/math.color.pure.js";
|
|
5
|
+
import { type IColor3Like, type IColor4Like, type IMatrixLike, type IVector2Like, type IVector3Like, type IVector4Like } from "../../../Maths/math.like.js";
|
|
7
6
|
import { type Effect } from "../../../Materials/effect.pure.js";
|
|
8
7
|
import { Texture } from "../../../Materials/Textures/texture.pure.js";
|
|
9
8
|
import { type RenderTargetTextureOptions } from "../../../Materials/Textures/renderTargetTexture.pure.js";
|
|
@@ -220,47 +219,47 @@ export declare class ProceduralTexture extends Texture {
|
|
|
220
219
|
*/
|
|
221
220
|
setFloats(name: string, value: number[]): ProceduralTexture;
|
|
222
221
|
/**
|
|
223
|
-
* Set a vec3 in the shader
|
|
222
|
+
* Set a vec3 in the shader.
|
|
224
223
|
* @param name Define the name of the uniform as defined in the shader
|
|
225
224
|
* @param value Define the value to give to the uniform
|
|
226
225
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
227
226
|
*/
|
|
228
|
-
setColor3(name: string, value:
|
|
227
|
+
setColor3(name: string, value: IColor3Like): ProceduralTexture;
|
|
229
228
|
/**
|
|
230
|
-
* Set a vec4 in the shader
|
|
229
|
+
* Set a vec4 in the shader.
|
|
231
230
|
* @param name Define the name of the uniform as defined in the shader
|
|
232
231
|
* @param value Define the value to give to the uniform
|
|
233
232
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
234
233
|
*/
|
|
235
|
-
setColor4(name: string, value:
|
|
234
|
+
setColor4(name: string, value: IColor4Like): ProceduralTexture;
|
|
236
235
|
/**
|
|
237
|
-
* Set a vec2 in the shader
|
|
236
|
+
* Set a vec2 in the shader.
|
|
238
237
|
* @param name Define the name of the uniform as defined in the shader
|
|
239
238
|
* @param value Define the value to give to the uniform
|
|
240
239
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
241
240
|
*/
|
|
242
|
-
setVector2(name: string, value:
|
|
241
|
+
setVector2(name: string, value: IVector2Like): ProceduralTexture;
|
|
243
242
|
/**
|
|
244
|
-
* Set a vec3 in the shader
|
|
243
|
+
* Set a vec3 in the shader.
|
|
245
244
|
* @param name Define the name of the uniform as defined in the shader
|
|
246
245
|
* @param value Define the value to give to the uniform
|
|
247
246
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
248
247
|
*/
|
|
249
|
-
setVector3(name: string, value:
|
|
248
|
+
setVector3(name: string, value: IVector3Like): ProceduralTexture;
|
|
250
249
|
/**
|
|
251
|
-
* Set a vec4 in the shader
|
|
250
|
+
* Set a vec4 in the shader.
|
|
252
251
|
* @param name Define the name of the uniform as defined in the shader
|
|
253
252
|
* @param value Define the value to give to the uniform
|
|
254
253
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
255
254
|
*/
|
|
256
|
-
setVector4(name: string, value:
|
|
255
|
+
setVector4(name: string, value: IVector4Like): ProceduralTexture;
|
|
257
256
|
/**
|
|
258
|
-
* Set a mat4 in the shader
|
|
257
|
+
* Set a mat4 in the shader.
|
|
259
258
|
* @param name Define the name of the uniform as defined in the shader
|
|
260
259
|
* @param value Define the value to give to the uniform
|
|
261
260
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
262
261
|
*/
|
|
263
|
-
setMatrix(name: string, value:
|
|
262
|
+
setMatrix(name: string, value: IMatrixLike): ProceduralTexture;
|
|
264
263
|
/**
|
|
265
264
|
* Render the texture to its associated render target.
|
|
266
265
|
* @param useCameraPostProcess Define if camera post process should be applied to the texture
|
|
@@ -452,7 +452,7 @@ let ProceduralTexture = (() => {
|
|
|
452
452
|
return this;
|
|
453
453
|
}
|
|
454
454
|
/**
|
|
455
|
-
* Set a vec3 in the shader
|
|
455
|
+
* Set a vec3 in the shader.
|
|
456
456
|
* @param name Define the name of the uniform as defined in the shader
|
|
457
457
|
* @param value Define the value to give to the uniform
|
|
458
458
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
@@ -463,7 +463,7 @@ let ProceduralTexture = (() => {
|
|
|
463
463
|
return this;
|
|
464
464
|
}
|
|
465
465
|
/**
|
|
466
|
-
* Set a vec4 in the shader
|
|
466
|
+
* Set a vec4 in the shader.
|
|
467
467
|
* @param name Define the name of the uniform as defined in the shader
|
|
468
468
|
* @param value Define the value to give to the uniform
|
|
469
469
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
@@ -474,7 +474,7 @@ let ProceduralTexture = (() => {
|
|
|
474
474
|
return this;
|
|
475
475
|
}
|
|
476
476
|
/**
|
|
477
|
-
* Set a vec2 in the shader
|
|
477
|
+
* Set a vec2 in the shader.
|
|
478
478
|
* @param name Define the name of the uniform as defined in the shader
|
|
479
479
|
* @param value Define the value to give to the uniform
|
|
480
480
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
@@ -485,7 +485,7 @@ let ProceduralTexture = (() => {
|
|
|
485
485
|
return this;
|
|
486
486
|
}
|
|
487
487
|
/**
|
|
488
|
-
* Set a vec3 in the shader
|
|
488
|
+
* Set a vec3 in the shader.
|
|
489
489
|
* @param name Define the name of the uniform as defined in the shader
|
|
490
490
|
* @param value Define the value to give to the uniform
|
|
491
491
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
@@ -496,7 +496,7 @@ let ProceduralTexture = (() => {
|
|
|
496
496
|
return this;
|
|
497
497
|
}
|
|
498
498
|
/**
|
|
499
|
-
* Set a vec4 in the shader
|
|
499
|
+
* Set a vec4 in the shader.
|
|
500
500
|
* @param name Define the name of the uniform as defined in the shader
|
|
501
501
|
* @param value Define the value to give to the uniform
|
|
502
502
|
* @returns the texture itself allowing "fluent" like uniform updates
|
|
@@ -507,7 +507,7 @@ let ProceduralTexture = (() => {
|
|
|
507
507
|
return this;
|
|
508
508
|
}
|
|
509
509
|
/**
|
|
510
|
-
* Set a mat4 in the shader
|
|
510
|
+
* Set a mat4 in the shader.
|
|
511
511
|
* @param name Define the name of the uniform as defined in the shader
|
|
512
512
|
* @param value Define the value to give to the uniform
|
|
513
513
|
* @returns the texture itself allowing "fluent" like uniform updates
|