@babylonjs/core 5.15.1 → 5.17.1

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.
Files changed (163) hide show
  1. package/Animations/animatable.js +1 -1
  2. package/Animations/animatable.js.map +1 -1
  3. package/Animations/animation.d.ts +8 -1
  4. package/Animations/animation.js +8 -1
  5. package/Animations/animation.js.map +1 -1
  6. package/Animations/animationGroup.js +5 -4
  7. package/Animations/animationGroup.js.map +1 -1
  8. package/Audio/sound.js +2 -2
  9. package/Audio/sound.js.map +1 -1
  10. package/Bones/skeleton.js +1 -1
  11. package/Bones/skeleton.js.map +1 -1
  12. package/Cameras/Inputs/BaseCameraMouseWheelInput.d.ts +1 -1
  13. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +8 -2
  14. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  15. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +2 -2
  16. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  17. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.d.ts +0 -1
  18. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +7 -2
  19. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  20. package/Cameras/Inputs/flyCameraKeyboardInput.js +3 -3
  21. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  22. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +2 -2
  23. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  24. package/Cameras/Inputs/followCameraMouseWheelInput.d.ts +0 -1
  25. package/Cameras/Inputs/followCameraMouseWheelInput.js +7 -2
  26. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  27. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +3 -3
  28. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  29. package/Cameras/Inputs/freeCameraTouchInput.js +1 -1
  30. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  31. package/Cameras/VR/vrExperienceHelper.js +1 -1
  32. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  33. package/Cameras/VR/webVRCamera.js +1 -1
  34. package/Cameras/VR/webVRCamera.js.map +1 -1
  35. package/Cameras/arcRotateCamera.js +3 -2
  36. package/Cameras/arcRotateCamera.js.map +1 -1
  37. package/Cameras/camera.js +18 -3
  38. package/Cameras/camera.js.map +1 -1
  39. package/DeviceInput/InputDevices/webDeviceInputSystem.js +1 -1
  40. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
  41. package/Engines/Extensions/engine.cubeTexture.js +3 -3
  42. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  43. package/Engines/Extensions/engine.rawTexture.js +3 -3
  44. package/Engines/Extensions/engine.rawTexture.js.map +1 -1
  45. package/Engines/Native/nativeInterfaces.d.ts +1 -0
  46. package/Engines/Native/nativeInterfaces.js.map +1 -1
  47. package/Engines/Processors/shaderCodeCursor.js +2 -1
  48. package/Engines/Processors/shaderCodeCursor.js.map +1 -1
  49. package/Engines/WebGPU/Extensions/engine.rawTexture.js +3 -3
  50. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  51. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  52. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  53. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +6 -6
  54. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  55. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +4 -4
  56. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  57. package/Engines/engine.d.ts +0 -10
  58. package/Engines/engine.js +0 -14
  59. package/Engines/engine.js.map +1 -1
  60. package/Engines/nativeEngine.d.ts +7 -2
  61. package/Engines/nativeEngine.js +30 -10
  62. package/Engines/nativeEngine.js.map +1 -1
  63. package/Engines/thinEngine.d.ts +22 -2
  64. package/Engines/thinEngine.js +49 -9
  65. package/Engines/thinEngine.js.map +1 -1
  66. package/Engines/webgpuEngine.js +1 -1
  67. package/Engines/webgpuEngine.js.map +1 -1
  68. package/Gizmos/boundingBoxGizmo.d.ts +4 -0
  69. package/Gizmos/boundingBoxGizmo.js +6 -0
  70. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  71. package/Inputs/scene.inputManager.js +5 -4
  72. package/Inputs/scene.inputManager.js.map +1 -1
  73. package/Loading/sceneLoader.js +12 -12
  74. package/Loading/sceneLoader.js.map +1 -1
  75. package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +12 -0
  76. package/Materials/Node/Blocks/Fragment/TBNBlock.js +50 -0
  77. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  78. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +2 -1
  79. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  80. package/Materials/Node/Blocks/gradientBlock.js +1 -1
  81. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  82. package/Materials/Node/nodeMaterial.d.ts +12 -2
  83. package/Materials/Node/nodeMaterial.js +45 -27
  84. package/Materials/Node/nodeMaterial.js.map +1 -1
  85. package/Materials/PBR/pbrBaseMaterial.js +4 -4
  86. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  87. package/Materials/Textures/baseTexture.d.ts +3 -2
  88. package/Materials/Textures/baseTexture.js +6 -3
  89. package/Materials/Textures/baseTexture.js.map +1 -1
  90. package/Materials/Textures/prePassRenderTarget.js +1 -1
  91. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  92. package/Materials/Textures/renderTargetTexture.js +11 -3
  93. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  94. package/Materials/Textures/videoTexture.js +4 -1
  95. package/Materials/Textures/videoTexture.js.map +1 -1
  96. package/Materials/imageProcessingConfiguration.js.map +1 -1
  97. package/Materials/materialDefines.js +3 -1
  98. package/Materials/materialDefines.js.map +1 -1
  99. package/Materials/materialHelper.d.ts +1 -1
  100. package/Materials/materialHelper.js +6 -6
  101. package/Materials/materialHelper.js.map +1 -1
  102. package/Materials/shaderMaterial.d.ts +10 -1
  103. package/Materials/shaderMaterial.js +10 -1
  104. package/Materials/shaderMaterial.js.map +1 -1
  105. package/Maths/math.color.d.ts +9 -1
  106. package/Maths/math.color.js +13 -1
  107. package/Maths/math.color.js.map +1 -1
  108. package/Meshes/Builders/icoSphereBuilder.js +2 -2
  109. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  110. package/Meshes/abstractMesh.js +1 -1
  111. package/Meshes/abstractMesh.js.map +1 -1
  112. package/Meshes/geometry.js +3 -4
  113. package/Meshes/geometry.js.map +1 -1
  114. package/Meshes/mesh.d.ts +1 -1
  115. package/Meshes/mesh.js +8 -7
  116. package/Meshes/mesh.js.map +1 -1
  117. package/Meshes/thinInstanceMesh.js +5 -0
  118. package/Meshes/thinInstanceMesh.js.map +1 -1
  119. package/Meshes/transformNode.d.ts +2 -2
  120. package/Meshes/transformNode.js +1 -1
  121. package/Meshes/transformNode.js.map +1 -1
  122. package/Misc/smartArray.js +0 -1
  123. package/Misc/smartArray.js.map +1 -1
  124. package/Particles/computeShaderParticleSystem.js +2 -2
  125. package/Particles/computeShaderParticleSystem.js.map +1 -1
  126. package/Particles/particleHelper.d.ts +12 -1
  127. package/Particles/particleHelper.js +16 -5
  128. package/Particles/particleHelper.js.map +1 -1
  129. package/Particles/particleSystem.js +2 -2
  130. package/Particles/particleSystem.js.map +1 -1
  131. package/Particles/particleSystemSet.js +1 -1
  132. package/Particles/particleSystemSet.js.map +1 -1
  133. package/Particles/solidParticleSystem.d.ts +3 -0
  134. package/Particles/solidParticleSystem.js +3 -0
  135. package/Particles/solidParticleSystem.js.map +1 -1
  136. package/Particles/webgl2ParticleSystem.js +2 -2
  137. package/Particles/webgl2ParticleSystem.js.map +1 -1
  138. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  139. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  140. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +3 -3
  141. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  142. package/Rendering/geometryBufferRenderer.js +3 -2
  143. package/Rendering/geometryBufferRenderer.js.map +1 -1
  144. package/Rendering/utilityLayerRenderer.js +1 -1
  145. package/Rendering/utilityLayerRenderer.js.map +1 -1
  146. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  147. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  148. package/Shaders/geometry.fragment.js +1 -1
  149. package/Shaders/geometry.fragment.js.map +1 -1
  150. package/Sprites/spriteManager.d.ts +10 -1
  151. package/Sprites/spriteManager.js +10 -1
  152. package/Sprites/spriteManager.js.map +1 -1
  153. package/XR/features/WebXRLayers.js +1 -1
  154. package/XR/features/WebXRLayers.js.map +1 -1
  155. package/assetContainer.d.ts +1 -1
  156. package/assetContainer.js +23 -23
  157. package/assetContainer.js.map +1 -1
  158. package/node.js +1 -1
  159. package/node.js.map +1 -1
  160. package/package.json +1 -1
  161. package/scene.d.ts +8 -6
  162. package/scene.js +23 -14
  163. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gradientBlock.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Node/Blocks/gradientBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Color3 } from \"../../../Maths/math.color\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Observable } from \"../../../Misc/observable\";\r\n\r\n/**\r\n * Class used to store a color step for the GradientBlock\r\n */\r\nexport class GradientBlockColorStep {\r\n private _step: number;\r\n /**\r\n * Gets value indicating which step this color is associated with (between 0 and 1)\r\n */\r\n public get step(): number {\r\n return this._step;\r\n }\r\n\r\n /**\r\n * Sets a value indicating which step this color is associated with (between 0 and 1)\r\n */\r\n public set step(val: number) {\r\n this._step = val;\r\n }\r\n\r\n private _color: Color3;\r\n\r\n /**\r\n * Gets the color associated with this step\r\n */\r\n public get color(): Color3 {\r\n return this._color;\r\n }\r\n\r\n /**\r\n * Sets the color associated with this step\r\n */\r\n public set color(val: Color3) {\r\n this._color = val;\r\n }\r\n\r\n /**\r\n * Creates a new GradientBlockColorStep\r\n * @param step defines a value indicating which step this color is associated with (between 0 and 1)\r\n * @param color defines the color associated with this step\r\n */\r\n public constructor(step: number, color: Color3) {\r\n this.step = step;\r\n this.color = color;\r\n }\r\n}\r\n\r\n/**\r\n * Block used to return a color from a gradient based on an input value between 0 and 1\r\n */\r\nexport class GradientBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the list of color steps\r\n */\r\n public colorSteps: GradientBlockColorStep[] = [new GradientBlockColorStep(0, Color3.Black()), new GradientBlockColorStep(1.0, Color3.White())];\r\n\r\n /** Gets an observable raised when the value is changed */\r\n public onValueChangedObservable = new Observable<GradientBlock>();\r\n\r\n /** calls observable when the value is changed*/\r\n public colorStepsUpdated() {\r\n this.onValueChangedObservable.notifyObservers(this);\r\n }\r\n /**\r\n * Creates a new GradientBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"gradient\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color3);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"GradientBlock\";\r\n }\r\n\r\n /**\r\n * Gets the gradient input component\r\n */\r\n public get gradient(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n private _writeColorConstant(index: number) {\r\n const step = this.colorSteps[index];\r\n return `vec3(${step.color.r}, ${step.color.g}, ${step.color.b})`;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n if (!this.colorSteps.length || !this.gradient.connectedPoint) {\r\n state.compilationString += this._declareOutput(output, state) + ` = vec3(0., 0., 0.);\\r\\n`;\r\n return;\r\n }\r\n\r\n const tempColor = state._getFreeVariableName(\"gradientTempColor\");\r\n const tempPosition = state._getFreeVariableName(\"gradientTempPosition\");\r\n\r\n state.compilationString += `vec3 ${tempColor} = ${this._writeColorConstant(0)};\\r\\n`;\r\n state.compilationString += `float ${tempPosition};\\r\\n`;\r\n\r\n let gradientSource = this.gradient.associatedVariableName;\r\n\r\n if (this.gradient.connectedPoint!.type !== NodeMaterialBlockConnectionPointTypes.Float) {\r\n gradientSource += \".x\";\r\n }\r\n\r\n for (let index = 1; index < this.colorSteps.length; index++) {\r\n const step = this.colorSteps[index];\r\n const previousStep = this.colorSteps[index - 1];\r\n state.compilationString += `${tempPosition} = clamp((${gradientSource} - ${state._emitFloat(previousStep.step)}) / (${state._emitFloat(\r\n step.step\r\n )} - ${state._emitFloat(previousStep.step)}), 0.0, 1.0) * step(${state._emitFloat(index)}, ${state._emitFloat(this.colorSteps.length - 1)});\\r\\n`;\r\n state.compilationString += `${tempColor} = mix(${tempColor}, ${this._writeColorConstant(index)}, ${tempPosition});\\r\\n`;\r\n }\r\n state.compilationString += this._declareOutput(output, state) + ` = ${tempColor};\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.colorSteps = [];\r\n\r\n for (const step of this.colorSteps) {\r\n serializationObject.colorSteps.push({\r\n step: step.step,\r\n color: {\r\n r: step.color.r,\r\n g: step.color.g,\r\n b: step.color.b,\r\n },\r\n });\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.colorSteps = [];\r\n\r\n for (const step of serializationObject.colorSteps) {\r\n this.colorSteps.push(new GradientBlockColorStep(step.step, new Color3(step.color.r, step.color.g, step.color.b)));\r\n }\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.colorSteps = [];\\r\\n`;\r\n\r\n for (const colorStep of this.colorSteps) {\r\n codeString += `${this._codeVariableName}.colorSteps.push(new BABYLON.GradientBlockColorStep(${colorStep.step}, new BABYLON.Color3(${colorStep.color.r}, ${colorStep.color.g}, ${colorStep.color.b})));\\r\\n`;\r\n }\r\n\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GradientBlock\", GradientBlock);\r\n"]}
