@onerjs/core 9.0.2 → 9.0.4
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/Buffers/buffer.pure.js +4 -0
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/camera.pure.d.ts +14 -0
- package/Cameras/camera.pure.js +15 -0
- package/Cameras/camera.pure.js.map +1 -1
- package/Compute/computeShader.pure.d.ts +2 -1
- package/Compute/computeShader.pure.js +29 -10
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/ray.core.js +22 -9
- package/Culling/ray.core.js.map +1 -1
- package/Engines/IDrawContext.d.ts +2 -0
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +55 -4
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +1 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +5 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.d.ts +2 -0
- package/Engines/Processors/shaderCodeInliner.js +251 -6
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +10 -1
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.debugging.pure.js +12 -0
- package/Engines/WebGPU/Extensions/engine.debugging.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +0 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.pure.js +5 -0
- package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +7 -0
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheTextureView.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheTextureView.js +20 -8
- package/Engines/WebGPU/webgpuCacheTextureView.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +2 -0
- package/Engines/WebGPU/webgpuDrawContext.js +6 -0
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -3
- package/Engines/WebGPU/webgpuQuerySet.js +23 -9
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuRenderPassCommandStream.d.ts +156 -0
- package/Engines/WebGPU/webgpuRenderPassCommandStream.js +323 -0
- package/Engines/WebGPU/webgpuRenderPassCommandStream.js.map +1 -0
- package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureManager.js +4 -3
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.d.ts +3 -1
- package/Engines/WebGPU/webgpuTimestampQuery.js +9 -6
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +2 -0
- package/Engines/abstractEngine.pure.js +14 -5
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +6 -0
- package/Engines/constants.js +6 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +198 -24
- package/Engines/pure.d.ts +1 -0
- package/Engines/pure.js +1 -0
- package/Engines/pure.js.map +1 -1
- package/Engines/renderCommandBatcher.pure.d.ts +16 -0
- package/Engines/renderCommandBatcher.pure.js +24 -0
- package/Engines/renderCommandBatcher.pure.js.map +1 -0
- package/Engines/thinEngine.functions.js +3 -2
- package/Engines/thinEngine.functions.js.map +1 -1
- package/Engines/thinEngine.pure.js +18 -2
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +10 -7
- package/Engines/thinNativeEngine.pure.js +117 -46
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +8 -0
- package/Engines/thinWebGPUEngine.js +11 -0
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +60 -1
- package/Engines/webgpuEngine.pure.js +238 -42
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.d.ts +3 -3
- package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.js +2 -1
- package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.d.ts +3 -3
- package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.js +2 -1
- package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.d.ts +5 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.js +8 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.d.ts +77 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.js +141 -0
- package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.d.ts +5 -3
- package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.js +38 -7
- package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/index.d.ts +1 -0
- package/FlowGraph/Blocks/Event/index.js +1 -0
- package/FlowGraph/Blocks/Event/index.js.map +1 -1
- package/FlowGraph/Blocks/Event/pure.d.ts +1 -0
- package/FlowGraph/Blocks/Event/pure.js +1 -0
- package/FlowGraph/Blocks/Event/pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.d.ts +3 -3
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.js +2 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.d.ts +3 -3
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.js +2 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.d.ts +3 -3
- package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.js +2 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.d.ts +3 -3
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.js +2 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/allBlocks.pure.js +2 -0
- package/FlowGraph/Blocks/allBlocks.pure.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.js +2 -0
- package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +1 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js +1 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +12 -1
- package/FlowGraph/flowGraph.js +38 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +44 -0
- package/FlowGraph/flowGraphCoordinator.js +141 -0
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.js +41 -14
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +105 -5
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/flowGraphSoundAssets.d.ts +40 -0
- package/FlowGraph/flowGraphSoundAssets.js +33 -0
- package/FlowGraph/flowGraphSoundAssets.js.map +1 -0
- package/FlowGraph/index.d.ts +1 -0
- package/FlowGraph/index.js +1 -0
- package/FlowGraph/index.js.map +1 -1
- package/FlowGraph/pure.d.ts +1 -0
- package/FlowGraph/pure.js +1 -0
- package/FlowGraph/pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +8 -0
- package/FlowGraph/serialization.js +31 -12
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +25 -0
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.js +2 -0
- package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
- package/Instrumentation/engineInstrumentation.d.ts +1 -0
- package/Instrumentation/engineInstrumentation.js +25 -6
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +2 -0
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +36 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.js +202 -27
- package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
- package/Lights/directionalLight.pure.d.ts +24 -10
- package/Lights/directionalLight.pure.js +29 -11
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Loading/sceneLoader.js +1 -1
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +4 -4
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.pure.js +4 -0
- package/Materials/Node/Blocks/Input/inputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.d.ts +9 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +23 -3
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.js +1 -1
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +9 -0
- package/Materials/PBR/pbrBaseMaterial.pure.js +60 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +11 -0
- package/Materials/PBR/pbrBaseSimpleMaterial.js +21 -2
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +12 -0
- package/Materials/PBR/pbrMaterial.pure.js +23 -3
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -0
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +10 -0
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +5 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +7 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -1
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +9 -3
- package/Materials/Textures/HTML/htmlInteractionManager.js +64 -5
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -1
- package/Materials/Textures/HTML/htmlTexture.d.ts +11 -11
- package/Materials/Textures/HTML/htmlTexture.js +106 -65
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -1
- package/Materials/Textures/Loaders/internalTextureLoader.d.ts +2 -1
- package/Materials/Textures/Loaders/internalTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +2 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +4 -50
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +10 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +6 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/ktx2encoderTypes.d.ts +51 -0
- package/Materials/Textures/ktx2encoderTypes.js +2 -0
- package/Materials/Textures/ktx2encoderTypes.js.map +1 -0
- package/Materials/Textures/renderTargetTexture.pure.js +10 -2
- package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
- package/Materials/Textures/textureMerger.d.ts +11 -0
- package/Materials/Textures/textureMerger.js +34 -19
- package/Materials/Textures/textureMerger.js.map +1 -1
- package/Materials/Textures/textureProcessor.d.ts +145 -0
- package/Materials/Textures/textureProcessor.js +445 -45
- package/Materials/Textures/textureProcessor.js.map +1 -1
- package/Materials/Textures/textureSampling.functions.d.ts +41 -0
- package/Materials/Textures/textureSampling.functions.js +82 -0
- package/Materials/Textures/textureSampling.functions.js.map +1 -0
- package/Materials/drawWrapper.d.ts +8 -0
- package/Materials/drawWrapper.js +19 -0
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.pure.d.ts +6 -0
- package/Materials/effect.pure.js +28 -6
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/effect.webgl.functions.pure.js +1 -1
- package/Materials/effect.webgl.functions.pure.js.map +1 -1
- package/Materials/material.pure.d.ts +5 -0
- package/Materials/material.pure.js +9 -2
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialFlags.d.ts +6 -0
- package/Materials/materialFlags.js +14 -0
- package/Materials/materialFlags.js.map +1 -1
- package/Materials/materialHelper.functions.d.ts +2 -1
- package/Materials/materialHelper.functions.js +36 -2
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.js +19 -16
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +12 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/prePassConfiguration.js +19 -16
- package/Materials/prePassConfiguration.js.map +1 -1
- package/Materials/shaderMaterial.pure.js +19 -6
- package/Materials/shaderMaterial.pure.js.map +1 -1
- package/Materials/shadowDepthWrapper.d.ts +6 -0
- package/Materials/shadowDepthWrapper.js +17 -0
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Meshes/Compression/dracoCodec.d.ts +14 -0
- package/Meshes/Compression/dracoCodec.js +22 -0
- package/Meshes/Compression/dracoCodec.js.map +1 -1
- package/Meshes/Compression/dracoDecoder.d.ts +1 -0
- package/Meshes/Compression/dracoDecoder.js +27 -0
- package/Meshes/Compression/dracoDecoder.js.map +1 -1
- package/Meshes/Compression/dracoEncoder.d.ts +1 -0
- package/Meshes/Compression/dracoEncoder.js +8 -0
- package/Meshes/Compression/dracoEncoder.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.d.ts +1 -0
- package/Meshes/Compression/meshoptCompression.js +9 -0
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.d.ts +415 -0
- package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.js +912 -0
- package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +40 -9
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +112 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +696 -74
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +12 -4
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.d.ts +5 -0
- package/Meshes/geometry.js +25 -0
- package/Meshes/geometry.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/mesh.pure.d.ts +7 -0
- package/Meshes/mesh.pure.js +18 -13
- package/Meshes/mesh.pure.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/Meshes/subMesh.pure.d.ts +3 -0
- package/Meshes/subMesh.pure.js +26 -0
- package/Meshes/subMesh.pure.js.map +1 -1
- package/Meshes/thinInstanceMesh.pure.js +5 -3
- package/Meshes/thinInstanceMesh.pure.js.map +1 -1
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +1 -0
- package/Misc/index.js.map +1 -1
- package/Misc/khronosTextureContainer2.d.ts +3 -2
- package/Misc/khronosTextureContainer2.js +24 -6
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/khronosTextureContainer2Encoder.d.ts +166 -0
- package/Misc/khronosTextureContainer2Encoder.js +556 -0
- package/Misc/khronosTextureContainer2Encoder.js.map +1 -0
- package/Misc/khronosTextureContainer2EncoderWorker.d.ts +61 -0
- package/Misc/khronosTextureContainer2EncoderWorker.js +55 -0
- package/Misc/khronosTextureContainer2EncoderWorker.js.map +1 -0
- package/Misc/pure.d.ts +1 -0
- package/Misc/pure.js +1 -0
- package/Misc/pure.js.map +1 -1
- package/Misc/textureFormat.functions.d.ts +6 -0
- package/Misc/textureFormat.functions.js +54 -0
- package/Misc/textureFormat.functions.js.map +1 -0
- package/Misc/textureTools.d.ts +6 -2
- package/Misc/textureTools.js +100 -42
- package/Misc/textureTools.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.d.ts +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +6 -3
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/computeShaderParticleSystem.pure.js +5 -0
- package/Particles/computeShaderParticleSystem.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +25 -1
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/solidParticle.d.ts +5 -0
- package/Particles/solidParticle.js +5 -0
- package/Particles/solidParticle.js.map +1 -1
- package/Particles/solidParticleSystem.d.ts +10 -0
- package/Particles/solidParticleSystem.js +72 -13
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +4 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.d.ts +27 -6
- package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.js +60 -5
- package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.js.map +1 -1
- package/PostProcesses/thinTAAPostProcess.d.ts +1 -0
- package/PostProcesses/thinTAAPostProcess.js +17 -1
- package/PostProcesses/thinTAAPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.d.ts +2 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +6 -5
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +2 -3
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.js +8 -2
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +1 -0
- package/Rendering/objectRenderer.js +14 -0
- package/Rendering/objectRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +2 -2
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +5 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +2 -2
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
- package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +6 -0
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +11 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +9 -0
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
- package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +7 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.js +12 -0
- package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +3 -0
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
- package/Shaders/geometry.vertex.js +6 -6
- package/Shaders/geometry.vertex.js.map +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
- package/Shaders/lod.fragment.js +15 -2
- package/Shaders/lod.fragment.js.map +1 -1
- package/Shaders/lod3D.fragment.js +15 -2
- package/Shaders/lod3D.fragment.js.map +1 -1
- package/Shaders/lodCube.fragment.js +15 -2
- package/Shaders/lodCube.fragment.js.map +1 -1
- package/Shaders/openpbr.vertex.js +2 -0
- package/Shaders/openpbr.vertex.js.map +1 -1
- package/Shaders/pbr.fragment.js +12 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/pbr.vertex.js +2 -0
- package/Shaders/pbr.vertex.js.map +1 -1
- package/Shaders/textureMerger.fragment.js +28 -0
- package/Shaders/textureMerger.fragment.js.map +1 -1
- package/Shaders/textureProcessor.fragment.js +26 -4
- package/Shaders/textureProcessor.fragment.js.map +1 -1
- package/Shaders/volumetricLightScattering.fragment.js +1 -1
- package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bumpVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/bumpVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js +44 -2
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +17 -3
- package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +12 -1
- package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +11 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +9 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
- package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +8 -0
- package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassVertex.js +2 -2
- package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +3 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/shadowsVertex.js +16 -0
- package/ShadersWGSL/ShadersInclude/shadowsVertex.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +4 -4
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/default.vertex.js +1 -1
- package/ShadersWGSL/default.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +3 -3
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
- package/ShadersWGSL/gsSortCount.compute.d.ts +5 -0
- package/ShadersWGSL/gsSortCount.compute.js +19 -0
- package/ShadersWGSL/gsSortCount.compute.js.map +1 -0
- package/ShadersWGSL/gsSortKeys.compute.d.ts +5 -0
- package/ShadersWGSL/gsSortKeys.compute.js +49 -0
- package/ShadersWGSL/gsSortKeys.compute.js.map +1 -0
- package/ShadersWGSL/gsSortOutput.compute.d.ts +5 -0
- package/ShadersWGSL/gsSortOutput.compute.js +28 -0
- package/ShadersWGSL/gsSortOutput.compute.js.map +1 -0
- package/ShadersWGSL/gsSortScanLocal.compute.d.ts +5 -0
- package/ShadersWGSL/gsSortScanLocal.compute.js +23 -0
- package/ShadersWGSL/gsSortScanLocal.compute.js.map +1 -0
- package/ShadersWGSL/gsSortScanSums.compute.d.ts +5 -0
- package/ShadersWGSL/gsSortScanSums.compute.js +19 -0
- package/ShadersWGSL/gsSortScanSums.compute.js.map +1 -0
- package/ShadersWGSL/gsSortScatter.compute.d.ts +5 -0
- package/ShadersWGSL/gsSortScatter.compute.js +33 -0
- package/ShadersWGSL/gsSortScatter.compute.js.map +1 -0
- package/ShadersWGSL/lod.fragment.js +14 -2
- package/ShadersWGSL/lod.fragment.js.map +1 -1
- package/ShadersWGSL/lod3D.fragment.js +14 -2
- package/ShadersWGSL/lod3D.fragment.js.map +1 -1
- package/ShadersWGSL/lodCube.fragment.js +14 -2
- package/ShadersWGSL/lodCube.fragment.js.map +1 -1
- package/ShadersWGSL/openpbr.vertex.js +3 -1
- package/ShadersWGSL/openpbr.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +11 -0
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/pbr.vertex.js +3 -1
- package/ShadersWGSL/pbr.vertex.js.map +1 -1
- package/ShadersWGSL/textureMerger.fragment.js +40 -4
- package/ShadersWGSL/textureMerger.fragment.js.map +1 -1
- package/ShadersWGSL/textureProcessor.fragment.js +26 -4
- package/ShadersWGSL/textureProcessor.fragment.js.map +1 -1
- package/Sprites/spriteRenderer.js +15 -5
- package/Sprites/spriteRenderer.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +23 -1
- package/scene.pure.js +83 -1
- package/scene.pure.js.map +1 -1
package/Engines/engine.d.ts
CHANGED
|
@@ -1709,14 +1709,23 @@ var OffscreenCanvasRenderingContext2D: {
|
|
|
1709
1709
|
// These augment the standard DOM, WebGL and WebGPU types so Babylon can consume the API - whether
|
|
1710
1710
|
// provided natively (behind chrome://flags/#canvas-draw-element) or by the three-html-render polyfill -
|
|
1711
1711
|
// without TypeScript errors. The proposal is experimental; signatures track the explainer IDL and
|
|
1712
|
-
// may change.
|
|
1712
|
+
// may change. Members removed from the explainer are kept (and deprecated) while implementations still ship them.
|
|
1713
1713
|
|
|
1714
1714
|
/**
|
|
1715
1715
|
* A transferable snapshot of a rendered element, produced by `HTMLCanvasElement.captureElementImage`.
|
|
1716
1716
|
*/
|
|
1717
1717
|
interface ElementImage {
|
|
1718
|
+
/**
|
|
1719
|
+
* Default width of the snapshot in canvas grid coordinates.
|
|
1720
|
+
* @deprecated Removed from the proposal. Use `getElementImageDefaultSize` on the canvas instead.
|
|
1721
|
+
*/
|
|
1718
1722
|
readonly width: number;
|
|
1723
|
+
/**
|
|
1724
|
+
* Default height of the snapshot in canvas grid coordinates.
|
|
1725
|
+
* @deprecated Removed from the proposal. Use `getElementImageDefaultSize` on the canvas instead.
|
|
1726
|
+
*/
|
|
1719
1727
|
readonly height: number;
|
|
1728
|
+
/** Releases the snapshot. */
|
|
1720
1729
|
close(): void;
|
|
1721
1730
|
}
|
|
1722
1731
|
|
|
@@ -1726,7 +1735,15 @@ var ElementImage: {
|
|
|
1726
1735
|
};
|
|
1727
1736
|
|
|
1728
1737
|
/**
|
|
1729
|
-
*
|
|
1738
|
+
* The default size of a drawable element (or snapshot) in canvas grid coordinates.
|
|
1739
|
+
*/
|
|
1740
|
+
interface ElementImageDefaultSize {
|
|
1741
|
+
width: number;
|
|
1742
|
+
height: number;
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
/**
|
|
1746
|
+
* Source rectangle and sizing configuration for HTML-in-Canvas WebGL uploads.
|
|
1730
1747
|
*/
|
|
1731
1748
|
interface WebGLCopyElementImageConfig {
|
|
1732
1749
|
sx?: number;
|
|
@@ -1738,32 +1755,133 @@ interface WebGLCopyElementImageConfig {
|
|
|
1738
1755
|
}
|
|
1739
1756
|
|
|
1740
1757
|
/**
|
|
1741
|
-
*
|
|
1758
|
+
* Initialization dictionary for {@link CanvasPaintEvent}.
|
|
1759
|
+
*/
|
|
1760
|
+
interface CanvasPaintEventInit extends EventInit {
|
|
1761
|
+
changedElements?: Element[];
|
|
1762
|
+
}
|
|
1763
|
+
|
|
1764
|
+
/**
|
|
1765
|
+
* Event dispatched on a drawable canvas when the rendering of one of its drawable descendants changes.
|
|
1742
1766
|
*/
|
|
1743
|
-
interface
|
|
1767
|
+
interface CanvasPaintEvent extends Event {
|
|
1768
|
+
/** The drawable descendants whose rendering changed since the last paint event. */
|
|
1744
1769
|
readonly changedElements: ReadonlyArray<Element>;
|
|
1745
1770
|
}
|
|
1746
1771
|
|
|
1747
|
-
|
|
1748
|
-
|
|
1772
|
+
var CanvasPaintEvent: {
|
|
1773
|
+
prototype: CanvasPaintEvent;
|
|
1774
|
+
new (type: string, eventInitDict?: CanvasPaintEventInit): CanvasPaintEvent;
|
|
1775
|
+
};
|
|
1776
|
+
|
|
1777
|
+
/**
|
|
1778
|
+
* Event dispatched on a drawable canvas when the rendering of one of its drawable descendants changes.
|
|
1779
|
+
* @deprecated Use {@link CanvasPaintEvent} instead.
|
|
1780
|
+
*/
|
|
1781
|
+
interface PaintEvent extends CanvasPaintEvent {}
|
|
1782
|
+
|
|
1783
|
+
/**
|
|
1784
|
+
* Initialization dictionary for {@link ElementGeometryUpdateEvent}.
|
|
1785
|
+
*/
|
|
1786
|
+
interface ElementGeometryUpdateEventInit extends EventInit {
|
|
1787
|
+
elements?: Element[];
|
|
1788
|
+
}
|
|
1789
|
+
|
|
1790
|
+
/**
|
|
1791
|
+
* Event dispatched on an `HTMLCanvasElement` once batched `OffscreenCanvas` geometry updates have been applied.
|
|
1792
|
+
*/
|
|
1793
|
+
interface ElementGeometryUpdateEvent extends Event {
|
|
1794
|
+
/** The elements whose geometry was updated. Elements that no longer exist are omitted. */
|
|
1795
|
+
readonly elements: ReadonlyArray<Element>;
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
var ElementGeometryUpdateEvent: {
|
|
1799
|
+
prototype: ElementGeometryUpdateEvent;
|
|
1800
|
+
new (type: string, eventInitDict?: ElementGeometryUpdateEventInit): ElementGeometryUpdateEvent;
|
|
1801
|
+
};
|
|
1802
|
+
|
|
1803
|
+
interface HTMLCanvasElementEventMap extends HTMLElementEventMap {
|
|
1804
|
+
paint: CanvasPaintEvent;
|
|
1805
|
+
elementgeometryupdate: ElementGeometryUpdateEvent;
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1808
|
+
/**
|
|
1809
|
+
* Geometry used to synchronize a drawable element's hit testing with its canvas rendering.
|
|
1810
|
+
*/
|
|
1811
|
+
interface UpdateElementGeometryOptions {
|
|
1812
|
+
/** Keeps the element's current position in the canvas hit testing stack when it is already present. */
|
|
1813
|
+
preserveHitTestOrder?: boolean;
|
|
1814
|
+
/** Maps the element's border box, before CSS transforms, to the canvas. */
|
|
1815
|
+
canvasTransform?: DOMMatrixInit;
|
|
1816
|
+
/** Clip used for hit testing, in the coordinate space of `canvasTransform`. */
|
|
1817
|
+
canvasClip?: DOMRectInit;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
/**
|
|
1821
|
+
* Options for `drawElementImage`.
|
|
1822
|
+
*/
|
|
1823
|
+
interface DrawElementImageOptions {
|
|
1824
|
+
/** Prevents the automatic element geometry update performed by 2D drawing (default false). */
|
|
1825
|
+
preserveElementGeometry?: boolean;
|
|
1749
1826
|
}
|
|
1750
1827
|
|
|
1751
1828
|
interface HTMLCanvasElement {
|
|
1752
|
-
/** Opts canvas descendants into layout
|
|
1829
|
+
/** Opts canvas descendants into layout when set to "drawable" (defaults to "fallback"). */
|
|
1830
|
+
content: string;
|
|
1831
|
+
/**
|
|
1832
|
+
* Opts canvas descendants into layout and hit testing so they can be drawn into the canvas.
|
|
1833
|
+
* @deprecated Replaced by `content = "drawable"`; retained for older implementations.
|
|
1834
|
+
*/
|
|
1753
1835
|
layoutSubtree: boolean;
|
|
1754
|
-
/** Fired when the rendering of any canvas
|
|
1755
|
-
onpaint: ((this: HTMLCanvasElement, ev:
|
|
1836
|
+
/** Fired when the rendering of any drawable canvas descendant has changed. */
|
|
1837
|
+
onpaint: ((this: HTMLCanvasElement, ev: CanvasPaintEvent) => any) | null;
|
|
1838
|
+
/** Fired once batched `OffscreenCanvas` geometry updates have been applied. */
|
|
1839
|
+
onelementgeometryupdate: ((this: HTMLCanvasElement, ev: ElementGeometryUpdateEvent) => any) | null;
|
|
1756
1840
|
/** Requests a single `paint` event on the next rendering update, even if nothing changed. */
|
|
1757
1841
|
requestPaint(): void;
|
|
1758
|
-
/** Captures a transferable snapshot of the given element. */
|
|
1842
|
+
/** Captures a transferable snapshot of the given drawable element. */
|
|
1759
1843
|
captureElementImage(element: Element): ElementImage;
|
|
1760
|
-
/**
|
|
1844
|
+
/** Registers a drawable descendant's geometry for hit testing and accessibility. */
|
|
1845
|
+
updateElementGeometry(element: Element | ElementImage, options?: UpdateElementGeometryOptions): void;
|
|
1846
|
+
/** Clears the registered hit-testing and accessibility geometry of a drawable descendant. */
|
|
1847
|
+
clearElementGeometry(element: Element | ElementImage): void;
|
|
1848
|
+
/** Returns the transform currently mapping the element's border box to the canvas, or identity when none is set. */
|
|
1849
|
+
getElementTransform(element: Element): DOMMatrix;
|
|
1850
|
+
/**
|
|
1851
|
+
* Older signature returning the CSS transform that keeps the element's DOM location in sync with its drawn location.
|
|
1852
|
+
* @deprecated Use `getElementTransform(element)` instead.
|
|
1853
|
+
*/
|
|
1761
1854
|
getElementTransform(element: Element | ElementImage, drawTransform: DOMMatrix): DOMMatrix;
|
|
1855
|
+
/** Returns the default size of the element (or snapshot) in canvas grid coordinates. */
|
|
1856
|
+
getElementImageDefaultSize(element: Element | ElementImage): ElementImageDefaultSize;
|
|
1857
|
+
addEventListener<K extends keyof HTMLCanvasElementEventMap>(
|
|
1858
|
+
type: K,
|
|
1859
|
+
listener: (this: HTMLCanvasElement, ev: HTMLCanvasElementEventMap[K]) => any,
|
|
1860
|
+
options?: boolean | AddEventListenerOptions
|
|
1861
|
+
): void;
|
|
1862
|
+
removeEventListener<K extends keyof HTMLCanvasElementEventMap>(
|
|
1863
|
+
type: K,
|
|
1864
|
+
listener: (this: HTMLCanvasElement, ev: HTMLCanvasElementEventMap[K]) => any,
|
|
1865
|
+
options?: boolean | EventListenerOptions
|
|
1866
|
+
): void;
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
interface OffscreenCanvas {
|
|
1870
|
+
/** Updates the element's geometry. Updates are batched and applied asynchronously on the main thread. */
|
|
1871
|
+
updateElementGeometry(element: Element | ElementImage, options?: UpdateElementGeometryOptions): void;
|
|
1872
|
+
/** Clears the element's geometry. Updates are batched and applied asynchronously on the main thread. */
|
|
1873
|
+
clearElementGeometry(element: Element | ElementImage): void;
|
|
1874
|
+
/** Returns the default size of the element (or snapshot) in canvas grid coordinates. */
|
|
1875
|
+
getElementImageDefaultSize(element: Element | ElementImage): ElementImageDefaultSize;
|
|
1762
1876
|
}
|
|
1763
1877
|
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1878
|
+
/**
|
|
1879
|
+
* Draws drawable elements (or snapshots) into a 2D context.
|
|
1880
|
+
*/
|
|
1881
|
+
interface CanvasDrawElementImage {
|
|
1882
|
+
drawElementImage(element: Element | ElementImage, dx: number, dy: number, options?: DrawElementImageOptions): void;
|
|
1883
|
+
drawElementImage(element: Element | ElementImage, dx: number, dy: number, dwidth: number, dheight: number, options?: DrawElementImageOptions): void;
|
|
1884
|
+
drawElementImage(element: Element | ElementImage, sx: number, sy: number, swidth: number, sheight: number, dx: number, dy: number, options?: DrawElementImageOptions): void;
|
|
1767
1885
|
drawElementImage(
|
|
1768
1886
|
element: Element | ElementImage,
|
|
1769
1887
|
sx: number,
|
|
@@ -1772,27 +1890,54 @@ interface CanvasRenderingContext2D {
|
|
|
1772
1890
|
sheight: number,
|
|
1773
1891
|
dx: number,
|
|
1774
1892
|
dy: number,
|
|
1775
|
-
dwidth
|
|
1776
|
-
dheight
|
|
1777
|
-
|
|
1893
|
+
dwidth: number,
|
|
1894
|
+
dheight: number,
|
|
1895
|
+
options?: DrawElementImageOptions
|
|
1896
|
+
): void;
|
|
1897
|
+
/**
|
|
1898
|
+
* Older overload with optional destination dimensions, kept so existing calls passing `undefined` or optional values still compile.
|
|
1899
|
+
* @deprecated Pass both `dwidth` and `dheight`, or neither.
|
|
1900
|
+
*/
|
|
1901
|
+
drawElementImage(element: Element | ElementImage, sx: number, sy: number, swidth: number, sheight: number, dx: number, dy: number, dwidth?: number, dheight?: number): void;
|
|
1778
1902
|
}
|
|
1779
1903
|
|
|
1904
|
+
interface CanvasRenderingContext2D extends CanvasDrawElementImage {}
|
|
1905
|
+
|
|
1906
|
+
interface OffscreenCanvasRenderingContext2D extends CanvasDrawElementImage {}
|
|
1907
|
+
|
|
1780
1908
|
interface WebGLRenderingContext {
|
|
1781
|
-
/**
|
|
1909
|
+
/** Draws a rendered element (or snapshot) into an allocated 2D texture. */
|
|
1910
|
+
texElementSubImage2D(target: number, level: number, xoffset: number, yoffset: number, element: Element | ElementImage, config?: WebGLCopyElementImageConfig): void;
|
|
1911
|
+
/**
|
|
1912
|
+
* Older WICG upload signature, retained for browsers and polyfills exposing the legacy name.
|
|
1913
|
+
* @deprecated Use `texElementSubImage2D` instead.
|
|
1914
|
+
*/
|
|
1782
1915
|
texElementImage2D(target: number, internalformat: number, element: Element | ElementImage, config?: WebGLCopyElementImageConfig): void;
|
|
1783
|
-
/**
|
|
1916
|
+
/**
|
|
1917
|
+
* Legacy texImage2D-shaped overload still shipped by some Chrome Canary builds.
|
|
1918
|
+
* @deprecated Use `texElementSubImage2D` instead.
|
|
1919
|
+
*/
|
|
1784
1920
|
texElementImage2D(target: number, level: number, internalformat: number, format: number, type: number, element: Element | ElementImage): void;
|
|
1785
1921
|
}
|
|
1786
1922
|
|
|
1787
1923
|
interface WebGL2RenderingContext {
|
|
1788
|
-
/**
|
|
1924
|
+
/** Draws a rendered element (or snapshot) into an allocated 2D texture. */
|
|
1925
|
+
texElementSubImage2D(target: number, level: number, xoffset: number, yoffset: number, element: Element | ElementImage, config?: WebGLCopyElementImageConfig): void;
|
|
1926
|
+
/**
|
|
1927
|
+
* Older WICG upload signature, retained for browsers and polyfills exposing the legacy name.
|
|
1928
|
+
* @deprecated Use `texElementSubImage2D` instead.
|
|
1929
|
+
*/
|
|
1789
1930
|
texElementImage2D(target: number, internalformat: number, element: Element | ElementImage, config?: WebGLCopyElementImageConfig): void;
|
|
1790
|
-
/**
|
|
1931
|
+
/**
|
|
1932
|
+
* Legacy texImage2D-shaped overload still shipped by some Chrome Canary builds.
|
|
1933
|
+
* @deprecated Use `texElementSubImage2D` instead.
|
|
1934
|
+
*/
|
|
1791
1935
|
texElementImage2D(target: number, level: number, internalformat: number, format: number, type: number, element: Element | ElementImage): void;
|
|
1792
1936
|
}
|
|
1793
1937
|
|
|
1794
1938
|
/**
|
|
1795
|
-
* Source descriptor for `GPUQueue.copyElementImageToTexture`.
|
|
1939
|
+
* Source descriptor for the legacy `GPUQueue.copyElementImageToTexture`.
|
|
1940
|
+
* @deprecated Use {@link GPUDrawElementImageSource} with `GPUQueue.drawElementImageToTexture` instead.
|
|
1796
1941
|
*/
|
|
1797
1942
|
interface GPUCopyElementImageSource {
|
|
1798
1943
|
source: Element | ElementImage;
|
|
@@ -1803,7 +1948,8 @@ interface GPUCopyElementImageSource {
|
|
|
1803
1948
|
}
|
|
1804
1949
|
|
|
1805
1950
|
/**
|
|
1806
|
-
* Destination descriptor for `GPUQueue.copyElementImageToTexture`.
|
|
1951
|
+
* Destination descriptor for the legacy `GPUQueue.copyElementImageToTexture`.
|
|
1952
|
+
* @deprecated Use {@link GPUDrawElementImageDestination} with `GPUQueue.drawElementImageToTexture` instead.
|
|
1807
1953
|
*/
|
|
1808
1954
|
interface GPUCopyElementImageDestination {
|
|
1809
1955
|
destination: GPUCopyExternalImageDestInfo;
|
|
@@ -1811,9 +1957,37 @@ interface GPUCopyElementImageDestination {
|
|
|
1811
1957
|
height?: number;
|
|
1812
1958
|
}
|
|
1813
1959
|
|
|
1960
|
+
/**
|
|
1961
|
+
* Source descriptor for `GPUQueue.drawElementImageToTexture`.
|
|
1962
|
+
*/
|
|
1963
|
+
interface GPUDrawElementImageSource {
|
|
1964
|
+
source: Element | ElementImage;
|
|
1965
|
+
sourceX?: number;
|
|
1966
|
+
sourceY?: number;
|
|
1967
|
+
sourceWidth?: number;
|
|
1968
|
+
sourceHeight?: number;
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1971
|
+
/**
|
|
1972
|
+
* Destination descriptor for `GPUQueue.drawElementImageToTexture`.
|
|
1973
|
+
*/
|
|
1974
|
+
interface GPUDrawElementImageDestination extends GPUCopyExternalImageDestInfo {
|
|
1975
|
+
size?: GPUExtent3D;
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1814
1978
|
interface GPUQueue {
|
|
1815
|
-
/**
|
|
1979
|
+
/** Draws a rendered element (or snapshot) into a destination GPU texture. */
|
|
1980
|
+
drawElementImageToTexture(source: GPUDrawElementImageSource, destination: GPUDrawElementImageDestination): void;
|
|
1981
|
+
/**
|
|
1982
|
+
* Uploads a rendered element (or snapshot) into a destination GPU texture.
|
|
1983
|
+
* @deprecated Use `drawElementImageToTexture` instead.
|
|
1984
|
+
*/
|
|
1816
1985
|
copyElementImageToTexture(source: GPUCopyElementImageSource, destination: GPUCopyElementImageDestination): void;
|
|
1986
|
+
/**
|
|
1987
|
+
* Legacy polyfill overload using an element and an explicit destination size.
|
|
1988
|
+
* @deprecated Use `drawElementImageToTexture` instead.
|
|
1989
|
+
*/
|
|
1990
|
+
copyElementImageToTexture(element: Element | ElementImage, width: number, height: number, destination: GPUCopyExternalImageDestInfo): void;
|
|
1817
1991
|
}
|
|
1818
1992
|
|
|
1819
1993
|
/* eslint-disable no-var */
|
package/Engines/pure.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export * from "./Processors/iShaderProcessor.js";
|
|
|
41
41
|
export * from "./engine.common.js";
|
|
42
42
|
export * from "./engineRegistration.pure.js";
|
|
43
43
|
export * from "./nullEngineRegistration.pure.js";
|
|
44
|
+
export * from "./renderCommandBatcher.pure.js";
|
|
44
45
|
export * from "./thinEngine.scissor.pure.js";
|
|
45
46
|
export * from "./Processors/pure.js";
|
|
46
47
|
export * from "./WebGPU/pure.js";
|
package/Engines/pure.js
CHANGED
|
@@ -42,6 +42,7 @@ export * from "./Processors/iShaderProcessor.js";
|
|
|
42
42
|
export * from "./engine.common.js";
|
|
43
43
|
export * from "./engineRegistration.pure.js";
|
|
44
44
|
export * from "./nullEngineRegistration.pure.js";
|
|
45
|
+
export * from "./renderCommandBatcher.pure.js";
|
|
45
46
|
export * from "./thinEngine.scissor.pure.js";
|
|
46
47
|
export * from "./Processors/pure.js";
|
|
47
48
|
export * from "./WebGPU/pure.js";
|
package/Engines/pure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./constants\";\nexport * from \"./engineCapabilities\";\nexport * from \"./instancingAttributeInfo\";\nexport * from \"./abstractEngine.pure\";\nexport * from \"./thinEngine.pure\";\nexport * from \"./thinNativeEngine.pure\";\nexport * from \"./engine.pure\";\nexport * from \"./engineStore\";\nexport * from \"./nullEngine.pure\";\nexport * from \"./AbstractEngine/pure\";\nexport * from \"./Extensions/pure\";\nexport * from \"./Native/pure\";\nexport * from \"./WebGPU/Extensions/pure\";\nexport * from \"./IPipelineContext\";\nexport * from \"./ICanvas\";\nexport * from \"./WebGL/webGLPipelineContext\";\nexport * from \"./WebGL/webGLHardwareTexture\";\nexport * from \"./WebGPU/webgpuConstants\";\nexport * from \"./webgpuEngine.pure\";\nexport * from \"./WebGPU/webgpuCacheRenderPipeline\";\nexport * from \"./WebGPU/webgpuCacheRenderPipelineTree\";\nexport * from \"./WebGPU/webgpuCacheBindGroups\";\nexport * from \"./WebGPU/webgpuCacheSampler\";\nexport * from \"./WebGPU/webgpuDrawContext\";\nexport * from \"./WebGPU/webgpuPipelineContext\";\nexport * from \"./WebGPU/webgpuRenderTargetWrapper\";\nexport * from \"./WebGPU/webgpuShaderProcessor\";\nexport * from \"./WebGPU/webgpuTintWASM\";\nexport * from \"./WebGL/webGL2ShaderProcessors\";\nexport * from \"./nativeEngine.pure\";\nexport * from \"./Processors/shaderCodeInliner\";\nexport * from \"./performanceConfigurator\";\nexport * from \"./engineFeatures\";\nexport * from \"./engineFactory\";\nexport * from \"./IMaterialContext\";\nexport * from \"./IDrawContext\";\nexport * from \"./shaderStore\";\nexport * from \"./renderTargetWrapper\";\nexport * from \"./Processors/iShaderProcessor\";\nexport * from \"./engine.common\";\nexport * from \"./engineRegistration.pure\";\nexport * from \"./nullEngineRegistration.pure\";\nexport * from \"./thinEngine.scissor.pure\";\nexport * from \"./Processors/pure\";\nexport * from \"./WebGPU/pure\";\n"]}
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./constants\";\nexport * from \"./engineCapabilities\";\nexport * from \"./instancingAttributeInfo\";\nexport * from \"./abstractEngine.pure\";\nexport * from \"./thinEngine.pure\";\nexport * from \"./thinNativeEngine.pure\";\nexport * from \"./engine.pure\";\nexport * from \"./engineStore\";\nexport * from \"./nullEngine.pure\";\nexport * from \"./AbstractEngine/pure\";\nexport * from \"./Extensions/pure\";\nexport * from \"./Native/pure\";\nexport * from \"./WebGPU/Extensions/pure\";\nexport * from \"./IPipelineContext\";\nexport * from \"./ICanvas\";\nexport * from \"./WebGL/webGLPipelineContext\";\nexport * from \"./WebGL/webGLHardwareTexture\";\nexport * from \"./WebGPU/webgpuConstants\";\nexport * from \"./webgpuEngine.pure\";\nexport * from \"./WebGPU/webgpuCacheRenderPipeline\";\nexport * from \"./WebGPU/webgpuCacheRenderPipelineTree\";\nexport * from \"./WebGPU/webgpuCacheBindGroups\";\nexport * from \"./WebGPU/webgpuCacheSampler\";\nexport * from \"./WebGPU/webgpuDrawContext\";\nexport * from \"./WebGPU/webgpuPipelineContext\";\nexport * from \"./WebGPU/webgpuRenderTargetWrapper\";\nexport * from \"./WebGPU/webgpuShaderProcessor\";\nexport * from \"./WebGPU/webgpuTintWASM\";\nexport * from \"./WebGL/webGL2ShaderProcessors\";\nexport * from \"./nativeEngine.pure\";\nexport * from \"./Processors/shaderCodeInliner\";\nexport * from \"./performanceConfigurator\";\nexport * from \"./engineFeatures\";\nexport * from \"./engineFactory\";\nexport * from \"./IMaterialContext\";\nexport * from \"./IDrawContext\";\nexport * from \"./shaderStore\";\nexport * from \"./renderTargetWrapper\";\nexport * from \"./Processors/iShaderProcessor\";\nexport * from \"./engine.common\";\nexport * from \"./engineRegistration.pure\";\nexport * from \"./nullEngineRegistration.pure\";\nexport * from \"./renderCommandBatcher.pure\";\nexport * from \"./thinEngine.scissor.pure\";\nexport * from \"./Processors/pure\";\nexport * from \"./WebGPU/pure\";\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** This file must only contain pure code and pure imports */
|
|
2
|
+
/** @internal */
|
|
3
|
+
export interface IRenderCommandLowering<Command> {
|
|
4
|
+
tryAppend(command: Command): boolean;
|
|
5
|
+
flush(): boolean;
|
|
6
|
+
reset(): void;
|
|
7
|
+
}
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare class RenderCommandBatcher<Command> {
|
|
10
|
+
private readonly _lowering;
|
|
11
|
+
private readonly _replay;
|
|
12
|
+
constructor(_lowering: IRenderCommandLowering<Command> | null | undefined, _replay: (command: Command) => void);
|
|
13
|
+
submit(command: Command): boolean;
|
|
14
|
+
flush(): boolean;
|
|
15
|
+
reset(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** This file must only contain pure code and pure imports */
|
|
2
|
+
/** @internal */
|
|
3
|
+
export class RenderCommandBatcher {
|
|
4
|
+
constructor(_lowering, _replay) {
|
|
5
|
+
this._lowering = _lowering;
|
|
6
|
+
this._replay = _replay;
|
|
7
|
+
}
|
|
8
|
+
submit(command) {
|
|
9
|
+
const lowering = this._lowering;
|
|
10
|
+
if (lowering?.tryAppend(command)) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
lowering?.flush();
|
|
14
|
+
this._replay(command);
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
flush() {
|
|
18
|
+
return this._lowering?.flush() ?? false;
|
|
19
|
+
}
|
|
20
|
+
reset() {
|
|
21
|
+
this._lowering?.reset();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=renderCommandBatcher.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderCommandBatcher.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/renderCommandBatcher.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAS7D,gBAAgB;AAChB,MAAM,OAAO,oBAAoB;IAC7B,YACqB,SAA6D,EAC7D,OAAmC;QADnC,cAAS,GAAT,SAAS,CAAoD;QAC7D,YAAO,GAAP,OAAO,CAA4B;IACrD,CAAC;IAEG,MAAM,CAAC,OAAgB;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC;IAC5C,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;CACJ","sourcesContent":["/** This file must only contain pure code and pure imports */\n\n/** @internal */\nexport interface IRenderCommandLowering<Command> {\n tryAppend(command: Command): boolean;\n flush(): boolean;\n reset(): void;\n}\n\n/** @internal */\nexport class RenderCommandBatcher<Command> {\n public constructor(\n private readonly _lowering: IRenderCommandLowering<Command> | null | undefined,\n private readonly _replay: (command: Command) => void\n ) {}\n\n public submit(command: Command): boolean {\n const lowering = this._lowering;\n if (lowering?.tryAppend(command)) {\n return true;\n }\n\n lowering?.flush();\n this._replay(command);\n return false;\n }\n\n public flush(): boolean {\n return this._lowering?.flush() ?? false;\n }\n\n public reset(): void {\n this._lowering?.reset();\n }\n}\n"]}
|
|
@@ -180,9 +180,10 @@ export function _finalizePipelineContext(pipelineContext, gl, validateShaderProg
|
|
|
180
180
|
context.deleteShader(fragmentShader);
|
|
181
181
|
pipelineContext.vertexShader = undefined;
|
|
182
182
|
pipelineContext.fragmentShader = undefined;
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
const onCompiled = pipelineContext.onCompiled;
|
|
184
|
+
if (onCompiled) {
|
|
185
185
|
pipelineContext.onCompiled = undefined;
|
|
186
|
+
onCompiled();
|
|
186
187
|
}
|
|
187
188
|
}
|
|
188
189
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinEngine.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/thinEngine.functions.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"../types\";\r\nimport { type IPipelineContext } from \"./IPipelineContext\";\r\nimport { type _IShaderProcessingContext } from \"./Processors/shaderProcessingOptions\";\r\nimport { WebGLPipelineContext } from \"./WebGL/webGLPipelineContext\";\r\nimport { type _LoadFile, _ConcatenateShader } from \"./abstractEngine.functions\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface IThinEngineStateObject {\r\n _contextWasLost?: boolean;\r\n validateShaderPrograms?: boolean;\r\n _webGLVersion: number;\r\n parallelShaderCompile?: { COMPLETION_STATUS_KHR: number };\r\n disableParallelShaderCompile?: boolean;\r\n _context?: WebGLContext;\r\n _createShaderProgramInjection?: typeof _createShaderProgram;\r\n createRawShaderProgramInjection?: typeof createRawShaderProgram;\r\n createShaderProgramInjection?: typeof createShaderProgram;\r\n loadFileInjection?: typeof _LoadFile;\r\n cachedPipelines: { [name: string]: IPipelineContext };\r\n}\r\n\r\nconst StateObject: WeakMap<WebGLContext, IThinEngineStateObject> = new WeakMap();\r\n\r\n/**\r\n * This will be used in cases where the engine doesn't have a context (like the nullengine)\r\n */\r\nconst SingleStateObject: IThinEngineStateObject = {\r\n _webGLVersion: 2,\r\n cachedPipelines: {},\r\n};\r\n\r\n/**\r\n * get or create a state object for the given context\r\n * Note - Used in WebGL only at the moment.\r\n * @param context The context to get the state object from\r\n * @returns the state object\r\n * @internal\r\n */\r\nexport function getStateObject(context: WebGLContext): IThinEngineStateObject {\r\n let state = StateObject.get(context);\r\n if (!state) {\r\n if (!context) {\r\n return SingleStateObject;\r\n }\r\n state = {\r\n // use feature detection. instanceof returns false. This only exists on WebGL2 context\r\n _webGLVersion: (context as WebGL2RenderingContext).TEXTURE_BINDING_3D ? 2 : 1,\r\n _context: context,\r\n // when using the function without an engine we need to set it to enable parallel compilation\r\n parallelShaderCompile: context.getExtension(\"KHR_parallel_shader_compile\") || undefined,\r\n cachedPipelines: {},\r\n };\r\n StateObject.set(context, state);\r\n }\r\n return state;\r\n}\r\n/**\r\n * Remove the state object that belongs to the specific context\r\n * @param context the context that is being\r\n */\r\nexport function deleteStateObject(context: WebGLContext): void {\r\n StateObject.delete(context);\r\n}\r\n\r\nexport type WebGLContext = WebGLRenderingContext | WebGL2RenderingContext;\r\n/**\r\n * Directly creates a webGL program\r\n * @param pipelineContext defines the pipeline context to attach to\r\n * @param vertexCode defines the vertex shader code to use\r\n * @param fragmentCode defines the fragment shader code to use\r\n * @param context defines the webGL context to use (if not set, the current one will be used)\r\n * @param transformFeedbackVaryings defines the list of transform feedback varyings to use\r\n * @param _createShaderProgramInjection defines an optional injection to use to create the shader program\r\n * @returns the new webGL program\r\n */\r\nexport function createRawShaderProgram(\r\n pipelineContext: IPipelineContext,\r\n vertexCode: string,\r\n fragmentCode: string,\r\n context: WebGLContext,\r\n transformFeedbackVaryings: Nullable<string[]>,\r\n _createShaderProgramInjection?: typeof _createShaderProgram\r\n): WebGLProgram {\r\n const stateObject = getStateObject(context);\r\n if (!_createShaderProgramInjection) {\r\n _createShaderProgramInjection = stateObject._createShaderProgramInjection ?? _createShaderProgram;\r\n }\r\n\r\n const vertexShader = CompileRawShader(vertexCode, \"vertex\", context, stateObject._contextWasLost);\r\n const fragmentShader = CompileRawShader(fragmentCode, \"fragment\", context, stateObject._contextWasLost);\r\n\r\n return _createShaderProgramInjection(\r\n pipelineContext as WebGLPipelineContext,\r\n vertexShader,\r\n fragmentShader,\r\n context,\r\n transformFeedbackVaryings,\r\n stateObject.validateShaderPrograms\r\n );\r\n}\r\n\r\n/**\r\n * Creates a webGL program\r\n * @param pipelineContext defines the pipeline context to attach to\r\n * @param vertexCode defines the vertex shader code to use\r\n * @param fragmentCode defines the fragment shader code to use\r\n * @param defines defines the string containing the defines to use to compile the shaders\r\n * @param context defines the webGL context to use (if not set, the current one will be used)\r\n * @param transformFeedbackVaryings defines the list of transform feedback varyings to use\r\n * @param _createShaderProgramInjection defines an optional injection to use to create the shader program\r\n * @returns the new webGL program\r\n */\r\nexport function createShaderProgram(\r\n pipelineContext: IPipelineContext,\r\n vertexCode: string,\r\n fragmentCode: string,\r\n defines: Nullable<string>,\r\n context: WebGLContext,\r\n transformFeedbackVaryings: Nullable<string[]> = null,\r\n _createShaderProgramInjection?: typeof _createShaderProgram\r\n): WebGLProgram {\r\n const stateObject = getStateObject(context);\r\n if (!_createShaderProgramInjection) {\r\n _createShaderProgramInjection = stateObject._createShaderProgramInjection ?? _createShaderProgram;\r\n }\r\n const shaderVersion = stateObject._webGLVersion > 1 ? \"#version 300 es\\n#define WEBGL2 \\n\" : \"\";\r\n const vertexShader = CompileShader(vertexCode, \"vertex\", defines, shaderVersion, context, stateObject._contextWasLost);\r\n const fragmentShader = CompileShader(fragmentCode, \"fragment\", defines, shaderVersion, context, stateObject._contextWasLost);\r\n\r\n return _createShaderProgramInjection(\r\n pipelineContext as WebGLPipelineContext,\r\n vertexShader,\r\n fragmentShader,\r\n context,\r\n transformFeedbackVaryings,\r\n stateObject.validateShaderPrograms\r\n );\r\n}\r\n\r\n/**\r\n * Creates a new pipeline context. Note, make sure to attach an engine instance to the created context\r\n * @param context defines the webGL context to use (if not set, the current one will be used)\r\n * @param _shaderProcessingContext defines the shader processing context used during the processing if available\r\n * @returns the new pipeline\r\n */\r\nexport function createPipelineContext(context: WebGLContext, _shaderProcessingContext: Nullable<_IShaderProcessingContext>): IPipelineContext {\r\n const pipelineContext = new WebGLPipelineContext();\r\n const stateObject = getStateObject(context);\r\n if (stateObject.parallelShaderCompile && !stateObject.disableParallelShaderCompile) {\r\n pipelineContext.isParallelCompiled = true;\r\n }\r\n pipelineContext.context = stateObject._context;\r\n return pipelineContext;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _createShaderProgram(\r\n pipelineContext: WebGLPipelineContext,\r\n vertexShader: WebGLShader,\r\n fragmentShader: WebGLShader,\r\n context: WebGLContext,\r\n _transformFeedbackVaryings: Nullable<string[]> = null,\r\n validateShaderPrograms?: boolean\r\n): WebGLProgram {\r\n const shaderProgram = context.createProgram();\r\n pipelineContext.program = shaderProgram;\r\n\r\n if (!shaderProgram) {\r\n throw new Error(\"Unable to create program\");\r\n }\r\n\r\n context.attachShader(shaderProgram, vertexShader);\r\n context.attachShader(shaderProgram, fragmentShader);\r\n\r\n context.linkProgram(shaderProgram);\r\n\r\n pipelineContext.context = context;\r\n pipelineContext.vertexShader = vertexShader;\r\n pipelineContext.fragmentShader = fragmentShader;\r\n\r\n if (!pipelineContext.isParallelCompiled) {\r\n _finalizePipelineContext(pipelineContext, context, validateShaderPrograms);\r\n }\r\n\r\n return shaderProgram;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _isRenderingStateCompiled(pipelineContext: IPipelineContext, gl: WebGLContext, validateShaderPrograms?: boolean): boolean {\r\n const webGLPipelineContext = pipelineContext as WebGLPipelineContext;\r\n if (webGLPipelineContext._isDisposed) {\r\n return false;\r\n }\r\n const stateObject = getStateObject(gl);\r\n if (stateObject && stateObject.parallelShaderCompile && stateObject.parallelShaderCompile.COMPLETION_STATUS_KHR && webGLPipelineContext.program) {\r\n if (gl.getProgramParameter(webGLPipelineContext.program, stateObject.parallelShaderCompile.COMPLETION_STATUS_KHR)) {\r\n _finalizePipelineContext(webGLPipelineContext, gl, validateShaderPrograms);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _finalizePipelineContext(pipelineContext: WebGLPipelineContext, gl: WebGLContext, validateShaderPrograms?: boolean) {\r\n const context = pipelineContext.context!;\r\n const vertexShader = pipelineContext.vertexShader!;\r\n const fragmentShader = pipelineContext.fragmentShader!;\r\n const program = pipelineContext.program!;\r\n\r\n const linked = context.getProgramParameter(program, context.LINK_STATUS);\r\n if (!linked) {\r\n // Get more info\r\n // Vertex\r\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\r\n const log = gl.getShaderInfoLog(vertexShader);\r\n if (log) {\r\n pipelineContext.vertexCompilationError = log;\r\n throw new Error(\"VERTEX SHADER \" + log);\r\n }\r\n }\r\n\r\n // Fragment\r\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\r\n const log = gl.getShaderInfoLog(fragmentShader);\r\n if (log) {\r\n pipelineContext.fragmentCompilationError = log;\r\n throw new Error(\"FRAGMENT SHADER \" + log);\r\n }\r\n }\r\n\r\n const error = context.getProgramInfoLog(program);\r\n if (error) {\r\n pipelineContext.programLinkError = error;\r\n throw new Error(error);\r\n }\r\n }\r\n\r\n if (/*this.*/ validateShaderPrograms) {\r\n context.validateProgram(program);\r\n const validated = context.getProgramParameter(program, context.VALIDATE_STATUS);\r\n\r\n if (!validated) {\r\n const error = context.getProgramInfoLog(program);\r\n if (error) {\r\n pipelineContext.programValidationError = error;\r\n throw new Error(error);\r\n }\r\n }\r\n }\r\n\r\n context.deleteShader(vertexShader);\r\n context.deleteShader(fragmentShader);\r\n\r\n pipelineContext.vertexShader = undefined;\r\n pipelineContext.fragmentShader = undefined;\r\n\r\n if (pipelineContext.onCompiled) {\r\n pipelineContext.onCompiled();\r\n pipelineContext.onCompiled = undefined;\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _preparePipelineContext(\r\n pipelineContext: IPipelineContext,\r\n vertexSourceCode: string,\r\n fragmentSourceCode: string,\r\n createAsRaw: boolean,\r\n _rawVertexSourceCode: string,\r\n _rawFragmentSourceCode: string,\r\n rebuildRebind: any,\r\n defines: Nullable<string>,\r\n transformFeedbackVaryings: Nullable<string[]>,\r\n _key: string = \"\",\r\n onReady: () => void,\r\n createRawShaderProgramInjection?: typeof createRawShaderProgram,\r\n createShaderProgramInjection?: typeof createShaderProgram\r\n) {\r\n const stateObject = getStateObject((pipelineContext as WebGLPipelineContext).context!);\r\n if (!createRawShaderProgramInjection) {\r\n createRawShaderProgramInjection = stateObject.createRawShaderProgramInjection ?? createRawShaderProgram;\r\n }\r\n if (!createShaderProgramInjection) {\r\n createShaderProgramInjection = stateObject.createShaderProgramInjection ?? createShaderProgram;\r\n }\r\n const webGLRenderingState = pipelineContext as WebGLPipelineContext;\r\n\r\n if (createAsRaw) {\r\n webGLRenderingState.program = createRawShaderProgramInjection(\r\n webGLRenderingState,\r\n vertexSourceCode,\r\n fragmentSourceCode,\r\n webGLRenderingState.context!,\r\n transformFeedbackVaryings\r\n );\r\n } else {\r\n webGLRenderingState.program = createShaderProgramInjection(\r\n webGLRenderingState,\r\n vertexSourceCode,\r\n fragmentSourceCode,\r\n defines,\r\n webGLRenderingState.context!,\r\n transformFeedbackVaryings\r\n );\r\n }\r\n webGLRenderingState.program.__SPECTOR_rebuildProgram = rebuildRebind;\r\n\r\n onReady();\r\n}\r\n\r\nfunction CompileShader(source: string, type: string, defines: Nullable<string>, shaderVersion: string, gl: WebGLContext, _contextWasLost?: boolean): WebGLShader {\r\n return CompileRawShader(_ConcatenateShader(source, defines, shaderVersion), type, gl, _contextWasLost);\r\n}\r\n\r\nfunction CompileRawShader(source: string, type: string, gl: WebGLContext, _contextWasLost?: boolean): WebGLShader {\r\n const shader = gl.createShader(type === \"vertex\" ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER);\r\n\r\n if (!shader) {\r\n let error: GLenum = gl.NO_ERROR;\r\n let tempError: GLenum;\r\n while ((tempError = gl.getError()) !== gl.NO_ERROR) {\r\n error = tempError;\r\n }\r\n\r\n throw new Error(\r\n `Something went wrong while creating a gl ${type} shader object. gl error=${error}, gl isContextLost=${gl.isContextLost()}, _contextWasLost=${_contextWasLost}`\r\n );\r\n }\r\n\r\n gl.shaderSource(shader, source);\r\n gl.compileShader(shader);\r\n\r\n return shader;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _setProgram(program: Nullable<WebGLProgram>, gl: WebGLContext): void {\r\n gl.useProgram(program);\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _executeWhenRenderingStateIsCompiled(pipelineContext: IPipelineContext, action: (pipelineContext?: IPipelineContext) => void) {\r\n const webGLPipelineContext = pipelineContext as WebGLPipelineContext;\r\n\r\n if (!webGLPipelineContext.isParallelCompiled) {\r\n action(pipelineContext);\r\n return;\r\n }\r\n\r\n const oldHandler = webGLPipelineContext.onCompiled;\r\n\r\n webGLPipelineContext.onCompiled = () => {\r\n oldHandler?.();\r\n action(pipelineContext);\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"thinEngine.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/thinEngine.functions.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"../types\";\r\nimport { type IPipelineContext } from \"./IPipelineContext\";\r\nimport { type _IShaderProcessingContext } from \"./Processors/shaderProcessingOptions\";\r\nimport { WebGLPipelineContext } from \"./WebGL/webGLPipelineContext\";\r\nimport { type _LoadFile, _ConcatenateShader } from \"./abstractEngine.functions\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface IThinEngineStateObject {\r\n _contextWasLost?: boolean;\r\n validateShaderPrograms?: boolean;\r\n _webGLVersion: number;\r\n parallelShaderCompile?: { COMPLETION_STATUS_KHR: number };\r\n disableParallelShaderCompile?: boolean;\r\n _context?: WebGLContext;\r\n _createShaderProgramInjection?: typeof _createShaderProgram;\r\n createRawShaderProgramInjection?: typeof createRawShaderProgram;\r\n createShaderProgramInjection?: typeof createShaderProgram;\r\n loadFileInjection?: typeof _LoadFile;\r\n cachedPipelines: { [name: string]: IPipelineContext };\r\n}\r\n\r\nconst StateObject: WeakMap<WebGLContext, IThinEngineStateObject> = new WeakMap();\r\n\r\n/**\r\n * This will be used in cases where the engine doesn't have a context (like the nullengine)\r\n */\r\nconst SingleStateObject: IThinEngineStateObject = {\r\n _webGLVersion: 2,\r\n cachedPipelines: {},\r\n};\r\n\r\n/**\r\n * get or create a state object for the given context\r\n * Note - Used in WebGL only at the moment.\r\n * @param context The context to get the state object from\r\n * @returns the state object\r\n * @internal\r\n */\r\nexport function getStateObject(context: WebGLContext): IThinEngineStateObject {\r\n let state = StateObject.get(context);\r\n if (!state) {\r\n if (!context) {\r\n return SingleStateObject;\r\n }\r\n state = {\r\n // use feature detection. instanceof returns false. This only exists on WebGL2 context\r\n _webGLVersion: (context as WebGL2RenderingContext).TEXTURE_BINDING_3D ? 2 : 1,\r\n _context: context,\r\n // when using the function without an engine we need to set it to enable parallel compilation\r\n parallelShaderCompile: context.getExtension(\"KHR_parallel_shader_compile\") || undefined,\r\n cachedPipelines: {},\r\n };\r\n StateObject.set(context, state);\r\n }\r\n return state;\r\n}\r\n/**\r\n * Remove the state object that belongs to the specific context\r\n * @param context the context that is being\r\n */\r\nexport function deleteStateObject(context: WebGLContext): void {\r\n StateObject.delete(context);\r\n}\r\n\r\nexport type WebGLContext = WebGLRenderingContext | WebGL2RenderingContext;\r\n/**\r\n * Directly creates a webGL program\r\n * @param pipelineContext defines the pipeline context to attach to\r\n * @param vertexCode defines the vertex shader code to use\r\n * @param fragmentCode defines the fragment shader code to use\r\n * @param context defines the webGL context to use (if not set, the current one will be used)\r\n * @param transformFeedbackVaryings defines the list of transform feedback varyings to use\r\n * @param _createShaderProgramInjection defines an optional injection to use to create the shader program\r\n * @returns the new webGL program\r\n */\r\nexport function createRawShaderProgram(\r\n pipelineContext: IPipelineContext,\r\n vertexCode: string,\r\n fragmentCode: string,\r\n context: WebGLContext,\r\n transformFeedbackVaryings: Nullable<string[]>,\r\n _createShaderProgramInjection?: typeof _createShaderProgram\r\n): WebGLProgram {\r\n const stateObject = getStateObject(context);\r\n if (!_createShaderProgramInjection) {\r\n _createShaderProgramInjection = stateObject._createShaderProgramInjection ?? _createShaderProgram;\r\n }\r\n\r\n const vertexShader = CompileRawShader(vertexCode, \"vertex\", context, stateObject._contextWasLost);\r\n const fragmentShader = CompileRawShader(fragmentCode, \"fragment\", context, stateObject._contextWasLost);\r\n\r\n return _createShaderProgramInjection(\r\n pipelineContext as WebGLPipelineContext,\r\n vertexShader,\r\n fragmentShader,\r\n context,\r\n transformFeedbackVaryings,\r\n stateObject.validateShaderPrograms\r\n );\r\n}\r\n\r\n/**\r\n * Creates a webGL program\r\n * @param pipelineContext defines the pipeline context to attach to\r\n * @param vertexCode defines the vertex shader code to use\r\n * @param fragmentCode defines the fragment shader code to use\r\n * @param defines defines the string containing the defines to use to compile the shaders\r\n * @param context defines the webGL context to use (if not set, the current one will be used)\r\n * @param transformFeedbackVaryings defines the list of transform feedback varyings to use\r\n * @param _createShaderProgramInjection defines an optional injection to use to create the shader program\r\n * @returns the new webGL program\r\n */\r\nexport function createShaderProgram(\r\n pipelineContext: IPipelineContext,\r\n vertexCode: string,\r\n fragmentCode: string,\r\n defines: Nullable<string>,\r\n context: WebGLContext,\r\n transformFeedbackVaryings: Nullable<string[]> = null,\r\n _createShaderProgramInjection?: typeof _createShaderProgram\r\n): WebGLProgram {\r\n const stateObject = getStateObject(context);\r\n if (!_createShaderProgramInjection) {\r\n _createShaderProgramInjection = stateObject._createShaderProgramInjection ?? _createShaderProgram;\r\n }\r\n const shaderVersion = stateObject._webGLVersion > 1 ? \"#version 300 es\\n#define WEBGL2 \\n\" : \"\";\r\n const vertexShader = CompileShader(vertexCode, \"vertex\", defines, shaderVersion, context, stateObject._contextWasLost);\r\n const fragmentShader = CompileShader(fragmentCode, \"fragment\", defines, shaderVersion, context, stateObject._contextWasLost);\r\n\r\n return _createShaderProgramInjection(\r\n pipelineContext as WebGLPipelineContext,\r\n vertexShader,\r\n fragmentShader,\r\n context,\r\n transformFeedbackVaryings,\r\n stateObject.validateShaderPrograms\r\n );\r\n}\r\n\r\n/**\r\n * Creates a new pipeline context. Note, make sure to attach an engine instance to the created context\r\n * @param context defines the webGL context to use (if not set, the current one will be used)\r\n * @param _shaderProcessingContext defines the shader processing context used during the processing if available\r\n * @returns the new pipeline\r\n */\r\nexport function createPipelineContext(context: WebGLContext, _shaderProcessingContext: Nullable<_IShaderProcessingContext>): IPipelineContext {\r\n const pipelineContext = new WebGLPipelineContext();\r\n const stateObject = getStateObject(context);\r\n if (stateObject.parallelShaderCompile && !stateObject.disableParallelShaderCompile) {\r\n pipelineContext.isParallelCompiled = true;\r\n }\r\n pipelineContext.context = stateObject._context;\r\n return pipelineContext;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _createShaderProgram(\r\n pipelineContext: WebGLPipelineContext,\r\n vertexShader: WebGLShader,\r\n fragmentShader: WebGLShader,\r\n context: WebGLContext,\r\n _transformFeedbackVaryings: Nullable<string[]> = null,\r\n validateShaderPrograms?: boolean\r\n): WebGLProgram {\r\n const shaderProgram = context.createProgram();\r\n pipelineContext.program = shaderProgram;\r\n\r\n if (!shaderProgram) {\r\n throw new Error(\"Unable to create program\");\r\n }\r\n\r\n context.attachShader(shaderProgram, vertexShader);\r\n context.attachShader(shaderProgram, fragmentShader);\r\n\r\n context.linkProgram(shaderProgram);\r\n\r\n pipelineContext.context = context;\r\n pipelineContext.vertexShader = vertexShader;\r\n pipelineContext.fragmentShader = fragmentShader;\r\n\r\n if (!pipelineContext.isParallelCompiled) {\r\n _finalizePipelineContext(pipelineContext, context, validateShaderPrograms);\r\n }\r\n\r\n return shaderProgram;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _isRenderingStateCompiled(pipelineContext: IPipelineContext, gl: WebGLContext, validateShaderPrograms?: boolean): boolean {\r\n const webGLPipelineContext = pipelineContext as WebGLPipelineContext;\r\n if (webGLPipelineContext._isDisposed) {\r\n return false;\r\n }\r\n const stateObject = getStateObject(gl);\r\n if (stateObject && stateObject.parallelShaderCompile && stateObject.parallelShaderCompile.COMPLETION_STATUS_KHR && webGLPipelineContext.program) {\r\n if (gl.getProgramParameter(webGLPipelineContext.program, stateObject.parallelShaderCompile.COMPLETION_STATUS_KHR)) {\r\n _finalizePipelineContext(webGLPipelineContext, gl, validateShaderPrograms);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _finalizePipelineContext(pipelineContext: WebGLPipelineContext, gl: WebGLContext, validateShaderPrograms?: boolean) {\r\n const context = pipelineContext.context!;\r\n const vertexShader = pipelineContext.vertexShader!;\r\n const fragmentShader = pipelineContext.fragmentShader!;\r\n const program = pipelineContext.program!;\r\n\r\n const linked = context.getProgramParameter(program, context.LINK_STATUS);\r\n if (!linked) {\r\n // Get more info\r\n // Vertex\r\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\r\n const log = gl.getShaderInfoLog(vertexShader);\r\n if (log) {\r\n pipelineContext.vertexCompilationError = log;\r\n throw new Error(\"VERTEX SHADER \" + log);\r\n }\r\n }\r\n\r\n // Fragment\r\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\r\n const log = gl.getShaderInfoLog(fragmentShader);\r\n if (log) {\r\n pipelineContext.fragmentCompilationError = log;\r\n throw new Error(\"FRAGMENT SHADER \" + log);\r\n }\r\n }\r\n\r\n const error = context.getProgramInfoLog(program);\r\n if (error) {\r\n pipelineContext.programLinkError = error;\r\n throw new Error(error);\r\n }\r\n }\r\n\r\n if (/*this.*/ validateShaderPrograms) {\r\n context.validateProgram(program);\r\n const validated = context.getProgramParameter(program, context.VALIDATE_STATUS);\r\n\r\n if (!validated) {\r\n const error = context.getProgramInfoLog(program);\r\n if (error) {\r\n pipelineContext.programValidationError = error;\r\n throw new Error(error);\r\n }\r\n }\r\n }\r\n\r\n context.deleteShader(vertexShader);\r\n context.deleteShader(fragmentShader);\r\n\r\n pipelineContext.vertexShader = undefined;\r\n pipelineContext.fragmentShader = undefined;\r\n\r\n const onCompiled = pipelineContext.onCompiled;\r\n if (onCompiled) {\r\n pipelineContext.onCompiled = undefined;\r\n onCompiled();\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _preparePipelineContext(\r\n pipelineContext: IPipelineContext,\r\n vertexSourceCode: string,\r\n fragmentSourceCode: string,\r\n createAsRaw: boolean,\r\n _rawVertexSourceCode: string,\r\n _rawFragmentSourceCode: string,\r\n rebuildRebind: any,\r\n defines: Nullable<string>,\r\n transformFeedbackVaryings: Nullable<string[]>,\r\n _key: string = \"\",\r\n onReady: () => void,\r\n createRawShaderProgramInjection?: typeof createRawShaderProgram,\r\n createShaderProgramInjection?: typeof createShaderProgram\r\n) {\r\n const stateObject = getStateObject((pipelineContext as WebGLPipelineContext).context!);\r\n if (!createRawShaderProgramInjection) {\r\n createRawShaderProgramInjection = stateObject.createRawShaderProgramInjection ?? createRawShaderProgram;\r\n }\r\n if (!createShaderProgramInjection) {\r\n createShaderProgramInjection = stateObject.createShaderProgramInjection ?? createShaderProgram;\r\n }\r\n const webGLRenderingState = pipelineContext as WebGLPipelineContext;\r\n\r\n if (createAsRaw) {\r\n webGLRenderingState.program = createRawShaderProgramInjection(\r\n webGLRenderingState,\r\n vertexSourceCode,\r\n fragmentSourceCode,\r\n webGLRenderingState.context!,\r\n transformFeedbackVaryings\r\n );\r\n } else {\r\n webGLRenderingState.program = createShaderProgramInjection(\r\n webGLRenderingState,\r\n vertexSourceCode,\r\n fragmentSourceCode,\r\n defines,\r\n webGLRenderingState.context!,\r\n transformFeedbackVaryings\r\n );\r\n }\r\n webGLRenderingState.program.__SPECTOR_rebuildProgram = rebuildRebind;\r\n\r\n onReady();\r\n}\r\n\r\nfunction CompileShader(source: string, type: string, defines: Nullable<string>, shaderVersion: string, gl: WebGLContext, _contextWasLost?: boolean): WebGLShader {\r\n return CompileRawShader(_ConcatenateShader(source, defines, shaderVersion), type, gl, _contextWasLost);\r\n}\r\n\r\nfunction CompileRawShader(source: string, type: string, gl: WebGLContext, _contextWasLost?: boolean): WebGLShader {\r\n const shader = gl.createShader(type === \"vertex\" ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER);\r\n\r\n if (!shader) {\r\n let error: GLenum = gl.NO_ERROR;\r\n let tempError: GLenum;\r\n while ((tempError = gl.getError()) !== gl.NO_ERROR) {\r\n error = tempError;\r\n }\r\n\r\n throw new Error(\r\n `Something went wrong while creating a gl ${type} shader object. gl error=${error}, gl isContextLost=${gl.isContextLost()}, _contextWasLost=${_contextWasLost}`\r\n );\r\n }\r\n\r\n gl.shaderSource(shader, source);\r\n gl.compileShader(shader);\r\n\r\n return shader;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _setProgram(program: Nullable<WebGLProgram>, gl: WebGLContext): void {\r\n gl.useProgram(program);\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _executeWhenRenderingStateIsCompiled(pipelineContext: IPipelineContext, action: (pipelineContext?: IPipelineContext) => void) {\r\n const webGLPipelineContext = pipelineContext as WebGLPipelineContext;\r\n\r\n if (!webGLPipelineContext.isParallelCompiled) {\r\n action(pipelineContext);\r\n return;\r\n }\r\n\r\n const oldHandler = webGLPipelineContext.onCompiled;\r\n\r\n webGLPipelineContext.onCompiled = () => {\r\n oldHandler?.();\r\n action(pipelineContext);\r\n };\r\n}\r\n"]}
|
|
@@ -1739,13 +1739,29 @@ export class ThinEngine extends AbstractEngine {
|
|
|
1739
1739
|
* @returns the new webGL program
|
|
1740
1740
|
*/
|
|
1741
1741
|
createShaderProgram(pipelineContext, vertexCode, fragmentCode, defines, context, transformFeedbackVaryings = null) {
|
|
1742
|
-
this.onBeforeShaderCompilationObservable.
|
|
1742
|
+
const beforeState = this.onBeforeShaderCompilationObservable._eventState;
|
|
1743
|
+
const beforeTarget = beforeState.target;
|
|
1744
|
+
try {
|
|
1745
|
+
this.onBeforeShaderCompilationObservable.notifyObservers(this, -1, pipelineContext);
|
|
1746
|
+
}
|
|
1747
|
+
finally {
|
|
1748
|
+
beforeState.target = beforeTarget;
|
|
1749
|
+
}
|
|
1743
1750
|
const stateObject = getStateObject(this._gl);
|
|
1744
1751
|
// assure the state object is correct
|
|
1745
1752
|
stateObject._contextWasLost = this._contextWasLost;
|
|
1746
1753
|
stateObject.validateShaderPrograms = this.validateShaderPrograms;
|
|
1747
1754
|
const program = createShaderProgram(pipelineContext, vertexCode, fragmentCode, defines, context || this._gl, transformFeedbackVaryings);
|
|
1748
|
-
this.
|
|
1755
|
+
this._executeWhenRenderingStateIsCompiled(pipelineContext, () => {
|
|
1756
|
+
const afterState = this.onAfterShaderCompilationObservable._eventState;
|
|
1757
|
+
const afterTarget = afterState.target;
|
|
1758
|
+
try {
|
|
1759
|
+
this.onAfterShaderCompilationObservable.notifyObservers(this, -1, pipelineContext);
|
|
1760
|
+
}
|
|
1761
|
+
finally {
|
|
1762
|
+
afterState.target = afterTarget;
|
|
1763
|
+
}
|
|
1764
|
+
});
|
|
1749
1765
|
return program;
|
|
1750
1766
|
}
|
|
1751
1767
|
/**
|