@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.
- package/Animations/animationGroup.d.ts +5 -0
- package/Animations/animationGroup.js +7 -0
- package/Animations/animationGroup.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +2 -3
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +3 -5
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +2 -2
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Materials/Node/Blocks/Dual/depthSourceBlock.d.ts +29 -0
- package/Materials/Node/Blocks/Dual/depthSourceBlock.js +47 -0
- package/Materials/Node/Blocks/Dual/depthSourceBlock.js.map +1 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +4 -3
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +14 -6
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
- package/Materials/Node/Blocks/Dual/index.js +1 -0
- package/Materials/Node/Blocks/Dual/index.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +4 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +1 -1
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +2 -0
- package/Materials/Node/nodeMaterial.js +2 -0
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +7 -1
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- 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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAEvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AAErG;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IAK9C;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,OAAO,CAAC,OAAY;QAC3B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,aAAa,CAAC;IACzB,CAAC;IAEkB,WAAW,CAAC,KAA6B;QACxD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtB,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAE9C,6CAA6C;QAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAE5C,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QACpE,CAAC;QAED,6BAA6B;QAC7B,KAAK,CAAC,iBAAiB,IAAI,YAAY,GAAG,GAAG,CAAC;QAE9C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACR,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC;YACpC,CAAC;YACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxE,KAAK,CAAC,iBAAiB,IAAK,KAAK,CAAC,cAAc,EAAE,UAA+B,EAAE,WAAW,IAAI,KAAK,CAAC,sBAAsB,CAAC;YACnI,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,sBAAsB,CAAC;YAC5D,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,sBAAsB,CAAC;QAC7D,CAAC;QAED,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC;QAElC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEkB,mBAAmB;QAClC,IAAI,UAAU,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAE7C,UAAU,IAAI,GAAG,IAAI,CAAC,iBAAiB,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAExF,OAAO,UAAU,CAAC;IACtB,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE5C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB,EAAE,KAAY,EAAE,OAAe;QAChF,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEtD,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,mBAAmB,CAAC,OAAY;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,MAAM,GAAS,wBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAS,qCAAsC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;oBAChD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,CAAC,aAAa,CACd,KAAK,CAAC,IAAI,EACV,qCAAqC,CAAC,MAAM,EAC5C,IAAI,EACJ,wBAAwB,CAAC,iBAAiB,EAC1C,IAAI,uCAAuC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,sDAA8C,gBAAgB,EAAE,kBAAkB,CAAC,CAClJ,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzC,CAAC;gBAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;oBACpC,GAAG,EAAE;wBACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC3B,CAAC;oBACD,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAExC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAQ,qCAAsC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE5F,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrC,GAAG,EAAE;wBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;oBACD,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAE,CAAC,CAAC,CAAC,CAAC;gBAC7F,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAClC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;gBACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1H,CAAC;QACL,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,aAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC","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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAEvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AAErG;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IAK9C;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,OAAO,CAAC,OAAY;QAC3B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,aAAa,CAAC;IACzB,CAAC;IAEkB,WAAW,CAAC,KAA6B;QACxD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtB,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAE9C,6CAA6C;QAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAE5C,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QACpE,CAAC;QAED,6BAA6B;QAC7B,KAAK,CAAC,iBAAiB,IAAI,YAAY,GAAG,GAAG,CAAC;QAE9C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACR,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC;YACpC,CAAC;YACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxE,KAAK,CAAC,iBAAiB,IAAK,KAAK,CAAC,cAAc,EAAE,UAA+B,EAAE,WAAW,IAAI,KAAK,CAAC,sBAAsB,CAAC;YACnI,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,sBAAsB,CAAC;YAC5D,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,sBAAsB,CAAC;QAC7D,CAAC;QAED,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC;QAElC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEkB,mBAAmB;QAClC,IAAI,UAAU,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAE7C,UAAU,IAAI,GAAG,IAAI,CAAC,iBAAiB,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAExF,OAAO,UAAU,CAAC;IACtB,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE5C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB,EAAE,KAAY,EAAE,OAAe;QAChF,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEtD,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,mBAAmB,CAAC,OAAY;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,MAAM,GAAS,wBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAS,qCAAsC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAChG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;oBAChD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,CAAC,aAAa,CACd,KAAK,CAAC,IAAI,EACV,qCAAqC,CAAC,MAAM,EAC5C,IAAI,EACJ,wBAAwB,CAAC,iBAAiB,EAC1C,IAAI,uCAAuC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,sDAA8C,gBAAgB,EAAE,kBAAkB,CAAC,CAClJ,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzC,CAAC;gBAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;oBACpC,GAAG,EAAE;wBACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC3B,CAAC;oBACD,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAExC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAQ,qCAAsC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE5F,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrC,GAAG,EAAE;wBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;oBACD,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAE,CAAC,CAAC,CAAC,CAAC;gBAC7F,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAClC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;gBACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1H,CAAC;QACL,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,aAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC","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 */
|