@babylonjs/core 5.15.0 → 5.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +10 -1
  83. package/Materials/Node/nodeMaterial.js +43 -26
  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 +1 -1
  88. package/Materials/Textures/baseTexture.js +2 -2
  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.
@@ -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, rootUrl, this.getScene())];
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
  };
@@ -1596,17 +1607,23 @@ var NodeMaterial = /** @class */ (function (_super) {
1596
1607
  NodeMaterial.ParseFromFileAsync = function (name, url, scene, rootUrl, skipBuild) {
1597
1608
  if (rootUrl === void 0) { rootUrl = ""; }
1598
1609
  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();
1610
+ return __awaiter(this, void 0, void 0, function () {
1611
+ var material, data, serializationObject;
1612
+ return __generator(this, function (_a) {
1613
+ switch (_a.label) {
1614
+ case 0:
1615
+ material = new NodeMaterial(name, scene);
1616
+ return [4 /*yield*/, scene._loadFileAsync(url)];
1617
+ case 1:
1618
+ data = _a.sent();
1619
+ serializationObject = JSON.parse(data);
1620
+ material.parseSerializedObject(serializationObject, rootUrl);
1621
+ if (!skipBuild) {
1622
+ material.build();
1623
+ }
1624
+ return [2 /*return*/, material];
1606
1625
  }
1607
- resolve(material);
1608
- })
1609
- .catch(reject);
1626
+ });
1610
1627
  });
1611
1628
  };
1612
1629
  /**
@@ -1624,7 +1641,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1624
1641
  if (rootUrl === void 0) { rootUrl = ""; }
1625
1642
  if (skipBuild === void 0) { skipBuild = false; }
1626
1643
  if (snippetId === "_BLANK") {
1627
- return Promise.resolve(this.CreateDefault("blank", scene));
1644
+ return Promise.resolve(NodeMaterial.CreateDefault("blank", scene));
1628
1645
  }
1629
1646
  return new Promise(function (resolve, reject) {
1630
1647
  var request = new WebRequest();
@@ -1637,7 +1654,7 @@ var NodeMaterial = /** @class */ (function (_super) {
1637
1654
  nodeMaterial = SerializationHelper.Parse(function () { return new NodeMaterial(snippetId, scene); }, serializationObject, scene, rootUrl);
1638
1655
  nodeMaterial.uniqueId = scene.getUniqueId();
1639
1656
  }
1640
- nodeMaterial.loadFromSerialization(serializationObject);
1657
+ nodeMaterial.parseSerializedObject(serializationObject);
1641
1658
  nodeMaterial.snippetId = snippetId;
1642
1659
  try {
1643
1660
  if (!skipBuild) {