1
+ {"version":3,"file":"gradientBlock.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Node/Blocks/gradientBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Color3 } from \"../../../Maths/math.color\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Observable } from \"../../../Misc/observable\";\r\n\r\n/**\r\n * Class used to store a color step for the GradientBlock\r\n */\r\nexport class GradientBlockColorStep {\r\n private _step: number;\r\n /**\r\n * Gets value indicating which step this color is associated with (between 0 and 1)\r\n */\r\n public get step(): number {\r\n return this._step;\r\n }\r\n\r\n /**\r\n * Sets a value indicating which step this color is associated with (between 0 and 1)\r\n */\r\n public set step(val: number) {\r\n this._step = val;\r\n }\r\n\r\n private _color: Color3;\r\n\r\n /**\r\n * Gets the color associated with this step\r\n */\r\n public get color(): Color3 {\r\n return this._color;\r\n }\r\n\r\n /**\r\n * Sets the color associated with this step\r\n */\r\n public set color(val: Color3) {\r\n this._color = val;\r\n }\r\n\r\n /**\r\n * Creates a new GradientBlockColorStep\r\n * @param step defines a value indicating which step this color is associated with (between 0 and 1)\r\n * @param color defines the color associated with this step\r\n */\r\n public constructor(step: number, color: Color3) {\r\n this.step = step;\r\n this.color = color;\r\n }\r\n}\r\n\r\n/**\r\n * Block used to return a color from a gradient based on an input value between 0 and 1\r\n */\r\nexport class GradientBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the list of color steps\r\n */\r\n public colorSteps: GradientBlockColorStep[] = [new GradientBlockColorStep(0, Color3.Black()), new GradientBlockColorStep(1.0, Color3.White())];\r\n\r\n /** Gets an observable raised when the value is changed */\r\n public onValueChangedObservable = new Observable<GradientBlock>();\r\n\r\n /** calls observable when the value is changed*/\r\n public colorStepsUpdated() {\r\n this.onValueChangedObservable.notifyObservers(this);\r\n }\r\n /**\r\n * Creates a new GradientBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"gradient\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color3);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Color4);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"GradientBlock\";\r\n }\r\n\r\n /**\r\n * Gets the gradient input component\r\n */\r\n public get gradient(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n private _writeColorConstant(index: number) {\r\n const step = this.colorSteps[index];\r\n return `vec3(${step.color.r}, ${step.color.g}, ${step.color.b})`;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n if (!this.colorSteps.length || !this.gradient.connectedPoint) {\r\n state.compilationString += this._declareOutput(output, state) + ` = vec3(0., 0., 0.);\\r\\n`;\r\n return;\r\n }\r\n\r\n const tempColor = state._getFreeVariableName(\"gradientTempColor\");\r\n const tempPosition = state._getFreeVariableName(\"gradientTempPosition\");\r\n\r\n state.compilationString += `vec3 ${tempColor} = ${this._writeColorConstant(0)};\\r\\n`;\r\n state.compilationString += `float ${tempPosition};\\r\\n`;\r\n\r\n let gradientSource = this.gradient.associatedVariableName;\r\n\r\n if (this.gradient.connectedPoint!.type !== NodeMaterialBlockConnectionPointTypes.Float) {\r\n gradientSource += \".x\";\r\n }\r\n\r\n for (let index = 1; index < this.colorSteps.length; index++) {\r\n const step = this.colorSteps[index];\r\n const previousStep = this.colorSteps[index - 1];\r\n state.compilationString += `${tempPosition} = clamp((${gradientSource} - ${state._emitFloat(previousStep.step)}) / (${state._emitFloat(\r\n step.step\r\n )} - ${state._emitFloat(previousStep.step)}), 0.0, 1.0) * step(${state._emitFloat(index)}, ${state._emitFloat(this.colorSteps.length - 1)});\\r\\n`;\r\n state.compilationString += `${tempColor} = mix(${tempColor}, ${this._writeColorConstant(index)}, ${tempPosition});\\r\\n`;\r\n }\r\n state.compilationString += this._declareOutput(output, state) + ` = ${tempColor};\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.colorSteps = [];\r\n\r\n for (const step of this.colorSteps) {\r\n serializationObject.colorSteps.push({\r\n step: step.step,\r\n color: {\r\n r: step.color.r,\r\n g: step.color.g,\r\n b: step.color.b,\r\n },\r\n });\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.colorSteps.length = 0;\r\n\r\n for (const step of serializationObject.colorSteps) {\r\n this.colorSteps.push(new GradientBlockColorStep(step.step, new Color3(step.color.r, step.color.g, step.color.b)));\r\n }\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.colorSteps = [];\\r\\n`;\r\n\r\n for (const colorStep of this.colorSteps) {\r\n codeString += `${this._codeVariableName}.colorSteps.push(new BABYLON.GradientBlockColorStep(${colorStep.step}, new BABYLON.Color3(${colorStep.color.r}, ${colorStep.color.g}, ${colorStep.color.b})));\\r\\n`;\r\n }\r\n\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GradientBlock\", GradientBlock);\r\n"]}
@@ -397,11 +397,12 @@ export declare class NodeMaterial extends PushMaterial {
397
397
  setToDefaultParticle(): void;
398
398
  /**
399
399
  * Loads the current Node Material from a url pointing to a file save by the Node Material Editor
400
+ * @deprecated Please use NodeMaterial.ParseFromFileAsync instead
400
401
  * @param url defines the url to load from
401
402
  * @param rootUrl defines the root URL for nested url in the node material
402
403
  * @returns a promise that will fulfil when the material is fully loaded
403
404
  */
404
- loadAsync(url: string, rootUrl?: string): Promise<void>;
405
+ loadAsync(url: string, rootUrl?: string): Promise<NodeMaterial>;
405
406
  private _gatherBlocks;
406
407
  /**
407
408
  * Generate a string containing the code declaration required to create an equivalent of this material
@@ -421,6 +422,14 @@ export declare class NodeMaterial extends PushMaterial {
421
422
  * @param rootUrl defines the root URL to use to load textures and relative dependencies
422
423
  * @param merge defines whether or not the source must be merged or replace the current content
423
424
  */
425
+ parseSerializedObject(source: any, rootUrl?: string, merge?: boolean): void;
426
+ /**
427
+ * Clear the current graph and load a new one from a serialization object
428
+ * @param source defines the JSON representation of the material
429
+ * @param rootUrl defines the root URL to use to load textures and relative dependencies
430
+ * @param merge defines whether or not the source must be merged or replace the current content
431
+ * @deprecated Please use the parseSerializedObject method instead
432
+ */
424
433
  loadFromSerialization(source: any, rootUrl?: string, merge?: boolean): void;
425
434
  /**
426
435
  * Makes a duplicate of the current material.
@@ -443,9 +452,10 @@ export declare class NodeMaterial extends PushMaterial {
443
452
  * @param scene defines the hosting scene
444
453
  * @param rootUrl defines the root URL for nested url in the node material
445
454
  * @param skipBuild defines whether to build the node material
455
+ * @param targetMaterial defines a material to use instead of creating a new one
446
456
  * @returns a promise that will resolve to the new node material
447
457
  */
448
- static ParseFromFileAsync(name: string, url: string, scene: Scene, rootUrl?: string, skipBuild?: boolean): Promise<NodeMaterial>;
458
+ static ParseFromFileAsync(name: string, url: string, scene: Scene, rootUrl?: string, skipBuild?: boolean, targetMaterial?: NodeMaterial): Promise<NodeMaterial>;
449
459
  /**
450
460
  * Creates a node material from a snippet saved by the node material editor
451
461
  * @param snippetId defines the snippet to load
@@ -1,4 +1,4 @@
1
- import { __assign, __decorate, __extends } from "tslib";
1
+ import { __assign, __awaiter, __decorate, __extends, __generator } from "tslib";
2
2
  import { PushMaterial } from "../pushMaterial.js";
3
3
  import { AbstractMesh } from "../../Meshes/abstractMesh.js";
4
4
  import { Matrix, Vector2 } from "../../Maths/math.vector.js";
@@ -1128,7 +1128,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1128
1128
  var block = _c[_b];
1129
1129
  block.dispose();
1130
1130
  }
1131
- this.attachedBlocks = [];
1131
+ this.attachedBlocks.length = 0;
1132
1132
  this._sharedData = null;
1133
1133
  this._vertexCompilationState = null;
1134
1134
  this._fragmentCompilationState = null;
@@ -1174,9 +1174,9 @@ var NodeMaterial = /** @class */ (function (_super) {
1174
1174
  * Clear the current material
1175
1175
  */
1176
1176
  NodeMaterial.prototype.clear = function () {
1177
- this._vertexOutputNodes = [];
1178
- this._fragmentOutputNodes = [];
1179
- this.attachedBlocks = [];
1177
+ this._vertexOutputNodes.length = 0;
1178
+ this._fragmentOutputNodes.length = 0;
1179
+ this.attachedBlocks.length = 0;
1180
1180
  };
1181
1181
  /**
1182
1182
  * Clear the current material and set it to a default state
@@ -1317,18 +1317,17 @@ var NodeMaterial = /** @class */ (function (_super) {
1317
1317
  };
1318
1318
  /**
1319
1319
  * Loads the current Node Material from a url pointing to a file save by the Node Material Editor
1320
+ * @deprecated Please use NodeMaterial.ParseFromFileAsync instead
1320
1321
  * @param url defines the url to load from
1321
1322
  * @param rootUrl defines the root URL for nested url in the node material
1322
1323
  * @returns a promise that will fulfil when the material is fully loaded
1323
1324
  */
1324
1325
  NodeMaterial.prototype.loadAsync = function (url, rootUrl) {
1325
- var _this = this;
1326
1326
  if (rootUrl === void 0) { rootUrl = ""; }
1327
- return this.getScene()
1328
- ._loadFileAsync(url)
1329
- .then(function (data) {
1330
- var serializationObject = JSON.parse(data);
1331
- _this.loadFromSerialization(serializationObject, rootUrl);
1327
+ return __awaiter(this, void 0, void 0, function () {
1328
+ return __generator(this, function (_a) {
1329
+ return [2 /*return*/, NodeMaterial.ParseFromFileAsync("", url, this.getScene(), rootUrl, true, this)];
1330
+ });
1332
1331
  });
1333
1332
  };
1334
1333
  NodeMaterial.prototype._gatherBlocks = function (rootNode, list) {
@@ -1480,7 +1479,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1480
1479
  * @param rootUrl defines the root URL to use to load textures and relative dependencies
1481
1480
  * @param merge defines whether or not the source must be merged or replace the current content
1482
1481
  */
1483
- NodeMaterial.prototype.loadFromSerialization = function (source, rootUrl, merge) {
1482
+ NodeMaterial.prototype.parseSerializedObject = function (source, rootUrl, merge) {
1484
1483
  var _a;
1485
1484
  if (rootUrl === void 0) { rootUrl = ""; }
1486
1485
  if (merge === void 0) { merge = false; }
@@ -1553,6 +1552,18 @@ var NodeMaterial = /** @class */ (function (_super) {
1553
1552
  this._mode = (_a = source.mode) !== null && _a !== void 0 ? _a : NodeMaterialModes.Material;
1554
1553
  }
1555
1554
  };
1555
+ /**
1556
+ * Clear the current graph and load a new one from a serialization object
1557
+ * @param source defines the JSON representation of the material
1558
+ * @param rootUrl defines the root URL to use to load textures and relative dependencies
1559
+ * @param merge defines whether or not the source must be merged or replace the current content
1560
+ * @deprecated Please use the parseSerializedObject method instead
1561
+ */
1562
+ NodeMaterial.prototype.loadFromSerialization = function (source, rootUrl, merge) {
1563
+ if (rootUrl === void 0) { rootUrl = ""; }
1564
+ if (merge === void 0) { merge = false; }
1565
+ this.parseSerializedObject(source, rootUrl, merge);
1566
+ };
1556
1567
  /**
1557
1568
  * Makes a duplicate of the current material.
1558
1569
  * @param name defines the name to use for the new material
@@ -1565,7 +1576,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1565
1576
  var clone = SerializationHelper.Clone(function () { return new NodeMaterial(name, _this.getScene(), _this.options); }, this);
1566
1577
  clone.id = name;
1567
1578
  clone.name = name;
1568
- clone.loadFromSerialization(serializationObject);
1579
+ clone.parseSerializedObject(serializationObject);
1569
1580
  clone._buildId = this._buildId;
1570
1581
  clone.build(false, !shareEffect);
1571
1582
  return clone;
@@ -1580,7 +1591,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1580
1591
  NodeMaterial.Parse = function (source, scene, rootUrl) {
1581
1592
  if (rootUrl === void 0) { rootUrl = ""; }
1582
1593
  var nodeMaterial = SerializationHelper.Parse(function () { return new NodeMaterial(source.name, scene); }, source, scene, rootUrl);
1583
- nodeMaterial.loadFromSerialization(source, rootUrl);
1594
+ nodeMaterial.parseSerializedObject(source, rootUrl);
1584
1595
  nodeMaterial.build();
1585
1596
  return nodeMaterial;
1586
1597
  };
@@ -1591,22 +1602,29 @@ var NodeMaterial = /** @class */ (function (_super) {
1591
1602
  * @param scene defines the hosting scene
1592
1603
  * @param rootUrl defines the root URL for nested url in the node material
1593
1604
  * @param skipBuild defines whether to build the node material
1605
+ * @param targetMaterial defines a material to use instead of creating a new one
1594
1606
  * @returns a promise that will resolve to the new node material
1595
1607
  */
1596
- NodeMaterial.ParseFromFileAsync = function (name, url, scene, rootUrl, skipBuild) {
1608
+ NodeMaterial.ParseFromFileAsync = function (name, url, scene, rootUrl, skipBuild, targetMaterial) {
1597
1609
  if (rootUrl === void 0) { rootUrl = ""; }
1598
1610
  if (skipBuild === void 0) { skipBuild = false; }
1599
- var material = new NodeMaterial(name, scene);
1600
- return new Promise(function (resolve, reject) {
1601
- return material
1602
- .loadAsync(url, rootUrl)
1603
- .then(function () {
1604
- if (!skipBuild) {
1605
- material.build();
1611
+ return __awaiter(this, void 0, void 0, function () {
1612
+ var material, data, serializationObject;
1613
+ return __generator(this, function (_a) {
1614
+ switch (_a.label) {
1615
+ case 0:
1616
+ material = targetMaterial !== null && targetMaterial !== void 0 ? targetMaterial : new NodeMaterial(name, scene);
1617
+ return [4 /*yield*/, scene._loadFileAsync(url)];
1618
+ case 1:
1619
+ data = _a.sent();
1620
+ serializationObject = JSON.parse(data);
1621
+ material.parseSerializedObject(serializationObject, rootUrl);
1622
+ if (!skipBuild) {
1623
+ material.build();
1624
+ }
1625
+ return [2 /*return*/, material];
1606
1626
  }
1607
- resolve(material);
1608
- })
1609
- .catch(reject);
1627
+ });
1610
1628
  });
1611
1629
  };
1612
1630
  /**
@@ -1624,7 +1642,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1624
1642
  if (rootUrl === void 0) { rootUrl = ""; }
1625
1643
  if (skipBuild === void 0) { skipBuild = false; }
1626
1644
  if (snippetId === "_BLANK") {
1627
- return Promise.resolve(this.CreateDefault("blank", scene));
1645
+ return Promise.resolve(NodeMaterial.CreateDefault("blank", scene));
1628
1646
  }
1629
1647
  return new Promise(function (resolve, reject) {
1630
1648
  var request = new WebRequest();
@@ -1637,7 +1655,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1637
1655
  nodeMaterial = SerializationHelper.Parse(function () { return new NodeMaterial(snippetId, scene); }, serializationObject, scene, rootUrl);
1638
1656
  nodeMaterial.uniqueId = scene.getUniqueId();
1639
1657
  }
1640
- nodeMaterial.loadFromSerialization(serializationObject);
1658
+ nodeMaterial.parseSerializedObject(serializationObject);
1641
1659
  nodeMaterial.snippetId = snippetId;
1642
1660
  try {
1643
1661
  if (!skipBuild) {