@onerjs/core 9.0.0 → 9.0.2
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/animationGroup.pure.js.map +1 -1
- package/Cameras/targetCamera.pure.js +6 -1
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Engines/Native/nativeHardwareTexture.d.ts +8 -1
- package/Engines/Native/nativeHardwareTexture.js +7 -0
- package/Engines/Native/nativeHardwareTexture.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +56 -1
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +37 -8
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +40 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +265 -5
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderCodeCursor.d.ts +1 -0
- package/Engines/Processors/shaderCodeCursor.js +40 -3
- package/Engines/Processors/shaderCodeCursor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js +1 -0
- package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +15 -1
- package/Engines/abstractEngine.pure.js +12 -4
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.pure.d.ts +0 -1
- package/Engines/engine.pure.js +0 -7
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nativeEngine.pure.js +1 -1
- package/Engines/nativeEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +1 -0
- package/Engines/thinEngine.pure.js +13 -2
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +217 -17
- package/Engines/thinNativeEngine.pure.js +1431 -164
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.js +6 -1
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +12 -1
- package/Engines/webgpuEngine.pure.js +8 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.d.ts +10 -0
- package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +24 -12
- package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.d.ts +7 -0
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js +43 -0
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +16 -4
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +20 -6
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +7 -7
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +52 -35
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.d.ts +12 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +8 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +4 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.d.ts +12 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js +14 -2
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.d.ts +5 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js +23 -8
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js.map +1 -1
- package/FlowGraph/CustomTypes/flowGraphInteger.pure.d.ts +5 -0
- package/FlowGraph/CustomTypes/flowGraphInteger.pure.js +7 -0
- package/FlowGraph/CustomTypes/flowGraphInteger.pure.js.map +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +10 -0
- package/FlowGraph/CustomTypes/flowGraphMatrix.js +14 -0
- package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +2 -1
- package/FlowGraph/flowGraph.js +3 -2
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphAnimationHelpers.d.ts +24 -0
- package/FlowGraph/flowGraphAnimationHelpers.js +21 -0
- package/FlowGraph/flowGraphAnimationHelpers.js.map +1 -0
- package/FlowGraph/flowGraphContext.js +1 -0
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphValidator.js +0 -4
- package/FlowGraph/flowGraphValidator.js.map +1 -1
- package/FlowGraph/index.d.ts +2 -0
- package/FlowGraph/index.js +2 -0
- package/FlowGraph/index.js.map +1 -1
- package/FlowGraph/pure.d.ts +2 -0
- package/FlowGraph/pure.js +2 -0
- package/FlowGraph/pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +2 -2
- package/FlowGraph/serialization.js +2 -2
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +1 -1
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js +4 -0
- package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.d.ts +54 -0
- package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js +155 -0
- package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js.map +1 -0
- package/FrameGraph/Node/Blocks/Textures/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Textures/pure.js +1 -0
- package/FrameGraph/Node/Blocks/Textures/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/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/pure.js +1 -0
- package/FrameGraph/Node/Blocks/pure.js.map +1 -1
- package/FrameGraph/Tasks/Misc/minMaxReducerTask.d.ts +62 -0
- package/FrameGraph/Tasks/Misc/minMaxReducerTask.js +159 -0
- package/FrameGraph/Tasks/Misc/minMaxReducerTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +4 -0
- package/FrameGraph/frameGraph.js +14 -0
- package/FrameGraph/frameGraph.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.js +1 -1
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Lights/Clustered/clusteredLightingSceneComponent.pure.d.ts +5 -0
- package/Lights/Clustered/clusteredLightingSceneComponent.pure.js +22 -1
- package/Lights/Clustered/clusteredLightingSceneComponent.pure.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.js +7 -3
- package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.d.ts +7 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js +8 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.d.ts +54 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js +81 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.d.ts +7 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js +8 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.d.ts +60 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js +90 -0
- package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +31 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +98 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.d.ts +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js +4 -0
- package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.d.ts +83 -0
- package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js +191 -0
- package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.d.ts +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js +4 -0
- package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.d.ts +62 -0
- package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js +125 -0
- package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js.map +1 -0
- package/Materials/GaussianSplatting/pure.d.ts +4 -0
- package/Materials/GaussianSplatting/pure.js +4 -0
- package/Materials/GaussianSplatting/pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.d.ts +1 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +12 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +31 -7
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/mirrorTexture.pure.js +3 -1
- package/Materials/Textures/mirrorTexture.pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +8 -2
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/effectRenderer.pure.d.ts +4 -0
- package/Materials/effectRenderer.pure.js +3 -2
- package/Materials/effectRenderer.pure.js.map +1 -1
- package/Materials/index.d.ts +4 -0
- package/Materials/index.js +4 -0
- package/Materials/index.js.map +1 -1
- package/Materials/material.pure.js +25 -12
- package/Materials/material.pure.js.map +1 -1
- package/Materials/pure.d.ts +4 -0
- package/Materials/pure.js +4 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +8 -0
- package/Materials/standardMaterial.pure.js +24 -2
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.pure.js +1 -1
- package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianPointSplattingController.d.ts +8 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingController.js +11 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingController.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.d.ts +231 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js +1212 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.d.ts +14 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js +15 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.d.ts +285 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js +812 -0
- package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +2 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +160 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +219 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +32 -4
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +114 -21
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/pure.d.ts +2 -0
- package/Meshes/GaussianSplatting/pure.js +2 -0
- package/Meshes/GaussianSplatting/pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +25 -11
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.d.ts +12 -0
- package/Meshes/abstractMesh.pure.js +32 -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/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Meshes/subMesh.pure.d.ts +11 -2
- package/Meshes/subMesh.pure.js +20 -5
- package/Meshes/subMesh.pure.js.map +1 -1
- package/Meshes/thinInstanceMesh.pure.js +1 -0
- package/Meshes/thinInstanceMesh.pure.js.map +1 -1
- package/Misc/andOrNotEvaluator.js +4 -0
- package/Misc/andOrNotEvaluator.js.map +1 -1
- package/Misc/minMaxReducer.pure.d.ts +6 -0
- package/Misc/minMaxReducer.pure.js +10 -0
- package/Misc/minMaxReducer.pure.js.map +1 -1
- package/Misc/thinMinMaxReducer.d.ts +19 -2
- package/Misc/thinMinMaxReducer.js +74 -21
- package/Misc/thinMinMaxReducer.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js +19 -7
- package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js +3 -2
- package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +12 -4
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particle.js +3 -2
- package/Particles/particle.js.map +1 -1
- package/Particles/solidParticleSystem.js +7 -1
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.function.d.ts +6 -0
- package/Particles/thinParticleSystem.function.js +144 -88
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Particles/thinParticleSystem.pure.d.ts +6 -0
- package/Particles/thinParticleSystem.pure.js +70 -9
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Physics/v2/ragdoll.d.ts +2 -4
- package/Physics/v2/ragdoll.js +11 -4
- package/Physics/v2/ragdoll.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +12 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +43 -18
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/depthRenderer.pure.d.ts +9 -0
- package/Rendering/depthRenderer.pure.js +12 -0
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +4 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +6 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +4 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +8 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -0
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.js +4 -1
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +3 -3
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +27 -3
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/oitDeclaration.js +1 -1
- package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
- package/Shaders/minmaxRedux.fragment.js +6 -1
- package/Shaders/minmaxRedux.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js +65 -0
- package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js +17 -0
- package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +6 -78
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +2 -2
- package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js +79 -0
- package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +27 -3
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianPointSplattingBlit.fragment.d.ts +5 -0
- package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js +22 -0
- package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js.map +1 -0
- package/ShadersWGSL/gaussianPointSplattingBlit.vertex.d.ts +5 -0
- package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js +19 -0
- package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js.map +1 -0
- package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.d.ts +5 -0
- package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js +21 -0
- package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js.map +1 -0
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingVoxel.vertex.js +2 -1
- package/ShadersWGSL/gaussianSplattingVoxel.vertex.js.map +1 -1
- package/ShadersWGSL/gpsHiZBuild.compute.d.ts +5 -0
- package/ShadersWGSL/gpsHiZBuild.compute.js +16 -0
- package/ShadersWGSL/gpsHiZBuild.compute.js.map +1 -0
- package/ShadersWGSL/gpsPartition.compute.d.ts +5 -0
- package/ShadersWGSL/gpsPartition.compute.js +27 -0
- package/ShadersWGSL/gpsPartition.compute.js.map +1 -0
- package/ShadersWGSL/gpsPreprocess.compute.d.ts +5 -0
- package/ShadersWGSL/gpsPreprocess.compute.js +86 -0
- package/ShadersWGSL/gpsPreprocess.compute.js.map +1 -0
- package/ShadersWGSL/gpsResolve.compute.d.ts +5 -0
- package/ShadersWGSL/gpsResolve.compute.js +41 -0
- package/ShadersWGSL/gpsResolve.compute.js.map +1 -0
- package/ShadersWGSL/gpsScanAdd.compute.d.ts +5 -0
- package/ShadersWGSL/gpsScanAdd.compute.js +22 -0
- package/ShadersWGSL/gpsScanAdd.compute.js.map +1 -0
- package/ShadersWGSL/gpsScanBlocks.compute.d.ts +5 -0
- package/ShadersWGSL/gpsScanBlocks.compute.js +23 -0
- package/ShadersWGSL/gpsScanBlocks.compute.js.map +1 -0
- package/ShadersWGSL/gpsScanSums.compute.d.ts +5 -0
- package/ShadersWGSL/gpsScanSums.compute.js +30 -0
- package/ShadersWGSL/gpsScanSums.compute.js.map +1 -0
- package/ShadersWGSL/gpsSplat.compute.d.ts +5 -0
- package/ShadersWGSL/gpsSplat.compute.js +37 -0
- package/ShadersWGSL/gpsSplat.compute.js.map +1 -0
- package/ShadersWGSL/minmaxRedux.fragment.js +20 -3
- package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
- package/XR/features/WebXRSpaceWarp.pure.js +2 -1
- package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
- package/assetContainer.d.ts +1 -0
- package/assetContainer.js +5 -1
- package/assetContainer.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +13 -2
- package/scene.pure.js +28 -4
- package/scene.pure.js.map +1 -1
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { type IValueGradient } from "../Misc/gradients.js";
|
|
1
2
|
import { type Particle } from "./particle.js";
|
|
2
3
|
import { type ThinParticleSystem } from "./thinParticleSystem.js";
|
|
4
|
+
/**
|
|
5
|
+
* Callback-free equivalent of GradientHelper.GetCurrentGradient; stores the result in _GradCurrent/_GradNext/_GradScale.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare function _GetCurrentGradientToRef(ratio: number, gradients: IValueGradient[]): void;
|
|
3
9
|
/** Color */
|
|
4
10
|
/** @internal */
|
|
5
11
|
export declare function _CreateColorData(particle: Particle, system: ThinParticleSystem): void;
|
|
@@ -1,7 +1,39 @@
|
|
|
1
1
|
import { Color4 } from "../Maths/math.color.pure.js";
|
|
2
|
-
import { GradientHelper } from "../Misc/gradients.js";
|
|
3
2
|
import { Clamp, Lerp, RandomRange } from "../Maths/math.scalar.functions.js";
|
|
4
3
|
import { TmpVectors, Vector3, Vector4 } from "../Maths/math.vector.pure.js";
|
|
4
|
+
// Result of _GetCurrentGradientToRef, consumed synchronously by the caller below
|
|
5
|
+
// (avoids a callback closure per particle per frame).
|
|
6
|
+
let _GradCurrent = null;
|
|
7
|
+
let _GradNext = null;
|
|
8
|
+
let _GradScale = 0;
|
|
9
|
+
/**
|
|
10
|
+
* Callback-free equivalent of GradientHelper.GetCurrentGradient; stores the result in _GradCurrent/_GradNext/_GradScale.
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export function _GetCurrentGradientToRef(ratio, gradients) {
|
|
14
|
+
// Use last index if over
|
|
15
|
+
if (gradients[0].gradient > ratio) {
|
|
16
|
+
_GradCurrent = gradients[0];
|
|
17
|
+
_GradNext = gradients[0];
|
|
18
|
+
_GradScale = 1.0;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
for (let gradientIndex = 0; gradientIndex < gradients.length - 1; gradientIndex++) {
|
|
22
|
+
const currentGradient = gradients[gradientIndex];
|
|
23
|
+
const nextGradient = gradients[gradientIndex + 1];
|
|
24
|
+
if (ratio >= currentGradient.gradient && ratio <= nextGradient.gradient) {
|
|
25
|
+
_GradCurrent = currentGradient;
|
|
26
|
+
_GradNext = nextGradient;
|
|
27
|
+
_GradScale = (ratio - currentGradient.gradient) / (nextGradient.gradient - currentGradient.gradient);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Use last index if over
|
|
32
|
+
const lastIndex = gradients.length - 1;
|
|
33
|
+
_GradCurrent = gradients[lastIndex];
|
|
34
|
+
_GradNext = gradients[lastIndex];
|
|
35
|
+
_GradScale = 1.0;
|
|
36
|
+
}
|
|
5
37
|
/** Color */
|
|
6
38
|
/** @internal */
|
|
7
39
|
export function _CreateColorData(particle, system) {
|
|
@@ -27,18 +59,19 @@ export function _CreateColorGradientsData(particle, system) {
|
|
|
27
59
|
}
|
|
28
60
|
/** @internal */
|
|
29
61
|
export function _ProcessColorGradients(particle, system) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
62
|
+
_GetCurrentGradientToRef(system._ratio, system._colorGradients);
|
|
63
|
+
const currentGradient = _GradCurrent;
|
|
64
|
+
const nextGradient = _GradNext;
|
|
65
|
+
const scale = _GradScale;
|
|
66
|
+
if (currentGradient !== particle._properties.currentColorGradient) {
|
|
67
|
+
particle._properties.currentColor1.copyFrom(particle._properties.currentColor2);
|
|
68
|
+
nextGradient.getColorToRef(particle._properties.currentColor2);
|
|
69
|
+
particle._properties.currentColorGradient = currentGradient;
|
|
70
|
+
}
|
|
71
|
+
Color4.LerpToRef(particle._properties.currentColor1, particle._properties.currentColor2, scale, particle.color);
|
|
72
|
+
if (particle.color.a < 0) {
|
|
73
|
+
particle.color.a = 0;
|
|
74
|
+
}
|
|
42
75
|
}
|
|
43
76
|
/** @internal */
|
|
44
77
|
export function _ProcessColor(particle, system) {
|
|
@@ -51,14 +84,16 @@ export function _ProcessColor(particle, system) {
|
|
|
51
84
|
/** Angular speed */
|
|
52
85
|
/** @internal */
|
|
53
86
|
export function _ProcessAngularSpeedGradients(particle, system) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
particle.
|
|
61
|
-
|
|
87
|
+
_GetCurrentGradientToRef(system._ratio, system._angularSpeedGradients);
|
|
88
|
+
const currentGradient = _GradCurrent;
|
|
89
|
+
const nextGradient = _GradNext;
|
|
90
|
+
const scale = _GradScale;
|
|
91
|
+
if (currentGradient !== particle._properties.currentAngularSpeedGradient) {
|
|
92
|
+
particle._properties.currentAngularSpeed1 = particle._properties.currentAngularSpeed2;
|
|
93
|
+
particle._properties.currentAngularSpeed2 = nextGradient.getFactor();
|
|
94
|
+
particle._properties.currentAngularSpeedGradient = currentGradient;
|
|
95
|
+
}
|
|
96
|
+
particle.angularSpeed = Lerp(particle._properties.currentAngularSpeed1, particle._properties.currentAngularSpeed2, scale);
|
|
62
97
|
}
|
|
63
98
|
/** @internal */
|
|
64
99
|
export function _ProcessAngularSpeed(particle, system) {
|
|
@@ -97,29 +132,33 @@ export function _CreateLimitVelocityGradients(particle, system) {
|
|
|
97
132
|
}
|
|
98
133
|
/** @internal */
|
|
99
134
|
export function _ProcessVelocityGradients(particle, system) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
particle._properties.
|
|
107
|
-
|
|
135
|
+
_GetCurrentGradientToRef(system._ratio, system._velocityGradients);
|
|
136
|
+
const currentGradient = _GradCurrent;
|
|
137
|
+
const nextGradient = _GradNext;
|
|
138
|
+
const scale = _GradScale;
|
|
139
|
+
if (currentGradient !== particle._properties.currentVelocityGradient) {
|
|
140
|
+
particle._properties.currentVelocity1 = particle._properties.currentVelocity2;
|
|
141
|
+
particle._properties.currentVelocity2 = nextGradient.getFactor();
|
|
142
|
+
particle._properties.currentVelocityGradient = currentGradient;
|
|
143
|
+
}
|
|
144
|
+
particle._properties.directionScale *= Lerp(particle._properties.currentVelocity1, particle._properties.currentVelocity2, scale);
|
|
108
145
|
}
|
|
109
146
|
/** @internal */
|
|
110
147
|
export function _ProcessLimitVelocityGradients(particle, system) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
148
|
+
_GetCurrentGradientToRef(system._ratio, system._limitVelocityGradients);
|
|
149
|
+
const currentGradient = _GradCurrent;
|
|
150
|
+
const nextGradient = _GradNext;
|
|
151
|
+
const scale = _GradScale;
|
|
152
|
+
if (currentGradient !== particle._properties.currentLimitVelocityGradient) {
|
|
153
|
+
particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocity2;
|
|
154
|
+
particle._properties.currentLimitVelocity2 = nextGradient.getFactor();
|
|
155
|
+
particle._properties.currentLimitVelocityGradient = currentGradient;
|
|
156
|
+
}
|
|
157
|
+
const limitVelocity = Lerp(particle._properties.currentLimitVelocity1, particle._properties.currentLimitVelocity2, scale);
|
|
158
|
+
const currentVelocity = particle.direction.length();
|
|
159
|
+
if (currentVelocity > limitVelocity) {
|
|
160
|
+
particle.direction.scaleInPlace(system.limitVelocityDamping);
|
|
161
|
+
}
|
|
123
162
|
}
|
|
124
163
|
/** @internal */
|
|
125
164
|
export function _ProcessDirection(particle) {
|
|
@@ -168,15 +207,17 @@ export function _CreateDragData(particle, system) {
|
|
|
168
207
|
}
|
|
169
208
|
/** @internal */
|
|
170
209
|
export function _ProcessDragGradients(particle, system) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
particle._properties.
|
|
179
|
-
}
|
|
210
|
+
_GetCurrentGradientToRef(system._ratio, system._dragGradients);
|
|
211
|
+
const currentGradient = _GradCurrent;
|
|
212
|
+
const nextGradient = _GradNext;
|
|
213
|
+
const scale = _GradScale;
|
|
214
|
+
if (currentGradient !== particle._properties.currentDragGradient) {
|
|
215
|
+
particle._properties.currentDrag1 = particle._properties.currentDrag2;
|
|
216
|
+
particle._properties.currentDrag2 = nextGradient.getFactor();
|
|
217
|
+
particle._properties.currentDragGradient = currentGradient;
|
|
218
|
+
}
|
|
219
|
+
const drag = Lerp(particle._properties.currentDrag1, particle._properties.currentDrag2, scale);
|
|
220
|
+
particle._properties.scaledDirection.scaleInPlace(1.0 - drag);
|
|
180
221
|
}
|
|
181
222
|
/** Noise */
|
|
182
223
|
/** @internal */
|
|
@@ -233,64 +274,79 @@ export function _CreateSizeGradientsData(particle, system) {
|
|
|
233
274
|
/** @internal */
|
|
234
275
|
export function _CreateStartSizeGradientsData(particle, system) {
|
|
235
276
|
const ratio = system._actualFrame / system.targetStopDuration;
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}
|
|
277
|
+
_GetCurrentGradientToRef(ratio, system._startSizeGradients);
|
|
278
|
+
const currentGradient = _GradCurrent;
|
|
279
|
+
const nextGradient = _GradNext;
|
|
280
|
+
const scale = _GradScale;
|
|
281
|
+
if (currentGradient !== system._currentStartSizeGradient) {
|
|
282
|
+
system._currentStartSize1 = system._currentStartSize2;
|
|
283
|
+
system._currentStartSize2 = nextGradient.getFactor();
|
|
284
|
+
system._currentStartSizeGradient = currentGradient;
|
|
285
|
+
}
|
|
286
|
+
const value = Lerp(system._currentStartSize1, system._currentStartSize2, scale);
|
|
287
|
+
particle.scale.scaleInPlace(value);
|
|
245
288
|
}
|
|
246
289
|
/** @internal */
|
|
247
290
|
export function _ProcessSizeGradients(particle, system) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
particle.
|
|
255
|
-
|
|
291
|
+
_GetCurrentGradientToRef(system._ratio, system._sizeGradients);
|
|
292
|
+
const currentGradient = _GradCurrent;
|
|
293
|
+
const nextGradient = _GradNext;
|
|
294
|
+
const scale = _GradScale;
|
|
295
|
+
if (currentGradient !== particle._properties.currentSizeGradient) {
|
|
296
|
+
particle._properties.currentSize1 = particle._properties.currentSize2;
|
|
297
|
+
particle._properties.currentSize2 = nextGradient.getFactor();
|
|
298
|
+
particle._properties.currentSizeGradient = currentGradient;
|
|
299
|
+
}
|
|
300
|
+
particle.size = Lerp(particle._properties.currentSize1, particle._properties.currentSize2, scale);
|
|
256
301
|
}
|
|
257
302
|
/** Ramp */
|
|
258
303
|
/** @internal */
|
|
259
304
|
export function _CreateRampData(particle, _system) {
|
|
260
|
-
particle.remapData
|
|
305
|
+
if (particle.remapData) {
|
|
306
|
+
// Reuse remap data of recycled particles instead of allocating a Vector4 per call
|
|
307
|
+
particle.remapData.copyFromFloats(0, 1, 0, 1);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
particle.remapData = new Vector4(0, 1, 0, 1);
|
|
311
|
+
}
|
|
261
312
|
}
|
|
262
313
|
/** Remap */
|
|
263
314
|
/** @internal */
|
|
264
315
|
export function _ProcessRemapGradients(particle, system) {
|
|
265
316
|
if (system._colorRemapGradients && system._colorRemapGradients.length > 0) {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
317
|
+
_GetCurrentGradientToRef(system._ratio, system._colorRemapGradients);
|
|
318
|
+
const currentGradient = _GradCurrent;
|
|
319
|
+
const nextGradient = _GradNext;
|
|
320
|
+
const scale = _GradScale;
|
|
321
|
+
const min = Lerp(currentGradient.factor1, nextGradient.factor1, scale);
|
|
322
|
+
const max = Lerp(currentGradient.factor2, nextGradient.factor2, scale);
|
|
323
|
+
particle.remapData.x = min;
|
|
324
|
+
particle.remapData.y = max - min;
|
|
272
325
|
}
|
|
273
326
|
if (system._alphaRemapGradients && system._alphaRemapGradients.length > 0) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
327
|
+
_GetCurrentGradientToRef(system._ratio, system._alphaRemapGradients);
|
|
328
|
+
const currentGradient = _GradCurrent;
|
|
329
|
+
const nextGradient = _GradNext;
|
|
330
|
+
const scale = _GradScale;
|
|
331
|
+
const min = Lerp(currentGradient.factor1, nextGradient.factor1, scale);
|
|
332
|
+
const max = Lerp(currentGradient.factor2, nextGradient.factor2, scale);
|
|
333
|
+
particle.remapData.z = min;
|
|
334
|
+
particle.remapData.w = max - min;
|
|
280
335
|
}
|
|
281
336
|
}
|
|
282
337
|
/** Life */
|
|
283
338
|
/** @internal */
|
|
284
339
|
export function _CreateLifeGradientsData(particle, system) {
|
|
285
340
|
const ratio = Clamp(system._actualFrame / system.targetStopDuration);
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
341
|
+
_GetCurrentGradientToRef(ratio, system._lifeTimeGradients);
|
|
342
|
+
const currentGradient = _GradCurrent;
|
|
343
|
+
const nextGradient = _GradNext;
|
|
344
|
+
const factorGradient1 = currentGradient;
|
|
345
|
+
const factorGradient2 = nextGradient;
|
|
346
|
+
const lifeTime1 = factorGradient1.getFactor();
|
|
347
|
+
const lifeTime2 = factorGradient2.getFactor();
|
|
348
|
+
const gradient = (ratio - factorGradient1.gradient) / (factorGradient2.gradient - factorGradient1.gradient);
|
|
349
|
+
particle.lifeTime = Lerp(lifeTime1, lifeTime2, gradient);
|
|
294
350
|
system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);
|
|
295
351
|
}
|
|
296
352
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinParticleSystem.function.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/thinParticleSystem.function.ts"],"names":[],"mappings":"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","sourcesContent":["import { Color4 } from \"core/Maths/math.color.pure\";\r\nimport { type ColorGradient, type FactorGradient, GradientHelper } from \"core/Misc/gradients\";\r\nimport { type Particle } from \"./particle\";\r\nimport { type ThinParticleSystem } from \"./thinParticleSystem\";\r\nimport { Clamp, Lerp, RandomRange } from \"core/Maths/math.scalar.functions\";\r\nimport { TmpVectors, Vector3, Vector4 } from \"core/Maths/math.vector.pure\";\r\n\r\n/** Color */\r\n\r\n/** @internal */\r\nexport function _CreateColorData(particle: Particle, system: ThinParticleSystem) {\r\n const step = RandomRange(0, 1.0);\r\n\r\n Color4.LerpToRef(system.color1, system.color2, step, particle.color);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorDeadData(particle: Particle, system: ThinParticleSystem) {\r\n system.colorDead.subtractToRef(particle.color, system._colorDiff);\r\n system._colorDiff.scaleToRef(1.0 / particle.lifeTime, particle.colorStep);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentColorGradient = system._colorGradients![0];\r\n particle._properties.currentColorGradient.getColorToRef(particle.color);\r\n particle._properties.currentColor1.copyFrom(particle.color);\r\n\r\n if (system._colorGradients!.length > 1) {\r\n system._colorGradients![1].getColorToRef(particle._properties.currentColor2);\r\n } else {\r\n particle._properties.currentColor2.copyFrom(particle.color);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColorGradients(particle: Particle, system: ThinParticleSystem) {\r\n const colorGradients = system._colorGradients;\r\n GradientHelper.GetCurrentGradient(system._ratio, colorGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentColorGradient) {\r\n particle._properties.currentColor1.copyFrom(particle._properties.currentColor2);\r\n (<ColorGradient>nextGradient).getColorToRef(particle._properties.currentColor2);\r\n particle._properties.currentColorGradient = <ColorGradient>currentGradient;\r\n }\r\n Color4.LerpToRef(particle._properties.currentColor1, particle._properties.currentColor2, scale, particle.color);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColor(particle: Particle, system: ThinParticleSystem) {\r\n particle.colorStep.scaleToRef(system._scaledUpdateSpeed, system._scaledColorStep);\r\n particle.color.addInPlace(system._scaledColorStep);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n}\r\n\r\n/** Angular speed */\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeedGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._angularSpeedGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentAngularSpeedGradient) {\r\n particle._properties.currentAngularSpeed1 = particle._properties.currentAngularSpeed2;\r\n particle._properties.currentAngularSpeed2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentAngularSpeedGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.angularSpeed = Lerp(particle._properties.currentAngularSpeed1, particle._properties.currentAngularSpeed2, scale);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeed(particle: Particle, system: ThinParticleSystem) {\r\n particle.angle += particle.angularSpeed * system._scaledUpdateSpeed;\r\n}\r\n\r\n/** Velocity & direction */\r\n\r\n/** @internal */\r\nexport function _CreateDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startDirectionFunction(system._emitterWorldMatrix, particle.direction, particle, system.isLocal, system._emitterInverseWorldMatrix);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startDirectionFunction!(system._emitterWorldMatrix, particle.direction, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentVelocityGradient = system._velocityGradients![0];\r\n particle._properties.currentVelocity1 = particle._properties.currentVelocityGradient.getFactor();\r\n\r\n if (system._velocityGradients!.length > 1) {\r\n particle._properties.currentVelocity2 = system._velocityGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentVelocity2 = particle._properties.currentVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentLimitVelocityGradient = system._limitVelocityGradients![0];\r\n particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocityGradient.getFactor();\r\n\r\n if (system._limitVelocityGradients!.length > 1) {\r\n particle._properties.currentLimitVelocity2 = system._limitVelocityGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentLimitVelocity2 = particle._properties.currentLimitVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._velocityGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentVelocityGradient) {\r\n particle._properties.currentVelocity1 = particle._properties.currentVelocity2;\r\n particle._properties.currentVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n particle._properties.directionScale *= Lerp(particle._properties.currentVelocity1, particle._properties.currentVelocity2, scale);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._limitVelocityGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentLimitVelocityGradient) {\r\n particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocity2;\r\n particle._properties.currentLimitVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentLimitVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const limitVelocity = Lerp(particle._properties.currentLimitVelocity1, particle._properties.currentLimitVelocity2, scale);\r\n const currentVelocity = particle.direction.length();\r\n\r\n if (currentVelocity > limitVelocity) {\r\n particle.direction.scaleInPlace(system.limitVelocityDamping);\r\n }\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDirection(particle: Particle) {\r\n particle.direction.scaleToRef(particle._properties.directionScale, particle._properties.scaledDirection);\r\n}\r\n\r\n/** Position */\r\n\r\n/** @internal */\r\nexport function _CreatePositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startPositionFunction(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomPositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startPositionFunction!(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateIsLocalData(particle: Particle, system: ThinParticleSystem) {\r\n if (!particle._properties.localPosition) {\r\n particle._properties.localPosition = particle.position.clone();\r\n } else {\r\n particle._properties.localPosition.copyFrom(particle.position);\r\n }\r\n Vector3.TransformCoordinatesToRef(particle._properties.localPosition, system._emitterWorldMatrix, particle.position);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessPosition(particle: Particle, system: ThinParticleSystem) {\r\n if (system.isLocal && particle._properties.localPosition) {\r\n particle._properties.localPosition!.addInPlace(particle._properties.scaledDirection);\r\n Vector3.TransformCoordinatesToRef(particle._properties.localPosition!, system._emitterWorldMatrix, particle.position);\r\n } else {\r\n particle.position.addInPlace(particle._properties.scaledDirection);\r\n }\r\n}\r\n\r\n/** Drag */\r\n\r\n/** @internal */\r\nexport function _CreateDragData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentDragGradient = system._dragGradients![0];\r\n particle._properties.currentDrag1 = particle._properties.currentDragGradient.getFactor();\r\n\r\n if (system._dragGradients!.length > 1) {\r\n particle._properties.currentDrag2 = system._dragGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentDrag2 = particle._properties.currentDrag1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDragGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._dragGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentDragGradient) {\r\n particle._properties.currentDrag1 = particle._properties.currentDrag2;\r\n particle._properties.currentDrag2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentDragGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const drag = Lerp(particle._properties.currentDrag1, particle._properties.currentDrag2, scale);\r\n\r\n particle._properties.scaledDirection.scaleInPlace(1.0 - drag);\r\n });\r\n}\r\n\r\n/** Noise */\r\n\r\n/** @internal */\r\nexport function _CreateNoiseData(particle: Particle, _system: ThinParticleSystem) {\r\n if (particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {\r\n particle._properties.randomNoiseCoordinates1.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n particle._properties.randomNoiseCoordinates2.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n } else {\r\n particle._properties.randomNoiseCoordinates1 = new Vector3(Math.random(), Math.random(), Math.random());\r\n particle._properties.randomNoiseCoordinates2 = new Vector3(Math.random(), Math.random(), Math.random());\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessNoise(particle: Particle, system: ThinParticleSystem) {\r\n const noiseTextureData = system._noiseTextureData;\r\n const noiseTextureSize = system._noiseTextureSize;\r\n\r\n if (noiseTextureData && noiseTextureSize && particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {\r\n const fetchedColorR = system._fetchR(\r\n particle._properties.randomNoiseCoordinates1.x,\r\n particle._properties.randomNoiseCoordinates1.y,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorG = system._fetchR(\r\n particle._properties.randomNoiseCoordinates1.z,\r\n particle._properties.randomNoiseCoordinates2.x,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorB = system._fetchR(\r\n particle._properties.randomNoiseCoordinates2.y,\r\n particle._properties.randomNoiseCoordinates2.z,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n\r\n const force = TmpVectors.Vector3[0];\r\n const scaledForce = TmpVectors.Vector3[1];\r\n\r\n force.copyFromFloats((2 * fetchedColorR - 1) * system.noiseStrength.x, (2 * fetchedColorG - 1) * system.noiseStrength.y, (2 * fetchedColorB - 1) * system.noiseStrength.z);\r\n\r\n force.scaleToRef(system._tempScaledUpdateSpeed, scaledForce);\r\n particle.direction.addInPlace(scaledForce);\r\n }\r\n}\r\n\r\n/** Gravity */\r\n\r\n/** @internal */\r\nexport function _ProcessGravity(particle: Particle, system: ThinParticleSystem) {\r\n system.gravity.scaleToRef(system._tempScaledUpdateSpeed, system._scaledGravity);\r\n particle.direction.addInPlace(system._scaledGravity);\r\n}\r\n\r\n/** Size */\r\n\r\n/** @internal */\r\nexport function _CreateSizeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.size = RandomRange(system.minSize, system.maxSize);\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentSizeGradient = system._sizeGradients![0];\r\n particle._properties.currentSize1 = particle._properties.currentSizeGradient.getFactor();\r\n particle.size = particle._properties.currentSize1;\r\n\r\n if (system._sizeGradients!.length > 1) {\r\n particle._properties.currentSize2 = system._sizeGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentSize2 = particle._properties.currentSize1;\r\n }\r\n\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateStartSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = system._actualFrame / system.targetStopDuration;\r\n GradientHelper.GetCurrentGradient(ratio, system._startSizeGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== system._currentStartSizeGradient) {\r\n system._currentStartSize1 = system._currentStartSize2;\r\n system._currentStartSize2 = (<FactorGradient>nextGradient).getFactor();\r\n system._currentStartSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const value = Lerp(system._currentStartSize1, system._currentStartSize2, scale);\r\n particle.scale.scaleInPlace(value);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessSizeGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._sizeGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentSizeGradient) {\r\n particle._properties.currentSize1 = particle._properties.currentSize2;\r\n particle._properties.currentSize2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.size = Lerp(particle._properties.currentSize1, particle._properties.currentSize2, scale);\r\n });\r\n}\r\n\r\n/** Ramp */\r\n\r\n/** @internal */\r\nexport function _CreateRampData(particle: Particle, _system: ThinParticleSystem) {\r\n particle.remapData = new Vector4(0, 1, 0, 1);\r\n}\r\n\r\n/** Remap */\r\n\r\n/** @internal */\r\nexport function _ProcessRemapGradients(particle: Particle, system: ThinParticleSystem) {\r\n if (system._colorRemapGradients && system._colorRemapGradients.length > 0) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._colorRemapGradients, (currentGradient, nextGradient, scale) => {\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.x = min;\r\n particle.remapData.y = max - min;\r\n });\r\n }\r\n\r\n if (system._alphaRemapGradients && system._alphaRemapGradients.length > 0) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._alphaRemapGradients, (currentGradient, nextGradient, scale) => {\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.z = min;\r\n particle.remapData.w = max - min;\r\n });\r\n }\r\n}\r\n\r\n/** Life */\r\n\r\n/** @internal */\r\nexport function _CreateLifeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = Clamp(system._actualFrame / system.targetStopDuration);\r\n GradientHelper.GetCurrentGradient(ratio, system._lifeTimeGradients!, (currentGradient, nextGradient) => {\r\n const factorGradient1 = <FactorGradient>currentGradient;\r\n const factorGradient2 = <FactorGradient>nextGradient;\r\n const lifeTime1 = factorGradient1.getFactor();\r\n const lifeTime2 = factorGradient2.getFactor();\r\n const gradient = (ratio - factorGradient1.gradient) / (factorGradient2.gradient - factorGradient1.gradient);\r\n particle.lifeTime = Lerp(lifeTime1, lifeTime2, gradient);\r\n });\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLifetimeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.lifeTime = RandomRange(system.minLifeTime, system.maxLifeTime);\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** Emit power */\r\n\r\n/** @internal */\r\nexport function _CreateEmitPowerData(particle: Particle, system: ThinParticleSystem) {\r\n if (system._emitPower === 0) {\r\n if (!particle._properties.initialDirection) {\r\n particle._properties.initialDirection = particle.direction.clone();\r\n } else {\r\n particle._properties.initialDirection.copyFrom(particle.direction);\r\n }\r\n particle.direction.set(0, 0, 0);\r\n } else {\r\n particle._properties.initialDirection = null;\r\n particle.direction.scaleInPlace(system._emitPower);\r\n }\r\n\r\n // Inherited Velocity\r\n particle.direction.addInPlace(system._inheritedVelocityOffset);\r\n}\r\n\r\n/** Angle */\r\n\r\n/** @internal */\r\nexport function _CreateAngleData(particle: Particle, system: ThinParticleSystem) {\r\n particle.angularSpeed = RandomRange(system.minAngularSpeed, system.maxAngularSpeed);\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateAngleGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentAngularSpeedGradient = system._angularSpeedGradients![0];\r\n particle.angularSpeed = particle._properties.currentAngularSpeedGradient.getFactor();\r\n particle._properties.currentAngularSpeed1 = particle.angularSpeed;\r\n\r\n if (system._angularSpeedGradients!.length > 1) {\r\n particle._properties.currentAngularSpeed2 = system._angularSpeedGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentAngularSpeed2 = particle._properties.currentAngularSpeed1;\r\n }\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** Sheet */\r\n\r\n/** @internal */\r\nexport function _CreateSheetData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.initialStartSpriteCellId = system.startSpriteCellID;\r\n particle._properties.initialEndSpriteCellId = system.endSpriteCellID;\r\n particle._properties.initialSpriteCellLoop = system.spriteCellLoop;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"thinParticleSystem.function.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/thinParticleSystem.function.ts"],"names":[],"mappings":"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","sourcesContent":["import { Color4 } from \"core/Maths/math.color.pure\";\r\nimport { type ColorGradient, type FactorGradient, type IValueGradient } from \"core/Misc/gradients\";\r\nimport { type Particle } from \"./particle\";\r\nimport { type ThinParticleSystem } from \"./thinParticleSystem\";\r\nimport { Clamp, Lerp, RandomRange } from \"core/Maths/math.scalar.functions\";\r\nimport { TmpVectors, Vector3, Vector4 } from \"core/Maths/math.vector.pure\";\r\n\r\n// Result of _GetCurrentGradientToRef, consumed synchronously by the caller below\r\n// (avoids a callback closure per particle per frame).\r\nlet _GradCurrent: IValueGradient = null!;\r\nlet _GradNext: IValueGradient = null!;\r\nlet _GradScale = 0;\r\n\r\n/**\r\n * Callback-free equivalent of GradientHelper.GetCurrentGradient; stores the result in _GradCurrent/_GradNext/_GradScale.\r\n * @internal\r\n */\r\nexport function _GetCurrentGradientToRef(ratio: number, gradients: IValueGradient[]): void {\r\n // Use last index if over\r\n if (gradients[0].gradient > ratio) {\r\n _GradCurrent = gradients[0];\r\n _GradNext = gradients[0];\r\n _GradScale = 1.0;\r\n return;\r\n }\r\n\r\n for (let gradientIndex = 0; gradientIndex < gradients.length - 1; gradientIndex++) {\r\n const currentGradient = gradients[gradientIndex];\r\n const nextGradient = gradients[gradientIndex + 1];\r\n\r\n if (ratio >= currentGradient.gradient && ratio <= nextGradient.gradient) {\r\n _GradCurrent = currentGradient;\r\n _GradNext = nextGradient;\r\n _GradScale = (ratio - currentGradient.gradient) / (nextGradient.gradient - currentGradient.gradient);\r\n return;\r\n }\r\n }\r\n\r\n // Use last index if over\r\n const lastIndex = gradients.length - 1;\r\n _GradCurrent = gradients[lastIndex];\r\n _GradNext = gradients[lastIndex];\r\n _GradScale = 1.0;\r\n}\r\n\r\n/** Color */\r\n\r\n/** @internal */\r\nexport function _CreateColorData(particle: Particle, system: ThinParticleSystem) {\r\n const step = RandomRange(0, 1.0);\r\n\r\n Color4.LerpToRef(system.color1, system.color2, step, particle.color);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorDeadData(particle: Particle, system: ThinParticleSystem) {\r\n system.colorDead.subtractToRef(particle.color, system._colorDiff);\r\n system._colorDiff.scaleToRef(1.0 / particle.lifeTime, particle.colorStep);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentColorGradient = system._colorGradients![0];\r\n particle._properties.currentColorGradient.getColorToRef(particle.color);\r\n particle._properties.currentColor1.copyFrom(particle.color);\r\n\r\n if (system._colorGradients!.length > 1) {\r\n system._colorGradients![1].getColorToRef(particle._properties.currentColor2);\r\n } else {\r\n particle._properties.currentColor2.copyFrom(particle.color);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColorGradients(particle: Particle, system: ThinParticleSystem) {\r\n _GetCurrentGradientToRef(system._ratio, system._colorGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== particle._properties.currentColorGradient) {\r\n particle._properties.currentColor1.copyFrom(particle._properties.currentColor2);\r\n (<ColorGradient>nextGradient).getColorToRef(particle._properties.currentColor2);\r\n particle._properties.currentColorGradient = <ColorGradient>currentGradient;\r\n }\r\n Color4.LerpToRef(particle._properties.currentColor1, particle._properties.currentColor2, scale, particle.color);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColor(particle: Particle, system: ThinParticleSystem) {\r\n particle.colorStep.scaleToRef(system._scaledUpdateSpeed, system._scaledColorStep);\r\n particle.color.addInPlace(system._scaledColorStep);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n}\r\n\r\n/** Angular speed */\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeedGradients(particle: Particle, system: ThinParticleSystem) {\r\n _GetCurrentGradientToRef(system._ratio, system._angularSpeedGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== particle._properties.currentAngularSpeedGradient) {\r\n particle._properties.currentAngularSpeed1 = particle._properties.currentAngularSpeed2;\r\n particle._properties.currentAngularSpeed2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentAngularSpeedGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.angularSpeed = Lerp(particle._properties.currentAngularSpeed1, particle._properties.currentAngularSpeed2, scale);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeed(particle: Particle, system: ThinParticleSystem) {\r\n particle.angle += particle.angularSpeed * system._scaledUpdateSpeed;\r\n}\r\n\r\n/** Velocity & direction */\r\n\r\n/** @internal */\r\nexport function _CreateDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startDirectionFunction(system._emitterWorldMatrix, particle.direction, particle, system.isLocal, system._emitterInverseWorldMatrix);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startDirectionFunction!(system._emitterWorldMatrix, particle.direction, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentVelocityGradient = system._velocityGradients![0];\r\n particle._properties.currentVelocity1 = particle._properties.currentVelocityGradient.getFactor();\r\n\r\n if (system._velocityGradients!.length > 1) {\r\n particle._properties.currentVelocity2 = system._velocityGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentVelocity2 = particle._properties.currentVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentLimitVelocityGradient = system._limitVelocityGradients![0];\r\n particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocityGradient.getFactor();\r\n\r\n if (system._limitVelocityGradients!.length > 1) {\r\n particle._properties.currentLimitVelocity2 = system._limitVelocityGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentLimitVelocity2 = particle._properties.currentLimitVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n _GetCurrentGradientToRef(system._ratio, system._velocityGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== particle._properties.currentVelocityGradient) {\r\n particle._properties.currentVelocity1 = particle._properties.currentVelocity2;\r\n particle._properties.currentVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n particle._properties.directionScale *= Lerp(particle._properties.currentVelocity1, particle._properties.currentVelocity2, scale);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n _GetCurrentGradientToRef(system._ratio, system._limitVelocityGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== particle._properties.currentLimitVelocityGradient) {\r\n particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocity2;\r\n particle._properties.currentLimitVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentLimitVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const limitVelocity = Lerp(particle._properties.currentLimitVelocity1, particle._properties.currentLimitVelocity2, scale);\r\n const currentVelocity = particle.direction.length();\r\n\r\n if (currentVelocity > limitVelocity) {\r\n particle.direction.scaleInPlace(system.limitVelocityDamping);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDirection(particle: Particle) {\r\n particle.direction.scaleToRef(particle._properties.directionScale, particle._properties.scaledDirection);\r\n}\r\n\r\n/** Position */\r\n\r\n/** @internal */\r\nexport function _CreatePositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startPositionFunction(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomPositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startPositionFunction!(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateIsLocalData(particle: Particle, system: ThinParticleSystem) {\r\n if (!particle._properties.localPosition) {\r\n particle._properties.localPosition = particle.position.clone();\r\n } else {\r\n particle._properties.localPosition.copyFrom(particle.position);\r\n }\r\n Vector3.TransformCoordinatesToRef(particle._properties.localPosition, system._emitterWorldMatrix, particle.position);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessPosition(particle: Particle, system: ThinParticleSystem) {\r\n if (system.isLocal && particle._properties.localPosition) {\r\n particle._properties.localPosition!.addInPlace(particle._properties.scaledDirection);\r\n Vector3.TransformCoordinatesToRef(particle._properties.localPosition!, system._emitterWorldMatrix, particle.position);\r\n } else {\r\n particle.position.addInPlace(particle._properties.scaledDirection);\r\n }\r\n}\r\n\r\n/** Drag */\r\n\r\n/** @internal */\r\nexport function _CreateDragData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentDragGradient = system._dragGradients![0];\r\n particle._properties.currentDrag1 = particle._properties.currentDragGradient.getFactor();\r\n\r\n if (system._dragGradients!.length > 1) {\r\n particle._properties.currentDrag2 = system._dragGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentDrag2 = particle._properties.currentDrag1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDragGradients(particle: Particle, system: ThinParticleSystem) {\r\n _GetCurrentGradientToRef(system._ratio, system._dragGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== particle._properties.currentDragGradient) {\r\n particle._properties.currentDrag1 = particle._properties.currentDrag2;\r\n particle._properties.currentDrag2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentDragGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const drag = Lerp(particle._properties.currentDrag1, particle._properties.currentDrag2, scale);\r\n\r\n particle._properties.scaledDirection.scaleInPlace(1.0 - drag);\r\n}\r\n\r\n/** Noise */\r\n\r\n/** @internal */\r\nexport function _CreateNoiseData(particle: Particle, _system: ThinParticleSystem) {\r\n if (particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {\r\n particle._properties.randomNoiseCoordinates1.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n particle._properties.randomNoiseCoordinates2.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n } else {\r\n particle._properties.randomNoiseCoordinates1 = new Vector3(Math.random(), Math.random(), Math.random());\r\n particle._properties.randomNoiseCoordinates2 = new Vector3(Math.random(), Math.random(), Math.random());\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessNoise(particle: Particle, system: ThinParticleSystem) {\r\n const noiseTextureData = system._noiseTextureData;\r\n const noiseTextureSize = system._noiseTextureSize;\r\n\r\n if (noiseTextureData && noiseTextureSize && particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {\r\n const fetchedColorR = system._fetchR(\r\n particle._properties.randomNoiseCoordinates1.x,\r\n particle._properties.randomNoiseCoordinates1.y,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorG = system._fetchR(\r\n particle._properties.randomNoiseCoordinates1.z,\r\n particle._properties.randomNoiseCoordinates2.x,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorB = system._fetchR(\r\n particle._properties.randomNoiseCoordinates2.y,\r\n particle._properties.randomNoiseCoordinates2.z,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n\r\n const force = TmpVectors.Vector3[0];\r\n const scaledForce = TmpVectors.Vector3[1];\r\n\r\n force.copyFromFloats((2 * fetchedColorR - 1) * system.noiseStrength.x, (2 * fetchedColorG - 1) * system.noiseStrength.y, (2 * fetchedColorB - 1) * system.noiseStrength.z);\r\n\r\n force.scaleToRef(system._tempScaledUpdateSpeed, scaledForce);\r\n particle.direction.addInPlace(scaledForce);\r\n }\r\n}\r\n\r\n/** Gravity */\r\n\r\n/** @internal */\r\nexport function _ProcessGravity(particle: Particle, system: ThinParticleSystem) {\r\n system.gravity.scaleToRef(system._tempScaledUpdateSpeed, system._scaledGravity);\r\n particle.direction.addInPlace(system._scaledGravity);\r\n}\r\n\r\n/** Size */\r\n\r\n/** @internal */\r\nexport function _CreateSizeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.size = RandomRange(system.minSize, system.maxSize);\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentSizeGradient = system._sizeGradients![0];\r\n particle._properties.currentSize1 = particle._properties.currentSizeGradient.getFactor();\r\n particle.size = particle._properties.currentSize1;\r\n\r\n if (system._sizeGradients!.length > 1) {\r\n particle._properties.currentSize2 = system._sizeGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentSize2 = particle._properties.currentSize1;\r\n }\r\n\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateStartSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = system._actualFrame / system.targetStopDuration;\r\n _GetCurrentGradientToRef(ratio, system._startSizeGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== system._currentStartSizeGradient) {\r\n system._currentStartSize1 = system._currentStartSize2;\r\n system._currentStartSize2 = (<FactorGradient>nextGradient).getFactor();\r\n system._currentStartSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const value = Lerp(system._currentStartSize1, system._currentStartSize2, scale);\r\n particle.scale.scaleInPlace(value);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessSizeGradients(particle: Particle, system: ThinParticleSystem) {\r\n _GetCurrentGradientToRef(system._ratio, system._sizeGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n if (currentGradient !== particle._properties.currentSizeGradient) {\r\n particle._properties.currentSize1 = particle._properties.currentSize2;\r\n particle._properties.currentSize2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.size = Lerp(particle._properties.currentSize1, particle._properties.currentSize2, scale);\r\n}\r\n\r\n/** Ramp */\r\n\r\n/** @internal */\r\nexport function _CreateRampData(particle: Particle, _system: ThinParticleSystem) {\r\n if (particle.remapData) {\r\n // Reuse remap data of recycled particles instead of allocating a Vector4 per call\r\n particle.remapData.copyFromFloats(0, 1, 0, 1);\r\n } else {\r\n particle.remapData = new Vector4(0, 1, 0, 1);\r\n }\r\n}\r\n\r\n/** Remap */\r\n\r\n/** @internal */\r\nexport function _ProcessRemapGradients(particle: Particle, system: ThinParticleSystem) {\r\n if (system._colorRemapGradients && system._colorRemapGradients.length > 0) {\r\n _GetCurrentGradientToRef(system._ratio, system._colorRemapGradients);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.x = min;\r\n particle.remapData.y = max - min;\r\n }\r\n\r\n if (system._alphaRemapGradients && system._alphaRemapGradients.length > 0) {\r\n _GetCurrentGradientToRef(system._ratio, system._alphaRemapGradients);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const scale = _GradScale;\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.z = min;\r\n particle.remapData.w = max - min;\r\n }\r\n}\r\n\r\n/** Life */\r\n\r\n/** @internal */\r\nexport function _CreateLifeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = Clamp(system._actualFrame / system.targetStopDuration);\r\n _GetCurrentGradientToRef(ratio, system._lifeTimeGradients!);\r\n const currentGradient = _GradCurrent;\r\n const nextGradient = _GradNext;\r\n const factorGradient1 = <FactorGradient>currentGradient;\r\n const factorGradient2 = <FactorGradient>nextGradient;\r\n const lifeTime1 = factorGradient1.getFactor();\r\n const lifeTime2 = factorGradient2.getFactor();\r\n const gradient = (ratio - factorGradient1.gradient) / (factorGradient2.gradient - factorGradient1.gradient);\r\n particle.lifeTime = Lerp(lifeTime1, lifeTime2, gradient);\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLifetimeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.lifeTime = RandomRange(system.minLifeTime, system.maxLifeTime);\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** Emit power */\r\n\r\n/** @internal */\r\nexport function _CreateEmitPowerData(particle: Particle, system: ThinParticleSystem) {\r\n if (system._emitPower === 0) {\r\n if (!particle._properties.initialDirection) {\r\n particle._properties.initialDirection = particle.direction.clone();\r\n } else {\r\n particle._properties.initialDirection.copyFrom(particle.direction);\r\n }\r\n particle.direction.set(0, 0, 0);\r\n } else {\r\n particle._properties.initialDirection = null;\r\n particle.direction.scaleInPlace(system._emitPower);\r\n }\r\n\r\n // Inherited Velocity\r\n particle.direction.addInPlace(system._inheritedVelocityOffset);\r\n}\r\n\r\n/** Angle */\r\n\r\n/** @internal */\r\nexport function _CreateAngleData(particle: Particle, system: ThinParticleSystem) {\r\n particle.angularSpeed = RandomRange(system.minAngularSpeed, system.maxAngularSpeed);\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateAngleGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentAngularSpeedGradient = system._angularSpeedGradients![0];\r\n particle.angularSpeed = particle._properties.currentAngularSpeedGradient.getFactor();\r\n particle._properties.currentAngularSpeed1 = particle.angularSpeed;\r\n\r\n if (system._angularSpeedGradients!.length > 1) {\r\n particle._properties.currentAngularSpeed2 = system._angularSpeedGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentAngularSpeed2 = particle._properties.currentAngularSpeed1;\r\n }\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** Sheet */\r\n\r\n/** @internal */\r\nexport function _CreateSheetData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.initialStartSpriteCellId = system.startSpriteCellID;\r\n particle._properties.initialEndSpriteCellId = system.endSpriteCellID;\r\n particle._properties.initialSpriteCellLoop = system.spriteCellLoop;\r\n}\r\n"]}
|
|
@@ -47,6 +47,8 @@ export declare class ThinParticleSystem extends BaseParticleSystem implements ID
|
|
|
47
47
|
updateFunction: (particles: Particle[]) => void;
|
|
48
48
|
/** @internal */
|
|
49
49
|
_emitterWorldMatrix: Matrix;
|
|
50
|
+
/** Owned translation matrix for the vector-emitter path, so a live mesh world matrix is never overwritten in place */
|
|
51
|
+
private _emitterTranslationMatrix;
|
|
50
52
|
/** @internal */
|
|
51
53
|
_emitterInverseWorldMatrix: Matrix;
|
|
52
54
|
private _startDirectionFunction;
|
|
@@ -88,6 +90,10 @@ export declare class ThinParticleSystem extends BaseParticleSystem implements ID
|
|
|
88
90
|
_noiseTextureSize: Nullable<ISize>;
|
|
89
91
|
/** @internal */
|
|
90
92
|
_noiseTextureData: Nullable<Uint8Array>;
|
|
93
|
+
private _noiseTextureFetchInFlight;
|
|
94
|
+
private _noiseTextureFetchInternalTexture;
|
|
95
|
+
private _noiseTextureFetchToken;
|
|
96
|
+
private _noiseTextureReadbackFailureLogged;
|
|
91
97
|
private _particles;
|
|
92
98
|
private _epsilon;
|
|
93
99
|
private _capacity;
|