@babylonjs/core 8.19.1 → 8.21.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 (30) hide show
  1. package/Animations/animationGroup.d.ts +5 -0
  2. package/Animations/animationGroup.js +7 -0
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Cameras/Inputs/flyCameraMouseInput.js +2 -3
  5. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  6. package/Cameras/Inputs/freeCameraMouseInput.js +3 -5
  7. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  8. package/Cameras/Inputs/freeCameraTouchInput.js +2 -2
  9. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  10. package/Engines/abstractEngine.js +2 -2
  11. package/Engines/abstractEngine.js.map +1 -1
  12. package/Materials/Node/Blocks/Dual/depthSourceBlock.d.ts +29 -0
  13. package/Materials/Node/Blocks/Dual/depthSourceBlock.js +47 -0
  14. package/Materials/Node/Blocks/Dual/depthSourceBlock.js.map +1 -0
  15. package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +4 -3
  16. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +14 -6
  17. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  18. package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
  19. package/Materials/Node/Blocks/Dual/index.js +1 -0
  20. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  21. package/Materials/Node/Blocks/Dual/textureBlock.js +4 -1
  22. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  23. package/Materials/Node/Blocks/customBlock.js +1 -1
  24. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  25. package/Materials/Node/nodeMaterial.d.ts +2 -0
  26. package/Materials/Node/nodeMaterial.js +2 -0
  27. package/Materials/Node/nodeMaterial.js.map +1 -1
  28. package/Materials/Node/nodeMaterialBuildState.js +7 -1
  29. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  30. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"customBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/customBlock.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 { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\n\r\n/**\r\n * Custom block created from user-defined json\r\n */\r\nexport class CustomBlock extends NodeMaterialBlock {\r\n private _options: any;\r\n private _code: string;\r\n private _inputSamplers: string[];\r\n\r\n /**\r\n * Gets or sets the options for this custom block\r\n */\r\n public get options() {\r\n return this._options;\r\n }\r\n\r\n public set options(options: any) {\r\n this._deserializeOptions(options);\r\n }\r\n\r\n /**\r\n * Creates a new CustomBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"CustomBlock\";\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let code = this._code;\r\n\r\n let functionName = this._options.functionName;\r\n\r\n // Replace the TYPE_XXX placeholders (if any)\r\n for (const input of this._inputs) {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + input.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(input.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n }\r\n for (const output of this._outputs) {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + output.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(output.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n }\r\n\r\n state._emitFunction(functionName, code, \"\");\r\n\r\n // Declare the output variables\r\n for (const output of this._outputs) {\r\n state.compilationString += state._declareOutput(output) + \";\\n\";\r\n }\r\n\r\n // Generate the function call\r\n state.compilationString += functionName + \"(\";\r\n\r\n let hasInput = false;\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n const input = this._inputs[i];\r\n if (i > 0) {\r\n state.compilationString += \", \";\r\n }\r\n if (this._inputSamplers && this._inputSamplers.indexOf(input.name) !== -1) {\r\n state.compilationString += (input.connectedPoint?.ownerBlock as ImageSourceBlock)?.samplerName ?? input.associatedVariableName;\r\n } else {\r\n state.compilationString += input.associatedVariableName;\r\n }\r\n hasInput = true;\r\n }\r\n\r\n for (let i = 0; i < this._outputs.length; i++) {\r\n const output = this._outputs[i];\r\n if (i > 0 || hasInput) {\r\n state.compilationString += \", \";\r\n }\r\n state.compilationString += output.associatedVariableName;\r\n }\r\n\r\n state.compilationString += \");\\n\";\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.options = ${JSON.stringify(this._options)};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.options = this._options;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n this._deserializeOptions(serializationObject.options);\r\n\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n\r\n private _deserializeOptions(options: any) {\r\n this._options = options;\r\n this._code = options.code.join(\"\\n\") + \"\\n\";\r\n this.name = this.name || options.name;\r\n this.target = (<any>NodeMaterialBlockTargets)[options.target];\r\n\r\n if (options.inParameters) {\r\n for (let i = 0; i < options.inParameters.length; i++) {\r\n const input = options.inParameters[i];\r\n const type = (<any>NodeMaterialBlockConnectionPointTypes)[input.type];\r\n if (input.type === \"sampler2D\" || input.type === \"samplerCube\") {\r\n this._inputSamplers = this._inputSamplers || [];\r\n this._inputSamplers.push(input.name);\r\n this.registerInput(\r\n input.name,\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(input.name, this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n } else {\r\n this.registerInput(input.name, type);\r\n }\r\n\r\n Object.defineProperty(this, input.name, {\r\n get: function () {\r\n return this._inputs[i];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n }\r\n }\r\n\r\n if (options.outParameters) {\r\n for (let i = 0; i < options.outParameters.length; i++) {\r\n const output = options.outParameters[i];\r\n\r\n this.registerOutput(output.name, (<any>NodeMaterialBlockConnectionPointTypes)[output.type]);\r\n\r\n Object.defineProperty(this, output.name, {\r\n get: function () {\r\n return this._outputs[i];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n\r\n if (output.type === \"BasedOnInput\") {\r\n this._outputs[i]._typeConnectionSource = this._findInputByName(output.typeFromInput)![0];\r\n }\r\n }\r\n }\r\n\r\n if (options.inLinkedConnectionTypes) {\r\n for (const connection of options.inLinkedConnectionTypes) {\r\n this._linkConnectionTypes(this._findInputByName(connection.input1)![1], this._findInputByName(connection.input2)![1]);\r\n }\r\n }\r\n }\r\n\r\n private _findInputByName(name: string): Nullable<[NodeMaterialConnectionPoint, number]> {\r\n if (!name) {\r\n return null;\r\n }\r\n\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n if (this._inputs[i].name === name) {\r\n return [this._inputs[i], i];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CustomBlock\", CustomBlock);\r\n"]}
1
+ {"version":3,"file":"customBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/customBlock.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 { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\n\r\n/**\r\n * Custom block created from user-defined json\r\n */\r\nexport class CustomBlock extends NodeMaterialBlock {\r\n private _options: any;\r\n private _code: string;\r\n private _inputSamplers: string[];\r\n\r\n /**\r\n * Gets or sets the options for this custom block\r\n */\r\n public get options() {\r\n return this._options;\r\n }\r\n\r\n public set options(options: any) {\r\n this._deserializeOptions(options);\r\n }\r\n\r\n /**\r\n * Creates a new CustomBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"CustomBlock\";\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let code = this._code;\r\n\r\n let functionName = this._options.functionName;\r\n\r\n // Replace the TYPE_XXX placeholders (if any)\r\n for (const input of this._inputs) {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + input.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(input.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n }\r\n for (const output of this._outputs) {\r\n const rexp = new RegExp(\"\\\\{TYPE_\" + output.name + \"\\\\}\", \"gm\");\r\n const type = state._getGLType(output.type);\r\n code = code.replace(rexp, type);\r\n functionName = functionName.replace(rexp, type);\r\n }\r\n\r\n state._emitFunction(functionName, code, \"\");\r\n\r\n // Declare the output variables\r\n for (const output of this._outputs) {\r\n state.compilationString += state._declareOutput(output) + \";\\n\";\r\n }\r\n\r\n // Generate the function call\r\n state.compilationString += functionName + \"(\";\r\n\r\n let hasInput = false;\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n const input = this._inputs[i];\r\n if (i > 0) {\r\n state.compilationString += \", \";\r\n }\r\n if (this._inputSamplers && this._inputSamplers.indexOf(input.name) !== -1) {\r\n state.compilationString += (input.connectedPoint?.ownerBlock as ImageSourceBlock)?.samplerName ?? input.associatedVariableName;\r\n } else {\r\n state.compilationString += input.associatedVariableName;\r\n }\r\n hasInput = true;\r\n }\r\n\r\n for (let i = 0; i < this._outputs.length; i++) {\r\n const output = this._outputs[i];\r\n if (i > 0 || hasInput) {\r\n state.compilationString += \", \";\r\n }\r\n state.compilationString += output.associatedVariableName;\r\n }\r\n\r\n state.compilationString += \");\\n\";\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.options = ${JSON.stringify(this._options)};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.options = this._options;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n this._deserializeOptions(serializationObject.options);\r\n\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n\r\n private _deserializeOptions(options: any) {\r\n this._options = options;\r\n this._code = options.code.join(\"\\n\") + \"\\n\";\r\n this.name = this.name || options.name;\r\n this.target = (<any>NodeMaterialBlockTargets)[options.target];\r\n\r\n if (options.inParameters) {\r\n for (let i = 0; i < options.inParameters.length; i++) {\r\n const input = options.inParameters[i];\r\n const type = (<any>NodeMaterialBlockConnectionPointTypes)[input.type];\r\n if (input.type === \"sampler2D\" || input.type === \"samplerCube\" || input.type === \"sampler2DArray\") {\r\n this._inputSamplers = this._inputSamplers || [];\r\n this._inputSamplers.push(input.name);\r\n this.registerInput(\r\n input.name,\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(input.name, this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n } else {\r\n this.registerInput(input.name, type);\r\n }\r\n\r\n Object.defineProperty(this, input.name, {\r\n get: function () {\r\n return this._inputs[i];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n }\r\n }\r\n\r\n if (options.outParameters) {\r\n for (let i = 0; i < options.outParameters.length; i++) {\r\n const output = options.outParameters[i];\r\n\r\n this.registerOutput(output.name, (<any>NodeMaterialBlockConnectionPointTypes)[output.type]);\r\n\r\n Object.defineProperty(this, output.name, {\r\n get: function () {\r\n return this._outputs[i];\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n\r\n if (output.type === \"BasedOnInput\") {\r\n this._outputs[i]._typeConnectionSource = this._findInputByName(output.typeFromInput)![0];\r\n }\r\n }\r\n }\r\n\r\n if (options.inLinkedConnectionTypes) {\r\n for (const connection of options.inLinkedConnectionTypes) {\r\n this._linkConnectionTypes(this._findInputByName(connection.input1)![1], this._findInputByName(connection.input2)![1]);\r\n }\r\n }\r\n }\r\n\r\n private _findInputByName(name: string): Nullable<[NodeMaterialConnectionPoint, number]> {\r\n if (!name) {\r\n return null;\r\n }\r\n\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n if (this._inputs[i].name === name) {\r\n return [this._inputs[i], i];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CustomBlock\", CustomBlock);\r\n"]}
@@ -214,6 +214,8 @@ export declare class NodeMaterial extends PushMaterial {
214
214
  static SnippetUrl: string;
215
215
  /** Gets or sets a boolean indicating that node materials should not deserialize textures from json / snippet content */
216
216
  static IgnoreTexturesAtLoadTime: boolean;
217
+ /** Gets or sets a boolean indicating that render target textures can be serialized */
218
+ static AllowSerializationOfRenderTargetTextures: boolean;
217
219
  /** Defines default shader language when no option is defined */
218
220
  static DefaultShaderLanguage: ShaderLanguage;
219
221
  /** If true, the node material will use GLSL if the engine is WebGL and WGSL if it's WebGPU. It takes priority over DefaultShaderLanguage if it's true */
@@ -2078,6 +2078,8 @@ NodeMaterial.EditorURL = `${Tools._DefaultCdnUrl}/v${AbstractEngine.Version}/nod
2078
2078
  NodeMaterial.SnippetUrl = `https://snippet.babylonjs.com`;
2079
2079
  /** Gets or sets a boolean indicating that node materials should not deserialize textures from json / snippet content */
2080
2080
  NodeMaterial.IgnoreTexturesAtLoadTime = false;
2081
+ /** Gets or sets a boolean indicating that render target textures can be serialized */
2082
+ NodeMaterial.AllowSerializationOfRenderTargetTextures = false;
2081
2083
  /** Defines default shader language when no option is defined */
2082
2084
  NodeMaterial.DefaultShaderLanguage = 0 /* ShaderLanguage.GLSL */;
2083
2085
  /** If true, the node material will use GLSL if the engine is WebGL and WGSL if it's WebGPU. It takes priority over DefaultShaderLanguage if it's true */