@babylonjs/core 7.32.4 → 7.32.5

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 (109) hide show
  1. package/Decorators/nodeDecorator.d.ts +4 -0
  2. package/Decorators/nodeDecorator.js.map +1 -1
  3. package/Engines/abstractEngine.js +2 -2
  4. package/Engines/abstractEngine.js.map +1 -1
  5. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +1 -0
  6. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  7. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +4 -4
  8. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  9. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +1 -1
  10. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  11. package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -2
  12. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  13. package/Materials/Node/Blocks/PBR/refractionBlock.js +3 -3
  14. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  15. package/Materials/Node/Blocks/PBR/sheenBlock.js +2 -2
  16. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  17. package/Materials/Node/Blocks/clampBlock.js +2 -2
  18. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  19. package/Materials/Node/Blocks/cloudBlock.js +1 -1
  20. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  21. package/Materials/Node/Blocks/conditionalBlock.js +19 -0
  22. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  23. package/Materials/Node/Blocks/curveBlock.js +37 -0
  24. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  25. package/Materials/Node/Blocks/loopBlock.js +1 -1
  26. package/Materials/Node/Blocks/loopBlock.js.map +1 -1
  27. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +1 -0
  28. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  29. package/Materials/Node/Blocks/transformBlock.d.ts +6 -0
  30. package/Materials/Node/Blocks/transformBlock.js +16 -1
  31. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  32. package/Materials/Node/Blocks/triPlanarBlock.js +1 -1
  33. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  34. package/Materials/Node/Blocks/trigonometryBlock.js +29 -0
  35. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  36. package/Materials/Node/Blocks/waveBlock.js +13 -0
  37. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  38. package/Materials/Node/Blocks/worleyNoise3DBlock.js +1 -1
  39. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  40. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +1 -1
  41. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  42. package/Meshes/Node/Blocks/Set/aggregatorBlock.js +1 -0
  43. package/Meshes/Node/Blocks/Set/aggregatorBlock.js.map +1 -1
  44. package/Meshes/Node/Blocks/Set/latticeBlock.js +4 -4
  45. package/Meshes/Node/Blocks/Set/latticeBlock.js.map +1 -1
  46. package/Meshes/Node/Blocks/Set/setColorsBlock.js +1 -1
  47. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
  48. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +1 -1
  49. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
  50. package/Meshes/Node/Blocks/Set/setNormalsBlock.js +1 -1
  51. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
  52. package/Meshes/Node/Blocks/Set/setPositionsBlock.js +1 -1
  53. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
  54. package/Meshes/Node/Blocks/Set/setTangentsBlock.js +1 -1
  55. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
  56. package/Meshes/Node/Blocks/Set/setUVsBlock.js +2 -1
  57. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
  58. package/Meshes/Node/Blocks/Sources/boxBlock.js +1 -1
  59. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
  60. package/Meshes/Node/Blocks/Sources/capsuleBlock.js +1 -1
  61. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
  62. package/Meshes/Node/Blocks/Sources/cylinderBlock.js +1 -1
  63. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
  64. package/Meshes/Node/Blocks/Sources/discBlock.js +1 -1
  65. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
  66. package/Meshes/Node/Blocks/Sources/gridBlock.js +1 -1
  67. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
  68. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +1 -1
  69. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
  70. package/Meshes/Node/Blocks/Sources/meshBlock.js +1 -1
  71. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
  72. package/Meshes/Node/Blocks/Sources/planeBlock.js +1 -1
  73. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
  74. package/Meshes/Node/Blocks/Sources/sphereBlock.js +1 -1
  75. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
  76. package/Meshes/Node/Blocks/Sources/torusBlock.js +1 -1
  77. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
  78. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +1 -1
  79. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  80. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +1 -1
  81. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  82. package/Meshes/Node/Blocks/booleanGeometryBlock.d.ts +5 -0
  83. package/Meshes/Node/Blocks/booleanGeometryBlock.js +43 -13
  84. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  85. package/Meshes/Node/Blocks/cleanGeometryBlock.js +1 -1
  86. package/Meshes/Node/Blocks/cleanGeometryBlock.js.map +1 -1
  87. package/Meshes/Node/Blocks/conditionBlock.js +1 -0
  88. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  89. package/Meshes/Node/Blocks/geometryClampBlock.js +2 -2
  90. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  91. package/Meshes/Node/Blocks/geometryCollectionBlock.js +1 -1
  92. package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
  93. package/Meshes/Node/Blocks/geometryCurveBlock.js +1 -0
  94. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
  95. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +3 -3
  96. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  97. package/Meshes/Node/Blocks/geometryTransformBlock.js +1 -1
  98. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
  99. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +1 -0
  100. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
  101. package/Meshes/Node/Blocks/mappingBlock.js +1 -0
  102. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  103. package/Meshes/Node/Blocks/mathBlock.js +1 -0
  104. package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
  105. package/Meshes/Node/Blocks/mergeGeometryBlock.js +1 -1
  106. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  107. package/Meshes/Node/Blocks/randomBlock.js +1 -0
  108. package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
  109. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"triPlanarBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/triPlanarBlock.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 type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterialDefines } from \"../nodeMaterial\";\r\nimport { NodeMaterial } from \"../nodeMaterial\";\r\nimport type { Effect } from \"../../effect\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Texture } from \"../../Textures/texture\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport \"../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to read a texture with triplanar mapping (see \"boxmap\" in https://iquilezles.org/articles/biplanar/)\r\n */\r\nexport class TriPlanarBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n protected _tempTextureRead: string;\r\n private _samplerName: string;\r\n private _textureInfoName: string;\r\n private _imageSource: Nullable<ImageSourceBlock>;\r\n\r\n /**\r\n * Project the texture(s) for a better fit to a cube\r\n */\r\n @editableInPropertyPage(\"Project as cube\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { notifiers: { update: true } })\r\n public projectAsCube: boolean = false;\r\n\r\n protected _texture: Nullable<Texture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<Texture> {\r\n if (this.source.isConnected) {\r\n return (this.source.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<Texture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the textureY associated with the node\r\n */\r\n public get textureY(): Nullable<Texture> {\r\n if (this.sourceY.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the textureZ associated with the node\r\n */\r\n public get textureZ(): Nullable<Texture> {\r\n if (this.sourceZ?.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n protected _getImageSourceBlock(connectionPoint: Nullable<NodeMaterialConnectionPoint>): Nullable<ImageSourceBlock> {\r\n return connectionPoint?.isConnected ? (connectionPoint.connectedPoint!.ownerBlock as ImageSourceBlock) : null;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this texture\r\n */\r\n public get samplerName(): string {\r\n const imageSourceBlock = this._getImageSourceBlock(this.source);\r\n if (imageSourceBlock) {\r\n return imageSourceBlock.samplerName;\r\n }\r\n return this._samplerName;\r\n }\r\n\r\n /**\r\n * Gets the samplerY name associated with this texture\r\n */\r\n public get samplerYName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceY)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets the samplerZ name associated with this texture\r\n */\r\n public get samplerZName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceZ)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this block is linked to an ImageSourceBlock\r\n */\r\n public get hasImageSource(): boolean {\r\n return this.source.isConnected;\r\n }\r\n\r\n private _convertToGammaSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to gamma space\r\n */\r\n public set convertToGammaSpace(value: boolean) {\r\n if (value === this._convertToGammaSpace) {\r\n return;\r\n }\r\n\r\n this._convertToGammaSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToGammaSpace(): boolean {\r\n return this._convertToGammaSpace;\r\n }\r\n\r\n private _convertToLinearSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to linear space\r\n */\r\n public set convertToLinearSpace(value: boolean) {\r\n if (value === this._convertToLinearSpace) {\r\n return;\r\n }\r\n\r\n this._convertToLinearSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToLinearSpace(): boolean {\r\n return this._convertToLinearSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if multiplication of texture with level should be disabled\r\n */\r\n public disableLevelMultiplication = false;\r\n\r\n /**\r\n * Create a new TriPlanarBlock\r\n * @param name defines the block name\r\n * @param hideSourceZ defines a boolean indicating that normal Z should not be used (false by default)\r\n */\r\n public constructor(name: string, hideSourceZ = false) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"sharpness\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\r\n \"source\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"source\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerInput(\r\n \"sourceY\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceY\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n if (!hideSourceZ) {\r\n this.registerInput(\r\n \"sourceZ\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceZ\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n }\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerOutput(\"level\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\r\n this._inputs[1].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\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 \"TriPlanarBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the sharpness input component\r\n */\r\n public get sharpness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the sourceY input component\r\n */\r\n public get sourceY(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the sourceZ input component\r\n */\r\n public get sourceZ(): Nullable<NodeMaterialConnectionPoint> {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the rgba output component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb output component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the r output component\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the g output component\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the b output component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the a output component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the level output component\r\n */\r\n public get level(): NodeMaterialConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areTexturesDirty) {\r\n return;\r\n }\r\n\r\n const toGamma = this.convertToGammaSpace && this.texture && !this.texture.gammaSpace;\r\n const toLinear = this.convertToLinearSpace && this.texture && this.texture.gammaSpace;\r\n\r\n // Not a bug... Name defines the texture space not the required conversion\r\n defines.setValue(this._linearDefineName, toGamma, true);\r\n defines.setValue(this._gammaDefineName, toLinear, true);\r\n }\r\n\r\n public override isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override bind(effect: Effect) {\r\n if (!this.texture) {\r\n return;\r\n }\r\n\r\n effect.setFloat(this._textureInfoName, this.texture.level);\r\n\r\n if (!this._imageSource) {\r\n effect.setTexture(this._samplerName, this.texture);\r\n }\r\n }\r\n\r\n private _samplerFunc(state: NodeMaterialBuildState) {\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"texture2D\";\r\n }\r\n\r\n private _generateTextureSample(textureName: string, uv: string, state: NodeMaterialBuildState) {\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerFunc(state)}(${textureName},${textureName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerFunc(state)}(${textureName}, ${uv})`;\r\n }\r\n\r\n protected _generateTextureLookup(state: NodeMaterialBuildState): void {\r\n const samplerName = this.samplerName;\r\n const samplerYName = this.samplerYName ?? samplerName;\r\n const samplerZName = this.samplerZName ?? samplerName;\r\n\r\n const sharpness = this.sharpness.isConnected ? this.sharpness.associatedVariableName : \"1.0\";\r\n\r\n const x = state._getFreeVariableName(\"x\");\r\n const y = state._getFreeVariableName(\"y\");\r\n const z = state._getFreeVariableName(\"z\");\r\n const w = state._getFreeVariableName(\"w\");\r\n const n = state._getFreeVariableName(\"n\");\r\n const uvx = state._getFreeVariableName(\"uvx\");\r\n const uvy = state._getFreeVariableName(\"uvy\");\r\n const uvz = state._getFreeVariableName(\"uvz\");\r\n\r\n state.compilationString += `\r\n ${state._declareLocalVar(n, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${this.normal.associatedVariableName}.xyz;\r\n\r\n ${state._declareLocalVar(uvx, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this.position.associatedVariableName}.yz;\r\n ${state._declareLocalVar(uvy, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this.position.associatedVariableName}.zx;\r\n ${state._declareLocalVar(uvz, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this.position.associatedVariableName}.xy;\r\n `;\r\n\r\n if (this.projectAsCube) {\r\n state.compilationString += `\r\n ${uvx}.xy = ${uvx}.yx;\r\n\r\n if (${n}.x >= 0.0) {\r\n ${uvx}.x = -${uvx}.x;\r\n }\r\n if (${n}.y < 0.0) {\r\n ${uvy}.y = -${uvy}.y;\r\n }\r\n if (${n}.z < 0.0) {\r\n ${uvz}.x = -${uvz}.x;\r\n }\r\n `;\r\n }\r\n\r\n const suffix = state.fSuffix;\r\n\r\n state.compilationString += `\r\n ${state._declareLocalVar(x, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._generateTextureSample(samplerName, uvx, state)};\r\n ${state._declareLocalVar(y, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._generateTextureSample(samplerYName, uvy, state)};\r\n ${state._declareLocalVar(z, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._generateTextureSample(samplerZName, uvz, state)};\r\n \r\n // blend weights\r\n ${state._declareLocalVar(w, NodeMaterialBlockConnectionPointTypes.Vector3)} = pow(abs(${n}), vec3${suffix}(${sharpness}));\r\n\r\n // blend and return\r\n ${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = (${x}*${w}.x + ${y}*${w}.y + ${z}*${w}.z) / (${w}.x + ${w}.y + ${w}.z); \r\n `;\r\n }\r\n\r\n private _generateConversionCode(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string): void {\r\n let vecSpecifier = \"\";\r\n\r\n if (\r\n state.shaderLanguage === ShaderLanguage.WGSL &&\r\n (output.type === NodeMaterialBlockConnectionPointTypes.Vector3 || output.type === NodeMaterialBlockConnectionPointTypes.Color3)\r\n ) {\r\n vecSpecifier = \"Vec3\";\r\n }\r\n\r\n if (swizzle !== \"a\") {\r\n // no conversion if the output is \"a\" (alpha)\r\n if (!this.texture || !this.texture.gammaSpace) {\r\n state.compilationString += `#ifdef ${this._linearDefineName}\r\n ${output.associatedVariableName} = toGammaSpace${vecSpecifier}(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\r\n ${output.associatedVariableName} = toLinearSpace${vecSpecifier}(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string) {\r\n let complement = \"\";\r\n\r\n if (!this.disableLevelMultiplication) {\r\n complement = ` * ${state.shaderLanguage === ShaderLanguage.WGSL ? \"uniforms.\" : \"\"}${this._textureInfoName}`;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle}${complement};\\n`;\r\n this._generateConversionCode(state, output, swizzle);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (this.source.isConnected) {\r\n this._imageSource = this.source.connectedPoint!.ownerBlock as ImageSourceBlock;\r\n } else {\r\n this._imageSource = null;\r\n }\r\n\r\n this._textureInfoName = state._getFreeVariableName(\"textureInfoName\");\r\n\r\n this.level.associatedVariableName = (state.shaderLanguage === ShaderLanguage.WGSL ? \"uniforms.\" : \"\") + this._textureInfoName;\r\n\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n this._linearDefineName = state._getFreeDefineName(\"ISLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"ISGAMMA\");\r\n\r\n if (!this._imageSource) {\r\n this._samplerName = state._getFreeVariableName(this.name + \"Texture\");\r\n\r\n state._emit2DSampler(this._samplerName);\r\n }\r\n\r\n // Declarations\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n state._emitUniformFromString(this._textureInfoName, NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._generateTextureLookup(state);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints && output.name !== \"level\") {\r\n this._writeOutput(state, output, output.name);\r\n }\r\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}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.disableLevelMultiplication = ${this.disableLevelMultiplication};\\n`;\r\n codeString += `${this._codeVariableName}.projectAsCube = ${this.projectAsCube};\\n`;\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null, ${this.texture.noMipmap}, ${this.texture.invertY}, ${this.texture.samplingMode});\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapU = ${this.texture.wrapU};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapV = ${this.texture.wrapV};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uAng = ${this.texture.uAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vAng = ${this.texture.vAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wAng = ${this.texture.wAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uOffset = ${this.texture.uOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vOffset = ${this.texture.vOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uScale = ${this.texture.uScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vScale = ${this.texture.vScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\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.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.disableLevelMultiplication = this.disableLevelMultiplication;\r\n serializationObject.projectAsCube = this.projectAsCube;\r\n if (!this.hasImageSource && this.texture && !this.texture.isRenderTarget && this.texture.getClassName() !== \"VideoTexture\") {\r\n serializationObject.texture = this.texture.serialize();\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.convertToGammaSpace = serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.disableLevelMultiplication = !!serializationObject.disableLevelMultiplication;\r\n this.projectAsCube = !!serializationObject.projectAsCube;\r\n\r\n if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime && serializationObject.texture.url !== undefined) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TriPlanarBlock\", TriPlanarBlock);\r\n"]}
1
+ {"version":3,"file":"triPlanarBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/triPlanarBlock.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 type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterialDefines } from \"../nodeMaterial\";\r\nimport { NodeMaterial } from \"../nodeMaterial\";\r\nimport type { Effect } from \"../../effect\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Texture } from \"../../Textures/texture\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport \"../../../Shaders/ShadersInclude/helperFunctions\";\r\nimport { ImageSourceBlock } from \"./Dual/imageSourceBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../nodeMaterialConnectionPointCustomObject\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to read a texture with triplanar mapping (see \"boxmap\" in https://iquilezles.org/articles/biplanar/)\r\n */\r\nexport class TriPlanarBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n protected _tempTextureRead: string;\r\n private _samplerName: string;\r\n private _textureInfoName: string;\r\n private _imageSource: Nullable<ImageSourceBlock>;\r\n\r\n /**\r\n * Project the texture(s) for a better fit to a cube\r\n */\r\n @editableInPropertyPage(\"Project as cube\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { update: true } })\r\n public projectAsCube: boolean = false;\r\n\r\n protected _texture: Nullable<Texture>;\r\n /**\r\n * Gets or sets the texture associated with the node\r\n */\r\n public get texture(): Nullable<Texture> {\r\n if (this.source.isConnected) {\r\n return (this.source.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return this._texture;\r\n }\r\n\r\n public set texture(texture: Nullable<Texture>) {\r\n if (this._texture === texture) {\r\n return;\r\n }\r\n\r\n const scene = texture?.getScene() ?? EngineStore.LastCreatedScene;\r\n\r\n if (!texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this._texture!);\r\n });\r\n }\r\n\r\n this._texture = texture;\r\n\r\n if (texture && scene) {\r\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(texture);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the textureY associated with the node\r\n */\r\n public get textureY(): Nullable<Texture> {\r\n if (this.sourceY.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the textureZ associated with the node\r\n */\r\n public get textureZ(): Nullable<Texture> {\r\n if (this.sourceZ?.isConnected) {\r\n return (this.sourceY.connectedPoint?.ownerBlock as ImageSourceBlock).texture;\r\n }\r\n return null;\r\n }\r\n\r\n protected _getImageSourceBlock(connectionPoint: Nullable<NodeMaterialConnectionPoint>): Nullable<ImageSourceBlock> {\r\n return connectionPoint?.isConnected ? (connectionPoint.connectedPoint!.ownerBlock as ImageSourceBlock) : null;\r\n }\r\n\r\n /**\r\n * Gets the sampler name associated with this texture\r\n */\r\n public get samplerName(): string {\r\n const imageSourceBlock = this._getImageSourceBlock(this.source);\r\n if (imageSourceBlock) {\r\n return imageSourceBlock.samplerName;\r\n }\r\n return this._samplerName;\r\n }\r\n\r\n /**\r\n * Gets the samplerY name associated with this texture\r\n */\r\n public get samplerYName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceY)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets the samplerZ name associated with this texture\r\n */\r\n public get samplerZName(): Nullable<string> {\r\n return this._getImageSourceBlock(this.sourceZ)?.samplerName ?? null;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that this block is linked to an ImageSourceBlock\r\n */\r\n public get hasImageSource(): boolean {\r\n return this.source.isConnected;\r\n }\r\n\r\n private _convertToGammaSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to gamma space\r\n */\r\n public set convertToGammaSpace(value: boolean) {\r\n if (value === this._convertToGammaSpace) {\r\n return;\r\n }\r\n\r\n this._convertToGammaSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToGammaSpace(): boolean {\r\n return this._convertToGammaSpace;\r\n }\r\n\r\n private _convertToLinearSpace = false;\r\n /**\r\n * Gets or sets a boolean indicating if content needs to be converted to linear space\r\n */\r\n public set convertToLinearSpace(value: boolean) {\r\n if (value === this._convertToLinearSpace) {\r\n return;\r\n }\r\n\r\n this._convertToLinearSpace = value;\r\n if (this.texture) {\r\n const scene = this.texture.getScene() ?? EngineStore.LastCreatedScene;\r\n scene?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => {\r\n return mat.hasTexture(this.texture!);\r\n });\r\n }\r\n }\r\n public get convertToLinearSpace(): boolean {\r\n return this._convertToLinearSpace;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if multiplication of texture with level should be disabled\r\n */\r\n public disableLevelMultiplication = false;\r\n\r\n /**\r\n * Create a new TriPlanarBlock\r\n * @param name defines the block name\r\n * @param hideSourceZ defines a boolean indicating that normal Z should not be used (false by default)\r\n */\r\n public constructor(name: string, hideSourceZ = false) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.AutoDetect, false);\r\n this.registerInput(\"sharpness\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\r\n \"source\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"source\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n this.registerInput(\r\n \"sourceY\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceY\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n if (!hideSourceZ) {\r\n this.registerInput(\r\n \"sourceZ\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"sourceZ\", this, NodeMaterialConnectionPointDirection.Input, ImageSourceBlock, \"ImageSourceBlock\")\r\n );\r\n }\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n this.registerOutput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerOutput(\"level\", NodeMaterialBlockConnectionPointTypes.Float, NodeMaterialBlockTargets.Neutral);\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\r\n this._inputs[1].addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4\r\n );\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 \"TriPlanarBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the sharpness input component\r\n */\r\n public get sharpness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the source input component\r\n */\r\n public get source(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the sourceY input component\r\n */\r\n public get sourceY(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the sourceZ input component\r\n */\r\n public get sourceZ(): Nullable<NodeMaterialConnectionPoint> {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the rgba output component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb output component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the r output component\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the g output component\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n /**\r\n * Gets the b output component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._outputs[4];\r\n }\r\n\r\n /**\r\n * Gets the a output component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._outputs[5];\r\n }\r\n\r\n /**\r\n * Gets the level output component\r\n */\r\n public get level(): NodeMaterialConnectionPoint {\r\n return this._outputs[6];\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if (!defines._areTexturesDirty) {\r\n return;\r\n }\r\n\r\n const toGamma = this.convertToGammaSpace && this.texture && !this.texture.gammaSpace;\r\n const toLinear = this.convertToLinearSpace && this.texture && this.texture.gammaSpace;\r\n\r\n // Not a bug... Name defines the texture space not the required conversion\r\n defines.setValue(this._linearDefineName, toGamma, true);\r\n defines.setValue(this._gammaDefineName, toLinear, true);\r\n }\r\n\r\n public override isReady() {\r\n if (this.texture && !this.texture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override bind(effect: Effect) {\r\n if (!this.texture) {\r\n return;\r\n }\r\n\r\n effect.setFloat(this._textureInfoName, this.texture.level);\r\n\r\n if (!this._imageSource) {\r\n effect.setTexture(this._samplerName, this.texture);\r\n }\r\n }\r\n\r\n private _samplerFunc(state: NodeMaterialBuildState) {\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n return \"textureSample\";\r\n }\r\n return \"texture2D\";\r\n }\r\n\r\n private _generateTextureSample(textureName: string, uv: string, state: NodeMaterialBuildState) {\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n return `${this._samplerFunc(state)}(${textureName},${textureName + Constants.AUTOSAMPLERSUFFIX}, ${uv})`;\r\n }\r\n return `${this._samplerFunc(state)}(${textureName}, ${uv})`;\r\n }\r\n\r\n protected _generateTextureLookup(state: NodeMaterialBuildState): void {\r\n const samplerName = this.samplerName;\r\n const samplerYName = this.samplerYName ?? samplerName;\r\n const samplerZName = this.samplerZName ?? samplerName;\r\n\r\n const sharpness = this.sharpness.isConnected ? this.sharpness.associatedVariableName : \"1.0\";\r\n\r\n const x = state._getFreeVariableName(\"x\");\r\n const y = state._getFreeVariableName(\"y\");\r\n const z = state._getFreeVariableName(\"z\");\r\n const w = state._getFreeVariableName(\"w\");\r\n const n = state._getFreeVariableName(\"n\");\r\n const uvx = state._getFreeVariableName(\"uvx\");\r\n const uvy = state._getFreeVariableName(\"uvy\");\r\n const uvz = state._getFreeVariableName(\"uvz\");\r\n\r\n state.compilationString += `\r\n ${state._declareLocalVar(n, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${this.normal.associatedVariableName}.xyz;\r\n\r\n ${state._declareLocalVar(uvx, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this.position.associatedVariableName}.yz;\r\n ${state._declareLocalVar(uvy, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this.position.associatedVariableName}.zx;\r\n ${state._declareLocalVar(uvz, NodeMaterialBlockConnectionPointTypes.Vector2)} = ${this.position.associatedVariableName}.xy;\r\n `;\r\n\r\n if (this.projectAsCube) {\r\n state.compilationString += `\r\n ${uvx}.xy = ${uvx}.yx;\r\n\r\n if (${n}.x >= 0.0) {\r\n ${uvx}.x = -${uvx}.x;\r\n }\r\n if (${n}.y < 0.0) {\r\n ${uvy}.y = -${uvy}.y;\r\n }\r\n if (${n}.z < 0.0) {\r\n ${uvz}.x = -${uvz}.x;\r\n }\r\n `;\r\n }\r\n\r\n const suffix = state.fSuffix;\r\n\r\n state.compilationString += `\r\n ${state._declareLocalVar(x, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._generateTextureSample(samplerName, uvx, state)};\r\n ${state._declareLocalVar(y, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._generateTextureSample(samplerYName, uvy, state)};\r\n ${state._declareLocalVar(z, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._generateTextureSample(samplerZName, uvz, state)};\r\n \r\n // blend weights\r\n ${state._declareLocalVar(w, NodeMaterialBlockConnectionPointTypes.Vector3)} = pow(abs(${n}), vec3${suffix}(${sharpness}));\r\n\r\n // blend and return\r\n ${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = (${x}*${w}.x + ${y}*${w}.y + ${z}*${w}.z) / (${w}.x + ${w}.y + ${w}.z); \r\n `;\r\n }\r\n\r\n private _generateConversionCode(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string): void {\r\n let vecSpecifier = \"\";\r\n\r\n if (\r\n state.shaderLanguage === ShaderLanguage.WGSL &&\r\n (output.type === NodeMaterialBlockConnectionPointTypes.Vector3 || output.type === NodeMaterialBlockConnectionPointTypes.Color3)\r\n ) {\r\n vecSpecifier = \"Vec3\";\r\n }\r\n\r\n if (swizzle !== \"a\") {\r\n // no conversion if the output is \"a\" (alpha)\r\n if (!this.texture || !this.texture.gammaSpace) {\r\n state.compilationString += `#ifdef ${this._linearDefineName}\r\n ${output.associatedVariableName} = toGammaSpace${vecSpecifier}(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\r\n ${output.associatedVariableName} = toLinearSpace${vecSpecifier}(${output.associatedVariableName});\r\n #endif\r\n `;\r\n }\r\n }\r\n\r\n private _writeOutput(state: NodeMaterialBuildState, output: NodeMaterialConnectionPoint, swizzle: string) {\r\n let complement = \"\";\r\n\r\n if (!this.disableLevelMultiplication) {\r\n complement = ` * ${state.shaderLanguage === ShaderLanguage.WGSL ? \"uniforms.\" : \"\"}${this._textureInfoName}`;\r\n }\r\n\r\n state.compilationString += `${state._declareOutput(output)} = ${this._tempTextureRead}.${swizzle}${complement};\\n`;\r\n this._generateConversionCode(state, output, swizzle);\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (this.source.isConnected) {\r\n this._imageSource = this.source.connectedPoint!.ownerBlock as ImageSourceBlock;\r\n } else {\r\n this._imageSource = null;\r\n }\r\n\r\n this._textureInfoName = state._getFreeVariableName(\"textureInfoName\");\r\n\r\n this.level.associatedVariableName = (state.shaderLanguage === ShaderLanguage.WGSL ? \"uniforms.\" : \"\") + this._textureInfoName;\r\n\r\n this._tempTextureRead = state._getFreeVariableName(\"tempTextureRead\");\r\n this._linearDefineName = state._getFreeDefineName(\"ISLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"ISGAMMA\");\r\n\r\n if (!this._imageSource) {\r\n this._samplerName = state._getFreeVariableName(this.name + \"Texture\");\r\n\r\n state._emit2DSampler(this._samplerName);\r\n }\r\n\r\n // Declarations\r\n state.sharedData.blockingBlocks.push(this);\r\n state.sharedData.textureBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n state._emitUniformFromString(this._textureInfoName, NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._generateTextureLookup(state);\r\n\r\n for (const output of this._outputs) {\r\n if (output.hasEndpoints && output.name !== \"level\") {\r\n this._writeOutput(state, output, output.name);\r\n }\r\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}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.disableLevelMultiplication = ${this.disableLevelMultiplication};\\n`;\r\n codeString += `${this._codeVariableName}.projectAsCube = ${this.projectAsCube};\\n`;\r\n\r\n if (!this.texture) {\r\n return codeString;\r\n }\r\n\r\n codeString += `${this._codeVariableName}.texture = new BABYLON.Texture(\"${this.texture.name}\", null, ${this.texture.noMipmap}, ${this.texture.invertY}, ${this.texture.samplingMode});\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapU = ${this.texture.wrapU};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wrapV = ${this.texture.wrapV};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uAng = ${this.texture.uAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vAng = ${this.texture.vAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.wAng = ${this.texture.wAng};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uOffset = ${this.texture.uOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vOffset = ${this.texture.vOffset};\\n`;\r\n codeString += `${this._codeVariableName}.texture.uScale = ${this.texture.uScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.vScale = ${this.texture.vScale};\\n`;\r\n codeString += `${this._codeVariableName}.texture.coordinatesMode = ${this.texture.coordinatesMode};\\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.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.disableLevelMultiplication = this.disableLevelMultiplication;\r\n serializationObject.projectAsCube = this.projectAsCube;\r\n if (!this.hasImageSource && this.texture && !this.texture.isRenderTarget && this.texture.getClassName() !== \"VideoTexture\") {\r\n serializationObject.texture = this.texture.serialize();\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.convertToGammaSpace = serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.disableLevelMultiplication = !!serializationObject.disableLevelMultiplication;\r\n this.projectAsCube = !!serializationObject.projectAsCube;\r\n\r\n if (serializationObject.texture && !NodeMaterial.IgnoreTexturesAtLoadTime && serializationObject.texture.url !== undefined) {\r\n rootUrl = serializationObject.texture.url.indexOf(\"data:\") === 0 ? \"\" : rootUrl;\r\n this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl) as Texture;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TriPlanarBlock\", TriPlanarBlock);\r\n"]}
@@ -1,7 +1,9 @@
1
+ import { __decorate } from "../../../tslib.es6.js";
1
2
  import { NodeMaterialBlock } from "../nodeMaterialBlock.js";
2
3
  import { NodeMaterialBlockConnectionPointTypes } from "../Enums/nodeMaterialBlockConnectionPointTypes.js";
3
4
  import { NodeMaterialBlockTargets } from "../Enums/nodeMaterialBlockTargets.js";
4
5
  import { RegisterClass } from "../../../Misc/typeStore.js";
6
+ import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
5
7
  /**
6
8
  * Operations supported by the Trigonometry block
7
9
  */
@@ -182,5 +184,32 @@ export class TrigonometryBlock extends NodeMaterialBlock {
182
184
  return codeString;
183
185
  }
184
186
  }
187
+ __decorate([
188
+ editableInPropertyPage("Operation", 4 /* PropertyTypeForEdition.List */, "ADVANCED", {
189
+ notifiers: { rebuild: true },
190
+ embedded: true,
191
+ options: [
192
+ { label: "Cos", value: TrigonometryBlockOperations.Cos },
193
+ { label: "Sin", value: TrigonometryBlockOperations.Sin },
194
+ { label: "Abs", value: TrigonometryBlockOperations.Abs },
195
+ { label: "Exp", value: TrigonometryBlockOperations.Exp },
196
+ { label: "Exp2", value: TrigonometryBlockOperations.Exp2 },
197
+ { label: "Round", value: TrigonometryBlockOperations.Round },
198
+ { label: "Floor", value: TrigonometryBlockOperations.Floor },
199
+ { label: "Ceiling", value: TrigonometryBlockOperations.Ceiling },
200
+ { label: "Sqrt", value: TrigonometryBlockOperations.Sqrt },
201
+ { label: "Log", value: TrigonometryBlockOperations.Log },
202
+ { label: "Tan", value: TrigonometryBlockOperations.Tan },
203
+ { label: "ArcTan", value: TrigonometryBlockOperations.ArcTan },
204
+ { label: "ArcCos", value: TrigonometryBlockOperations.ArcCos },
205
+ { label: "ArcSin", value: TrigonometryBlockOperations.ArcSin },
206
+ { label: "Fract", value: TrigonometryBlockOperations.Fract },
207
+ { label: "Sign", value: TrigonometryBlockOperations.Sign },
208
+ { label: "Radians", value: TrigonometryBlockOperations.Radians },
209
+ { label: "Degrees", value: TrigonometryBlockOperations.Degrees },
210
+ { label: "Set", value: TrigonometryBlockOperations.Set },
211
+ ],
212
+ })
213
+ ], TrigonometryBlock.prototype, "operation", void 0);
185
214
  RegisterClass("BABYLON.TrigonometryBlock", TrigonometryBlock);
186
215
  //# sourceMappingURL=trigonometryBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trigonometryBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/trigonometryBlock.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 type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Operations supported by the Trigonometry block\r\n */\r\nexport enum TrigonometryBlockOperations {\r\n /** Cos */\r\n Cos,\r\n /** Sin */\r\n Sin,\r\n /** Abs */\r\n Abs,\r\n /** Exp */\r\n Exp,\r\n /** Exp2 */\r\n Exp2,\r\n /** Round */\r\n Round,\r\n /** Floor */\r\n Floor,\r\n /** Ceiling */\r\n Ceiling,\r\n /** Square root */\r\n Sqrt,\r\n /** Log */\r\n Log,\r\n /** Tangent */\r\n Tan,\r\n /** Arc tangent */\r\n ArcTan,\r\n /** Arc cosinus */\r\n ArcCos,\r\n /** Arc sinus */\r\n ArcSin,\r\n /** Fraction */\r\n Fract,\r\n /** Sign */\r\n Sign,\r\n /** To radians (from degrees) */\r\n Radians,\r\n /** To degrees (from radians) */\r\n Degrees,\r\n /** To Set a = b */\r\n Set,\r\n}\r\n\r\n/**\r\n * Block used to apply trigonometry operation to floats\r\n */\r\nexport class TrigonometryBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the operation applied by the block\r\n */\r\n public operation = TrigonometryBlockOperations.Cos;\r\n\r\n /**\r\n * Creates a new TrigonometryBlock\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(\"input\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\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 \"TrigonometryBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): 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 protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n let operation = \"\";\r\n\r\n switch (this.operation) {\r\n case TrigonometryBlockOperations.Cos: {\r\n operation = \"cos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sin: {\r\n operation = \"sin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Abs: {\r\n operation = \"abs\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp: {\r\n operation = \"exp\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp2: {\r\n operation = \"exp2\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Round: {\r\n operation = \"round\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Floor: {\r\n operation = \"floor\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Ceiling: {\r\n operation = \"ceil\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sqrt: {\r\n operation = \"sqrt\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Log: {\r\n operation = \"log\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Tan: {\r\n operation = \"tan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcTan: {\r\n operation = \"atan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcCos: {\r\n operation = \"acos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcSin: {\r\n operation = \"asin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Fract: {\r\n operation = \"fract\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sign: {\r\n operation = \"sign\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Radians: {\r\n operation = \"radians\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Degrees: {\r\n operation = \"degrees\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Set: {\r\n operation = \"\";\r\n break;\r\n }\r\n }\r\n\r\n state.compilationString += state._declareOutput(output) + ` = ${operation}(${this.input.associatedVariableName});\\n`;\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.operation = this.operation;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.operation = serializationObject.operation;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.operation = BABYLON.TrigonometryBlockOperations.${TrigonometryBlockOperations[this.operation]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TrigonometryBlock\", TrigonometryBlock);\r\n"]}
1
+ {"version":3,"file":"trigonometryBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/trigonometryBlock.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 type { Scene } from \"../../../scene\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"core/Decorators/nodeDecorator\";\r\n\r\n/**\r\n * Operations supported by the Trigonometry block\r\n */\r\nexport enum TrigonometryBlockOperations {\r\n /** Cos */\r\n Cos,\r\n /** Sin */\r\n Sin,\r\n /** Abs */\r\n Abs,\r\n /** Exp */\r\n Exp,\r\n /** Exp2 */\r\n Exp2,\r\n /** Round */\r\n Round,\r\n /** Floor */\r\n Floor,\r\n /** Ceiling */\r\n Ceiling,\r\n /** Square root */\r\n Sqrt,\r\n /** Log */\r\n Log,\r\n /** Tangent */\r\n Tan,\r\n /** Arc tangent */\r\n ArcTan,\r\n /** Arc cosinus */\r\n ArcCos,\r\n /** Arc sinus */\r\n ArcSin,\r\n /** Fraction */\r\n Fract,\r\n /** Sign */\r\n Sign,\r\n /** To radians (from degrees) */\r\n Radians,\r\n /** To degrees (from radians) */\r\n Degrees,\r\n /** To Set a = b */\r\n Set,\r\n}\r\n\r\n/**\r\n * Block used to apply trigonometry operation to floats\r\n */\r\nexport class TrigonometryBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the operation applied by the block\r\n */\r\n @editableInPropertyPage(\"Operation\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"Cos\", value: TrigonometryBlockOperations.Cos },\r\n { label: \"Sin\", value: TrigonometryBlockOperations.Sin },\r\n { label: \"Abs\", value: TrigonometryBlockOperations.Abs },\r\n { label: \"Exp\", value: TrigonometryBlockOperations.Exp },\r\n { label: \"Exp2\", value: TrigonometryBlockOperations.Exp2 },\r\n { label: \"Round\", value: TrigonometryBlockOperations.Round },\r\n { label: \"Floor\", value: TrigonometryBlockOperations.Floor },\r\n { label: \"Ceiling\", value: TrigonometryBlockOperations.Ceiling },\r\n { label: \"Sqrt\", value: TrigonometryBlockOperations.Sqrt },\r\n { label: \"Log\", value: TrigonometryBlockOperations.Log },\r\n { label: \"Tan\", value: TrigonometryBlockOperations.Tan },\r\n { label: \"ArcTan\", value: TrigonometryBlockOperations.ArcTan },\r\n { label: \"ArcCos\", value: TrigonometryBlockOperations.ArcCos },\r\n { label: \"ArcSin\", value: TrigonometryBlockOperations.ArcSin },\r\n { label: \"Fract\", value: TrigonometryBlockOperations.Fract },\r\n { label: \"Sign\", value: TrigonometryBlockOperations.Sign },\r\n { label: \"Radians\", value: TrigonometryBlockOperations.Radians },\r\n { label: \"Degrees\", value: TrigonometryBlockOperations.Degrees },\r\n { label: \"Set\", value: TrigonometryBlockOperations.Set },\r\n ],\r\n })\r\n public operation = TrigonometryBlockOperations.Cos;\r\n\r\n /**\r\n * Creates a new TrigonometryBlock\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(\"input\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\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 \"TrigonometryBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): 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 protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n let operation = \"\";\r\n\r\n switch (this.operation) {\r\n case TrigonometryBlockOperations.Cos: {\r\n operation = \"cos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sin: {\r\n operation = \"sin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Abs: {\r\n operation = \"abs\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp: {\r\n operation = \"exp\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Exp2: {\r\n operation = \"exp2\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Round: {\r\n operation = \"round\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Floor: {\r\n operation = \"floor\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Ceiling: {\r\n operation = \"ceil\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sqrt: {\r\n operation = \"sqrt\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Log: {\r\n operation = \"log\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Tan: {\r\n operation = \"tan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcTan: {\r\n operation = \"atan\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcCos: {\r\n operation = \"acos\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.ArcSin: {\r\n operation = \"asin\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Fract: {\r\n operation = \"fract\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Sign: {\r\n operation = \"sign\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Radians: {\r\n operation = \"radians\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Degrees: {\r\n operation = \"degrees\";\r\n break;\r\n }\r\n case TrigonometryBlockOperations.Set: {\r\n operation = \"\";\r\n break;\r\n }\r\n }\r\n\r\n state.compilationString += state._declareOutput(output) + ` = ${operation}(${this.input.associatedVariableName});\\n`;\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.operation = this.operation;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.operation = serializationObject.operation;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.operation = BABYLON.TrigonometryBlockOperations.${TrigonometryBlockOperations[this.operation]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.TrigonometryBlock\", TrigonometryBlock);\r\n"]}
@@ -1,7 +1,9 @@
1
+ import { __decorate } from "../../../tslib.es6.js";
1
2
  import { NodeMaterialBlock } from "../nodeMaterialBlock.js";
2
3
  import { NodeMaterialBlockConnectionPointTypes } from "../Enums/nodeMaterialBlockConnectionPointTypes.js";
3
4
  import { NodeMaterialBlockTargets } from "../Enums/nodeMaterialBlockTargets.js";
4
5
  import { RegisterClass } from "../../../Misc/typeStore.js";
6
+ import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
5
7
  /**
6
8
  * Operations supported by the Wave block
7
9
  */
@@ -82,5 +84,16 @@ export class WaveBlock extends NodeMaterialBlock {
82
84
  this.kind = serializationObject.kind;
83
85
  }
84
86
  }
87
+ __decorate([
88
+ editableInPropertyPage("Kind", 4 /* PropertyTypeForEdition.List */, "ADVANCED", {
89
+ notifiers: { rebuild: true },
90
+ embedded: true,
91
+ options: [
92
+ { label: "SawTooth", value: 0 /* WaveBlockKind.SawTooth */ },
93
+ { label: "Square", value: 1 /* WaveBlockKind.Square */ },
94
+ { label: "Triangle", value: 2 /* WaveBlockKind.Triangle */ },
95
+ ],
96
+ })
97
+ ], WaveBlock.prototype, "kind", void 0);
85
98
  RegisterClass("BABYLON.WaveBlock", WaveBlock);
86
99
  //# sourceMappingURL=waveBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"waveBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/waveBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAGvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;GAEG;AACH,MAAM,CAAN,IAAkB,aAOjB;AAPD,WAAkB,aAAa;IAC3B,eAAe;IACf,yDAAQ,CAAA;IACR,aAAa;IACb,qDAAM,CAAA;IACN,eAAe;IACf,yDAAQ,CAAA;AACZ,CAAC,EAPiB,aAAa,KAAb,aAAa,QAO9B;AAED;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,iBAAiB;IAM5C;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAVlD;;WAEG;QACI,SAAI,kCAA0B;QASjC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;IACpG,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEkB,WAAW,CAAC,KAA6B;QACxD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,mCAA2B,CAAC,CAAC;gBACzB,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,kBAAkB,IAAI,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC;gBAC3J,MAAM;aACT;YACD,iCAAyB,CAAC,CAAC;gBACvB,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,8BAA8B,IAAI,CAAC,KAAK,CAAC,sBAAsB,OAAO,CAAC;gBACjI,MAAM;aACT;YACD,mCAA2B,CAAC,CAAC;gBACzB,KAAK,CAAC,iBAAiB;oBACnB,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,uBAAuB,IAAI,CAAC,KAAK,CAAC,sBAAsB,kBAAkB,IAAI,CAAC,KAAK,CAAC,sBAAsB,cAAc,CAAC;gBAC7J,MAAM;aACT;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAErC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB,EAAE,KAAY,EAAE,OAAe;QAChF,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;IACzC,CAAC;CACJ;AAED,aAAa,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC","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 type { Scene } from \"../../../scene\";\r\n\r\n/**\r\n * Operations supported by the Wave block\r\n */\r\nexport const enum WaveBlockKind {\r\n /** SawTooth */\r\n SawTooth,\r\n /** Square */\r\n Square,\r\n /** Triangle */\r\n Triangle,\r\n}\r\n\r\n/**\r\n * Block used to apply wave operation to floats\r\n */\r\nexport class WaveBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the kibnd of wave to be applied by the block\r\n */\r\n public kind = WaveBlockKind.SawTooth;\r\n\r\n /**\r\n * Creates a new WaveBlock\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(\"input\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\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 \"WaveBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): 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 protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n switch (this.kind) {\r\n case WaveBlockKind.SawTooth: {\r\n state.compilationString += state._declareOutput(output) + ` = ${this.input.associatedVariableName} - floor(0.5 + ${this.input.associatedVariableName});\\n`;\r\n break;\r\n }\r\n case WaveBlockKind.Square: {\r\n state.compilationString += state._declareOutput(output) + ` = 1.0 - 2.0 * round(fract(${this.input.associatedVariableName}));\\n`;\r\n break;\r\n }\r\n case WaveBlockKind.Triangle: {\r\n state.compilationString +=\r\n state._declareOutput(output) + ` = 2.0 * abs(2.0 * (${this.input.associatedVariableName} - floor(0.5 + ${this.input.associatedVariableName}))) - 1.0;\\n`;\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.kind = this.kind;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.kind = serializationObject.kind;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WaveBlock\", WaveBlock);\r\n"]}
1
+ {"version":3,"file":"waveBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/waveBlock.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 type { Scene } from \"../../../scene\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"core/Decorators/nodeDecorator\";\r\n\r\n/**\r\n * Operations supported by the Wave block\r\n */\r\nexport const enum WaveBlockKind {\r\n /** SawTooth */\r\n SawTooth,\r\n /** Square */\r\n Square,\r\n /** Triangle */\r\n Triangle,\r\n}\r\n\r\n/**\r\n * Block used to apply wave operation to floats\r\n */\r\nexport class WaveBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the kibnd of wave to be applied by the block\r\n */\r\n @editableInPropertyPage(\"Kind\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"SawTooth\", value: WaveBlockKind.SawTooth },\r\n { label: \"Square\", value: WaveBlockKind.Square },\r\n { label: \"Triangle\", value: WaveBlockKind.Triangle },\r\n ],\r\n })\r\n public kind = WaveBlockKind.SawTooth;\r\n\r\n /**\r\n * Creates a new WaveBlock\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(\"input\", NodeMaterialBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\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 \"WaveBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): 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 protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const output = this._outputs[0];\r\n\r\n switch (this.kind) {\r\n case WaveBlockKind.SawTooth: {\r\n state.compilationString += state._declareOutput(output) + ` = ${this.input.associatedVariableName} - floor(0.5 + ${this.input.associatedVariableName});\\n`;\r\n break;\r\n }\r\n case WaveBlockKind.Square: {\r\n state.compilationString += state._declareOutput(output) + ` = 1.0 - 2.0 * round(fract(${this.input.associatedVariableName}));\\n`;\r\n break;\r\n }\r\n case WaveBlockKind.Triangle: {\r\n state.compilationString +=\r\n state._declareOutput(output) + ` = 2.0 * abs(2.0 * (${this.input.associatedVariableName} - floor(0.5 + ${this.input.associatedVariableName}))) - 1.0;\\n`;\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.kind = this.kind;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.kind = serializationObject.kind;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WaveBlock\", WaveBlock);\r\n"]}
@@ -272,7 +272,7 @@ export class WorleyNoise3DBlock extends NodeMaterialBlock {
272
272
  }
273
273
  }
274
274
  __decorate([
275
- editableInPropertyPage("Use Manhattan Distance", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES", { notifiers: { update: false } })
275
+ editableInPropertyPage("Use Manhattan Distance", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES", { embedded: true, notifiers: { update: false } })
276
276
  ], WorleyNoise3DBlock.prototype, "manhattanDistance", void 0);
277
277
  RegisterClass("BABYLON.WorleyNoise3DBlock", WorleyNoise3DBlock);
278
278
  //# sourceMappingURL=worleyNoise3DBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worleyNoise3DBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/worleyNoise3DBlock.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 type { Scene } from \"../../../scene\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport { ShaderLanguage } from \"../../../Materials/shaderLanguage\";\r\n\r\n/**\r\n * block used to Generate a Worley Noise 3D Noise Pattern\r\n */\r\n\r\n// Source: https://github.com/Erkaman/glsl-worley\r\n// Converted to BJS by Pryme8\r\n//\r\n// Worley Noise 3D\r\n// Return vec2 value range of -1.0->1.0, F1-F2 respectivly\r\n\r\nexport class WorleyNoise3DBlock extends NodeMaterialBlock {\r\n /** Gets or sets a boolean indicating that normal should be inverted on X axis */\r\n @editableInPropertyPage(\"Use Manhattan Distance\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { notifiers: { update: false } })\r\n public manhattanDistance = false;\r\n\r\n /**\r\n * Creates a new WorleyNoise3DBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n this.registerInput(\"seed\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"jitter\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"y\", NodeMaterialBlockConnectionPointTypes.Float);\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 \"WorleyNoise3DBlock\";\r\n }\r\n\r\n /**\r\n * Gets the seed input component\r\n */\r\n public get seed(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the jitter input component\r\n */\r\n public get jitter(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\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 /**\r\n * Gets the x component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this.seed.isConnected) {\r\n return;\r\n }\r\n\r\n if (!this.output.hasEndpoints && !this.x.hasEndpoints && !this.y.hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `vec3 permute(vec3 x){\\n`;\r\n functionString += ` return mod((34.0 * x + 1.0) * x, 289.0);\\n`;\r\n functionString += `}\\n\\n`;\r\n\r\n functionString += `vec3 dist(vec3 x, vec3 y, vec3 z, bool manhattanDistance){\\n`;\r\n functionString += ` return [manhattanDistance ? abs(x) + abs(y) + abs(z) : (x * x + y * y + z * z)];\\n`;\r\n functionString += `}\\n\\n`;\r\n\r\n functionString += `vec2 worley(vec3 P, float jitter, bool manhattanDistance){\\n`;\r\n functionString += ` float K = 0.142857142857; // 1/7\\n`;\r\n functionString += ` float Ko = 0.428571428571; // 1/2-K/2\\n`;\r\n functionString += ` float K2 = 0.020408163265306; // 1/(7*7)\\n`;\r\n functionString += ` float Kz = 0.166666666667; // 1/6\\n`;\r\n functionString += ` float Kzo = 0.416666666667; // 1/2-1/6*2\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 Pi = mod(floor(P), 289.0);\\n`;\r\n functionString += ` vec3 Pf = fract(P) - 0.5;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 Pfx = Pf.x + vec3(1.0, 0.0, -1.0);\\n`;\r\n functionString += ` vec3 Pfy = Pf.y + vec3(1.0, 0.0, -1.0);\\n`;\r\n functionString += ` vec3 Pfz = Pf.z + vec3(1.0, 0.0, -1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p = permute(Pi.x + vec3(-1.0, 0.0, 1.0));\\n`;\r\n functionString += ` vec3 p1 = permute(p + Pi.y - 1.0);\\n`;\r\n functionString += ` vec3 p2 = permute(p + Pi.y);\\n`;\r\n functionString += ` vec3 p3 = permute(p + Pi.y + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p11 = permute(p1 + Pi.z - 1.0);\\n`;\r\n functionString += ` vec3 p12 = permute(p1 + Pi.z);\\n`;\r\n functionString += ` vec3 p13 = permute(p1 + Pi.z + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p21 = permute(p2 + Pi.z - 1.0);\\n`;\r\n functionString += ` vec3 p22 = permute(p2 + Pi.z);\\n`;\r\n functionString += ` vec3 p23 = permute(p2 + Pi.z + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p31 = permute(p3 + Pi.z - 1.0);\\n`;\r\n functionString += ` vec3 p32 = permute(p3 + Pi.z);\\n`;\r\n functionString += ` vec3 p33 = permute(p3 + Pi.z + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox11 = fract(p11*K) - Ko;\\n`;\r\n functionString += ` vec3 oy11 = mod(floor(p11*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz11 = floor(p11*K2)*Kz - Kzo; // p11 < 289 guaranteed\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox12 = fract(p12*K) - Ko;\\n`;\r\n functionString += ` vec3 oy12 = mod(floor(p12*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz12 = floor(p12*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox13 = fract(p13*K) - Ko;\\n`;\r\n functionString += ` vec3 oy13 = mod(floor(p13*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz13 = floor(p13*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox21 = fract(p21*K) - Ko;\\n`;\r\n functionString += ` vec3 oy21 = mod(floor(p21*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz21 = floor(p21*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox22 = fract(p22*K) - Ko;\\n`;\r\n functionString += ` vec3 oy22 = mod(floor(p22*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz22 = floor(p22*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox23 = fract(p23*K) - Ko;\\n`;\r\n functionString += ` vec3 oy23 = mod(floor(p23*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz23 = floor(p23*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox31 = fract(p31*K) - Ko;\\n`;\r\n functionString += ` vec3 oy31 = mod(floor(p31*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz31 = floor(p31*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox32 = fract(p32*K) - Ko;\\n`;\r\n functionString += ` vec3 oy32 = mod(floor(p32*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz32 = floor(p32*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox33 = fract(p33*K) - Ko;\\n`;\r\n functionString += ` vec3 oy33 = mod(floor(p33*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz33 = floor(p33*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx11 = Pfx + jitter*ox11;\\n`;\r\n functionString += ` vec3 dy11 = Pfy.x + jitter*oy11;\\n`;\r\n functionString += ` vec3 dz11 = Pfz.x + jitter*oz11;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx12 = Pfx + jitter*ox12;\\n`;\r\n functionString += ` vec3 dy12 = Pfy.x + jitter*oy12;\\n`;\r\n functionString += ` vec3 dz12 = Pfz.y + jitter*oz12;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx13 = Pfx + jitter*ox13;\\n`;\r\n functionString += ` vec3 dy13 = Pfy.x + jitter*oy13;\\n`;\r\n functionString += ` vec3 dz13 = Pfz.z + jitter*oz13;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx21 = Pfx + jitter*ox21;\\n`;\r\n functionString += ` vec3 dy21 = Pfy.y + jitter*oy21;\\n`;\r\n functionString += ` vec3 dz21 = Pfz.x + jitter*oz21;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx22 = Pfx + jitter*ox22;\\n`;\r\n functionString += ` vec3 dy22 = Pfy.y + jitter*oy22;\\n`;\r\n functionString += ` vec3 dz22 = Pfz.y + jitter*oz22;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx23 = Pfx + jitter*ox23;\\n`;\r\n functionString += ` vec3 dy23 = Pfy.y + jitter*oy23;\\n`;\r\n functionString += ` vec3 dz23 = Pfz.z + jitter*oz23;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx31 = Pfx + jitter*ox31;\\n`;\r\n functionString += ` vec3 dy31 = Pfy.z + jitter*oy31;\\n`;\r\n functionString += ` vec3 dz31 = Pfz.x + jitter*oz31;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx32 = Pfx + jitter*ox32;\\n`;\r\n functionString += ` vec3 dy32 = Pfy.z + jitter*oy32;\\n`;\r\n functionString += ` vec3 dz32 = Pfz.y + jitter*oz32;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx33 = Pfx + jitter*ox33;\\n`;\r\n functionString += ` vec3 dy33 = Pfy.z + jitter*oy33;\\n`;\r\n functionString += ` vec3 dz33 = Pfz.z + jitter*oz33;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 d11 = dist(dx11, dy11, dz11, manhattanDistance);\\n`;\r\n functionString += ` vec3 d12 = dist(dx12, dy12, dz12, manhattanDistance);\\n`;\r\n functionString += ` vec3 d13 = dist(dx13, dy13, dz13, manhattanDistance);\\n`;\r\n functionString += ` vec3 d21 = dist(dx21, dy21, dz21, manhattanDistance);\\n`;\r\n functionString += ` vec3 d22 = dist(dx22, dy22, dz22, manhattanDistance);\\n`;\r\n functionString += ` vec3 d23 = dist(dx23, dy23, dz23, manhattanDistance);\\n`;\r\n functionString += ` vec3 d31 = dist(dx31, dy31, dz31, manhattanDistance);\\n`;\r\n functionString += ` vec3 d32 = dist(dx32, dy32, dz32, manhattanDistance);\\n`;\r\n functionString += ` vec3 d33 = dist(dx33, dy33, dz33, manhattanDistance);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 d1a = min(d11, d12);\\n`;\r\n functionString += ` d12 = max(d11, d12);\\n`;\r\n functionString += ` d11 = min(d1a, d13); // Smallest now not in d12 or d13\\n`;\r\n functionString += ` d13 = max(d1a, d13);\\n`;\r\n functionString += ` d12 = min(d12, d13); // 2nd smallest now not in d13\\n`;\r\n functionString += ` vec3 d2a = min(d21, d22);\\n`;\r\n functionString += ` d22 = max(d21, d22);\\n`;\r\n functionString += ` d21 = min(d2a, d23); // Smallest now not in d22 or d23\\n`;\r\n functionString += ` d23 = max(d2a, d23);\\n`;\r\n functionString += ` d22 = min(d22, d23); // 2nd smallest now not in d23\\n`;\r\n functionString += ` vec3 d3a = min(d31, d32);\\n`;\r\n functionString += ` d32 = max(d31, d32);\\n`;\r\n functionString += ` d31 = min(d3a, d33); // Smallest now not in d32 or d33\\n`;\r\n functionString += ` d33 = max(d3a, d33);\\n`;\r\n functionString += ` d32 = min(d32, d33); // 2nd smallest now not in d33\\n`;\r\n functionString += ` vec3 da = min(d11, d21);\\n`;\r\n functionString += ` d21 = max(d11, d21);\\n`;\r\n functionString += ` d11 = min(da, d31); // Smallest now in d11\\n`;\r\n functionString += ` d31 = max(da, d31); // 2nd smallest now not in d31\\n`;\r\n functionString += ` if (d11.x >= d11.y) { vec2 temp = d11.yx; d11.x = temp.x; d11.y = temp.y; }\\n`;\r\n functionString += ` if (d11.x >= d11.z) { vec2 temp = d11.zx; d11.x = temp.x; d11.z = temp.y; }\\n`;\r\n functionString += ` d12 = min(d12, d21); // 2nd smallest now not in d21\\n`;\r\n functionString += ` d12 = min(d12, d22); // nor in d22\\n`;\r\n functionString += ` d12 = min(d12, d31); // nor in d31\\n`;\r\n functionString += ` d12 = min(d12, d32); // nor in d32\\n`;\r\n functionString += ` vec2 temp2 = min(d11.yz, d12.xy); // nor in d12.yz\\n`;\r\n functionString += ` d11.y = temp2.x;\\n`;\r\n functionString += ` d11.z = temp2.y;\\n`;\r\n functionString += ` d11.y = min(d11.y, d12.z); // Only two more to go\\n`;\r\n functionString += ` d11.y = min(d11.y, d11.z); // Done! (Phew!)\\n`;\r\n functionString += ` return sqrt(d11.xy); // F1, F2\\n`;\r\n functionString += `}\\n\\n`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n functionString = state._babylonSLtoWGSL(functionString);\r\n } else {\r\n functionString = state._babylonSLtoGLSL(functionString);\r\n }\r\n\r\n state._emitFunction(\"worley3D\", functionString, \"// Worley3D\");\r\n\r\n const tempVariable = state._getFreeVariableName(\"worleyTemp\");\r\n\r\n state.compilationString += `${state._declareLocalVar(tempVariable, NodeMaterialBlockConnectionPointTypes.Vector2)} = worley(${this.seed.associatedVariableName}, ${this.jitter.associatedVariableName}, ${this.manhattanDistance});\\n`;\r\n\r\n if (this.output.hasEndpoints) {\r\n state.compilationString += state._declareOutput(this.output) + ` = ${tempVariable};\\n`;\r\n }\r\n\r\n if (this.x.hasEndpoints) {\r\n state.compilationString += state._declareOutput(this.x) + ` = ${tempVariable}.x;\\n`;\r\n }\r\n\r\n if (this.y.hasEndpoints) {\r\n state.compilationString += state._declareOutput(this.y) + ` = ${tempVariable}.y;\\n`;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Exposes the properties to the UI?\r\n * @returns - boolean indicating if the block has properties or not\r\n */\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.manhattanDistance = ${this.manhattanDistance};\\n`;\r\n\r\n return codeString;\r\n }\r\n /**\r\n * Exposes the properties to the Serialize?\r\n * @returns - a serialized object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.manhattanDistance = this.manhattanDistance;\r\n\r\n return serializationObject;\r\n }\r\n /**\r\n * Exposes the properties to the deserialize?\r\n * @param serializationObject\r\n * @param scene\r\n * @param rootUrl\r\n */\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.manhattanDistance = serializationObject.manhattanDistance;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WorleyNoise3DBlock\", WorleyNoise3DBlock);\r\n"]}
1
+ {"version":3,"file":"worleyNoise3DBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/worleyNoise3DBlock.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 type { Scene } from \"../../../scene\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../Decorators/nodeDecorator\";\r\nimport { ShaderLanguage } from \"../../../Materials/shaderLanguage\";\r\n\r\n/**\r\n * block used to Generate a Worley Noise 3D Noise Pattern\r\n */\r\n\r\n// Source: https://github.com/Erkaman/glsl-worley\r\n// Converted to BJS by Pryme8\r\n//\r\n// Worley Noise 3D\r\n// Return vec2 value range of -1.0->1.0, F1-F2 respectivly\r\n\r\nexport class WorleyNoise3DBlock extends NodeMaterialBlock {\r\n /** Gets or sets a boolean indicating that normal should be inverted on X axis */\r\n @editableInPropertyPage(\"Use Manhattan Distance\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { embedded: true, notifiers: { update: false } })\r\n public manhattanDistance = false;\r\n\r\n /**\r\n * Creates a new WorleyNoise3DBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n this.registerInput(\"seed\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"jitter\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"x\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerOutput(\"y\", NodeMaterialBlockConnectionPointTypes.Float);\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 \"WorleyNoise3DBlock\";\r\n }\r\n\r\n /**\r\n * Gets the seed input component\r\n */\r\n public get seed(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the jitter input component\r\n */\r\n public get jitter(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\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 /**\r\n * Gets the x component\r\n */\r\n public get x(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the y component\r\n */\r\n public get y(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this.seed.isConnected) {\r\n return;\r\n }\r\n\r\n if (!this.output.hasEndpoints && !this.x.hasEndpoints && !this.y.hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `vec3 permute(vec3 x){\\n`;\r\n functionString += ` return mod((34.0 * x + 1.0) * x, 289.0);\\n`;\r\n functionString += `}\\n\\n`;\r\n\r\n functionString += `vec3 dist(vec3 x, vec3 y, vec3 z, bool manhattanDistance){\\n`;\r\n functionString += ` return [manhattanDistance ? abs(x) + abs(y) + abs(z) : (x * x + y * y + z * z)];\\n`;\r\n functionString += `}\\n\\n`;\r\n\r\n functionString += `vec2 worley(vec3 P, float jitter, bool manhattanDistance){\\n`;\r\n functionString += ` float K = 0.142857142857; // 1/7\\n`;\r\n functionString += ` float Ko = 0.428571428571; // 1/2-K/2\\n`;\r\n functionString += ` float K2 = 0.020408163265306; // 1/(7*7)\\n`;\r\n functionString += ` float Kz = 0.166666666667; // 1/6\\n`;\r\n functionString += ` float Kzo = 0.416666666667; // 1/2-1/6*2\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 Pi = mod(floor(P), 289.0);\\n`;\r\n functionString += ` vec3 Pf = fract(P) - 0.5;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 Pfx = Pf.x + vec3(1.0, 0.0, -1.0);\\n`;\r\n functionString += ` vec3 Pfy = Pf.y + vec3(1.0, 0.0, -1.0);\\n`;\r\n functionString += ` vec3 Pfz = Pf.z + vec3(1.0, 0.0, -1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p = permute(Pi.x + vec3(-1.0, 0.0, 1.0));\\n`;\r\n functionString += ` vec3 p1 = permute(p + Pi.y - 1.0);\\n`;\r\n functionString += ` vec3 p2 = permute(p + Pi.y);\\n`;\r\n functionString += ` vec3 p3 = permute(p + Pi.y + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p11 = permute(p1 + Pi.z - 1.0);\\n`;\r\n functionString += ` vec3 p12 = permute(p1 + Pi.z);\\n`;\r\n functionString += ` vec3 p13 = permute(p1 + Pi.z + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p21 = permute(p2 + Pi.z - 1.0);\\n`;\r\n functionString += ` vec3 p22 = permute(p2 + Pi.z);\\n`;\r\n functionString += ` vec3 p23 = permute(p2 + Pi.z + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 p31 = permute(p3 + Pi.z - 1.0);\\n`;\r\n functionString += ` vec3 p32 = permute(p3 + Pi.z);\\n`;\r\n functionString += ` vec3 p33 = permute(p3 + Pi.z + 1.0);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox11 = fract(p11*K) - Ko;\\n`;\r\n functionString += ` vec3 oy11 = mod(floor(p11*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz11 = floor(p11*K2)*Kz - Kzo; // p11 < 289 guaranteed\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox12 = fract(p12*K) - Ko;\\n`;\r\n functionString += ` vec3 oy12 = mod(floor(p12*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz12 = floor(p12*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox13 = fract(p13*K) - Ko;\\n`;\r\n functionString += ` vec3 oy13 = mod(floor(p13*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz13 = floor(p13*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox21 = fract(p21*K) - Ko;\\n`;\r\n functionString += ` vec3 oy21 = mod(floor(p21*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz21 = floor(p21*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox22 = fract(p22*K) - Ko;\\n`;\r\n functionString += ` vec3 oy22 = mod(floor(p22*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz22 = floor(p22*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox23 = fract(p23*K) - Ko;\\n`;\r\n functionString += ` vec3 oy23 = mod(floor(p23*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz23 = floor(p23*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox31 = fract(p31*K) - Ko;\\n`;\r\n functionString += ` vec3 oy31 = mod(floor(p31*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz31 = floor(p31*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox32 = fract(p32*K) - Ko;\\n`;\r\n functionString += ` vec3 oy32 = mod(floor(p32*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz32 = floor(p32*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 ox33 = fract(p33*K) - Ko;\\n`;\r\n functionString += ` vec3 oy33 = mod(floor(p33*K), 7.0)*K - Ko;\\n`;\r\n functionString += ` vec3 oz33 = floor(p33*K2)*Kz - Kzo;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx11 = Pfx + jitter*ox11;\\n`;\r\n functionString += ` vec3 dy11 = Pfy.x + jitter*oy11;\\n`;\r\n functionString += ` vec3 dz11 = Pfz.x + jitter*oz11;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx12 = Pfx + jitter*ox12;\\n`;\r\n functionString += ` vec3 dy12 = Pfy.x + jitter*oy12;\\n`;\r\n functionString += ` vec3 dz12 = Pfz.y + jitter*oz12;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx13 = Pfx + jitter*ox13;\\n`;\r\n functionString += ` vec3 dy13 = Pfy.x + jitter*oy13;\\n`;\r\n functionString += ` vec3 dz13 = Pfz.z + jitter*oz13;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx21 = Pfx + jitter*ox21;\\n`;\r\n functionString += ` vec3 dy21 = Pfy.y + jitter*oy21;\\n`;\r\n functionString += ` vec3 dz21 = Pfz.x + jitter*oz21;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx22 = Pfx + jitter*ox22;\\n`;\r\n functionString += ` vec3 dy22 = Pfy.y + jitter*oy22;\\n`;\r\n functionString += ` vec3 dz22 = Pfz.y + jitter*oz22;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx23 = Pfx + jitter*ox23;\\n`;\r\n functionString += ` vec3 dy23 = Pfy.y + jitter*oy23;\\n`;\r\n functionString += ` vec3 dz23 = Pfz.z + jitter*oz23;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx31 = Pfx + jitter*ox31;\\n`;\r\n functionString += ` vec3 dy31 = Pfy.z + jitter*oy31;\\n`;\r\n functionString += ` vec3 dz31 = Pfz.x + jitter*oz31;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx32 = Pfx + jitter*ox32;\\n`;\r\n functionString += ` vec3 dy32 = Pfy.z + jitter*oy32;\\n`;\r\n functionString += ` vec3 dz32 = Pfz.y + jitter*oz32;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 dx33 = Pfx + jitter*ox33;\\n`;\r\n functionString += ` vec3 dy33 = Pfy.z + jitter*oy33;\\n`;\r\n functionString += ` vec3 dz33 = Pfz.z + jitter*oz33;\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 d11 = dist(dx11, dy11, dz11, manhattanDistance);\\n`;\r\n functionString += ` vec3 d12 = dist(dx12, dy12, dz12, manhattanDistance);\\n`;\r\n functionString += ` vec3 d13 = dist(dx13, dy13, dz13, manhattanDistance);\\n`;\r\n functionString += ` vec3 d21 = dist(dx21, dy21, dz21, manhattanDistance);\\n`;\r\n functionString += ` vec3 d22 = dist(dx22, dy22, dz22, manhattanDistance);\\n`;\r\n functionString += ` vec3 d23 = dist(dx23, dy23, dz23, manhattanDistance);\\n`;\r\n functionString += ` vec3 d31 = dist(dx31, dy31, dz31, manhattanDistance);\\n`;\r\n functionString += ` vec3 d32 = dist(dx32, dy32, dz32, manhattanDistance);\\n`;\r\n functionString += ` vec3 d33 = dist(dx33, dy33, dz33, manhattanDistance);\\n`;\r\n functionString += `\\n`;\r\n functionString += ` vec3 d1a = min(d11, d12);\\n`;\r\n functionString += ` d12 = max(d11, d12);\\n`;\r\n functionString += ` d11 = min(d1a, d13); // Smallest now not in d12 or d13\\n`;\r\n functionString += ` d13 = max(d1a, d13);\\n`;\r\n functionString += ` d12 = min(d12, d13); // 2nd smallest now not in d13\\n`;\r\n functionString += ` vec3 d2a = min(d21, d22);\\n`;\r\n functionString += ` d22 = max(d21, d22);\\n`;\r\n functionString += ` d21 = min(d2a, d23); // Smallest now not in d22 or d23\\n`;\r\n functionString += ` d23 = max(d2a, d23);\\n`;\r\n functionString += ` d22 = min(d22, d23); // 2nd smallest now not in d23\\n`;\r\n functionString += ` vec3 d3a = min(d31, d32);\\n`;\r\n functionString += ` d32 = max(d31, d32);\\n`;\r\n functionString += ` d31 = min(d3a, d33); // Smallest now not in d32 or d33\\n`;\r\n functionString += ` d33 = max(d3a, d33);\\n`;\r\n functionString += ` d32 = min(d32, d33); // 2nd smallest now not in d33\\n`;\r\n functionString += ` vec3 da = min(d11, d21);\\n`;\r\n functionString += ` d21 = max(d11, d21);\\n`;\r\n functionString += ` d11 = min(da, d31); // Smallest now in d11\\n`;\r\n functionString += ` d31 = max(da, d31); // 2nd smallest now not in d31\\n`;\r\n functionString += ` if (d11.x >= d11.y) { vec2 temp = d11.yx; d11.x = temp.x; d11.y = temp.y; }\\n`;\r\n functionString += ` if (d11.x >= d11.z) { vec2 temp = d11.zx; d11.x = temp.x; d11.z = temp.y; }\\n`;\r\n functionString += ` d12 = min(d12, d21); // 2nd smallest now not in d21\\n`;\r\n functionString += ` d12 = min(d12, d22); // nor in d22\\n`;\r\n functionString += ` d12 = min(d12, d31); // nor in d31\\n`;\r\n functionString += ` d12 = min(d12, d32); // nor in d32\\n`;\r\n functionString += ` vec2 temp2 = min(d11.yz, d12.xy); // nor in d12.yz\\n`;\r\n functionString += ` d11.y = temp2.x;\\n`;\r\n functionString += ` d11.z = temp2.y;\\n`;\r\n functionString += ` d11.y = min(d11.y, d12.z); // Only two more to go\\n`;\r\n functionString += ` d11.y = min(d11.y, d11.z); // Done! (Phew!)\\n`;\r\n functionString += ` return sqrt(d11.xy); // F1, F2\\n`;\r\n functionString += `}\\n\\n`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n functionString = state._babylonSLtoWGSL(functionString);\r\n } else {\r\n functionString = state._babylonSLtoGLSL(functionString);\r\n }\r\n\r\n state._emitFunction(\"worley3D\", functionString, \"// Worley3D\");\r\n\r\n const tempVariable = state._getFreeVariableName(\"worleyTemp\");\r\n\r\n state.compilationString += `${state._declareLocalVar(tempVariable, NodeMaterialBlockConnectionPointTypes.Vector2)} = worley(${this.seed.associatedVariableName}, ${this.jitter.associatedVariableName}, ${this.manhattanDistance});\\n`;\r\n\r\n if (this.output.hasEndpoints) {\r\n state.compilationString += state._declareOutput(this.output) + ` = ${tempVariable};\\n`;\r\n }\r\n\r\n if (this.x.hasEndpoints) {\r\n state.compilationString += state._declareOutput(this.x) + ` = ${tempVariable}.x;\\n`;\r\n }\r\n\r\n if (this.y.hasEndpoints) {\r\n state.compilationString += state._declareOutput(this.y) + ` = ${tempVariable}.y;\\n`;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Exposes the properties to the UI?\r\n * @returns - boolean indicating if the block has properties or not\r\n */\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.manhattanDistance = ${this.manhattanDistance};\\n`;\r\n\r\n return codeString;\r\n }\r\n /**\r\n * Exposes the properties to the Serialize?\r\n * @returns - a serialized object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.manhattanDistance = this.manhattanDistance;\r\n\r\n return serializationObject;\r\n }\r\n /**\r\n * Exposes the properties to the deserialize?\r\n * @param serializationObject\r\n * @param scene\r\n * @param rootUrl\r\n */\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.manhattanDistance = serializationObject.manhattanDistance;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WorleyNoise3DBlock\", WorleyNoise3DBlock);\r\n"]}
@@ -95,6 +95,6 @@ export class InstantiateBaseBlock extends NodeGeometryBlock {
95
95
  }
96
96
  }
97
97
  __decorate([
98
- editableInPropertyPage("Evaluate context", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", { notifiers: { rebuild: true } })
98
+ editableInPropertyPage("Evaluate context", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", { embedded: true, notifiers: { rebuild: true } })
99
99
  ], InstantiateBaseBlock.prototype, "evaluateContext", void 0);
100
100
  //# sourceMappingURL=instantiateBaseBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instantiateBaseBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Meshes/Node/Blocks/Instances/instantiateBaseBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,8CAA8C,CAAC;AAGrG,OAAO,EAA0B,sBAAsB,EAAE,gDAAsC;AAG/F;;GAEG;AACH,MAAM,OAAgB,oBAAqB,SAAQ,iBAAiB;IAWhE;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QAZhB;;;WAGG;QAEI,oBAAe,GAAG,IAAI,CAAC;QAS1B,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEhF,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;;OAGG;IACI,gBAAgB;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,iBAAiB;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEkB,mBAAmB;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,sBAAsB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;QAC7I,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;OAGG;IACa,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE3D,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAExC,IAAI,mBAAmB,CAAC,eAAe,KAAK,SAAS,EAAE;YACnD,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;SAC9D;IACL,CAAC;CACJ;AApGU;IADN,sBAAsB,CAAC,kBAAkB,0CAAkC,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;6DAC3F","sourcesContent":["import { NodeGeometryBlock } from \"../../nodeGeometryBlock\";\r\nimport type { NodeGeometryConnectionPoint } from \"../../nodeGeometryBlockConnectionPoint\";\r\nimport { NodeGeometryBlockConnectionPointTypes } from \"../../Enums/nodeGeometryConnectionPointTypes\";\r\nimport type { INodeGeometryExecutionContext } from \"../../Interfaces/nodeGeometryExecutionContext\";\r\nimport type { VertexData } from \"../../../mesh.vertexData\";\r\nimport { PropertyTypeForEdition, editableInPropertyPage } from \"core/Decorators/nodeDecorator\";\r\nimport type { INodeGeometryInstancingContext } from \"../../Interfaces/nodeGeometryInstancingContext\";\r\n\r\n/**\r\n * Block used as a base for InstantiateXXX blocks\r\n */\r\nexport abstract class InstantiateBaseBlock extends NodeGeometryBlock implements INodeGeometryExecutionContext, INodeGeometryInstancingContext {\r\n protected _vertexData: VertexData;\r\n protected _currentIndex: number;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this block can evaluate context\r\n * Build performance is improved when this value is set to false as the system will cache values instead of reevaluating everything per context change\r\n */\r\n @editableInPropertyPage(\"Evaluate context\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { notifiers: { rebuild: true } })\r\n public evaluateContext = true;\r\n\r\n /**\r\n * Create a new InstantiateBaseBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this.registerInput(\"instance\", NodeGeometryBlockConnectionPointTypes.Geometry, true);\r\n this.registerInput(\"count\", NodeGeometryBlockConnectionPointTypes.Int, true, 1);\r\n\r\n this.registerOutput(\"output\", NodeGeometryBlockConnectionPointTypes.Geometry);\r\n }\r\n\r\n /**\r\n * Gets the current instance index in the current flow\r\n * @returns the current index\r\n */\r\n public getInstanceIndex(): number {\r\n return this._currentIndex;\r\n }\r\n\r\n /**\r\n * Gets the current index in the current flow\r\n * @returns the current index\r\n */\r\n public getExecutionIndex(): number {\r\n return this._currentIndex;\r\n }\r\n\r\n /**\r\n * Gets the current loop index in the current flow\r\n * @returns the current loop index\r\n */\r\n public getExecutionLoopIndex(): number {\r\n return this._currentIndex;\r\n }\r\n\r\n /**\r\n * Gets the current face index in the current flow\r\n * @returns the current face index\r\n */\r\n public getExecutionFaceIndex(): number {\r\n return 0;\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 \"InstantiateBaseBlock\";\r\n }\r\n\r\n /**\r\n * Gets the instance input component\r\n */\r\n public get instance(): NodeGeometryConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the count input component\r\n */\r\n public get count(): NodeGeometryConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the geometry output component\r\n */\r\n public get output(): NodeGeometryConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.evaluateContext = ${this.evaluateContext ? \"true\" : \"false\"};\\n`;\r\n return codeString;\r\n }\r\n\r\n /**\r\n * Serializes this block in a JSON representation\r\n * @returns the serialized block object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.evaluateContext = this.evaluateContext;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n if (serializationObject.evaluateContext !== undefined) {\r\n this.evaluateContext = serializationObject.evaluateContext;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"instantiateBaseBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Meshes/Node/Blocks/Instances/instantiateBaseBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,8CAA8C,CAAC;AAGrG,OAAO,EAA0B,sBAAsB,EAAE,gDAAsC;AAG/F;;GAEG;AACH,MAAM,OAAgB,oBAAqB,SAAQ,iBAAiB;IAWhE;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QAZhB;;;WAGG;QAEI,oBAAe,GAAG,IAAI,CAAC;QAS1B,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEhF,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;;OAGG;IACI,gBAAgB;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,iBAAiB;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEkB,mBAAmB;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,sBAAsB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;QAC7I,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;OAGG;IACa,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE3D,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAExC,IAAI,mBAAmB,CAAC,eAAe,KAAK,SAAS,EAAE;YACnD,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;SAC9D;IACL,CAAC;CACJ;AApGU;IADN,sBAAsB,CAAC,kBAAkB,0CAAkC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;6DAC3G","sourcesContent":["import { NodeGeometryBlock } from \"../../nodeGeometryBlock\";\r\nimport type { NodeGeometryConnectionPoint } from \"../../nodeGeometryBlockConnectionPoint\";\r\nimport { NodeGeometryBlockConnectionPointTypes } from \"../../Enums/nodeGeometryConnectionPointTypes\";\r\nimport type { INodeGeometryExecutionContext } from \"../../Interfaces/nodeGeometryExecutionContext\";\r\nimport type { VertexData } from \"../../../mesh.vertexData\";\r\nimport { PropertyTypeForEdition, editableInPropertyPage } from \"core/Decorators/nodeDecorator\";\r\nimport type { INodeGeometryInstancingContext } from \"../../Interfaces/nodeGeometryInstancingContext\";\r\n\r\n/**\r\n * Block used as a base for InstantiateXXX blocks\r\n */\r\nexport abstract class InstantiateBaseBlock extends NodeGeometryBlock implements INodeGeometryExecutionContext, INodeGeometryInstancingContext {\r\n protected _vertexData: VertexData;\r\n protected _currentIndex: number;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this block can evaluate context\r\n * Build performance is improved when this value is set to false as the system will cache values instead of reevaluating everything per context change\r\n */\r\n @editableInPropertyPage(\"Evaluate context\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\r\n public evaluateContext = true;\r\n\r\n /**\r\n * Create a new InstantiateBaseBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this.registerInput(\"instance\", NodeGeometryBlockConnectionPointTypes.Geometry, true);\r\n this.registerInput(\"count\", NodeGeometryBlockConnectionPointTypes.Int, true, 1);\r\n\r\n this.registerOutput(\"output\", NodeGeometryBlockConnectionPointTypes.Geometry);\r\n }\r\n\r\n /**\r\n * Gets the current instance index in the current flow\r\n * @returns the current index\r\n */\r\n public getInstanceIndex(): number {\r\n return this._currentIndex;\r\n }\r\n\r\n /**\r\n * Gets the current index in the current flow\r\n * @returns the current index\r\n */\r\n public getExecutionIndex(): number {\r\n return this._currentIndex;\r\n }\r\n\r\n /**\r\n * Gets the current loop index in the current flow\r\n * @returns the current loop index\r\n */\r\n public getExecutionLoopIndex(): number {\r\n return this._currentIndex;\r\n }\r\n\r\n /**\r\n * Gets the current face index in the current flow\r\n * @returns the current face index\r\n */\r\n public getExecutionFaceIndex(): number {\r\n return 0;\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 \"InstantiateBaseBlock\";\r\n }\r\n\r\n /**\r\n * Gets the instance input component\r\n */\r\n public get instance(): NodeGeometryConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the count input component\r\n */\r\n public get count(): NodeGeometryConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the geometry output component\r\n */\r\n public get output(): NodeGeometryConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.evaluateContext = ${this.evaluateContext ? \"true\" : \"false\"};\\n`;\r\n return codeString;\r\n }\r\n\r\n /**\r\n * Serializes this block in a JSON representation\r\n * @returns the serialized block object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.evaluateContext = this.evaluateContext;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n if (serializationObject.evaluateContext !== undefined) {\r\n this.evaluateContext = serializationObject.evaluateContext;\r\n }\r\n }\r\n}\r\n"]}
@@ -196,6 +196,7 @@ export class AggregatorBlock extends NodeGeometryBlock {
196
196
  __decorate([
197
197
  editableInPropertyPage("Aggregation", 4 /* PropertyTypeForEdition.List */, "ADVANCED", {
198
198
  notifiers: { rebuild: true },
199
+ embedded: true,
199
200
  options: [
200
201
  { label: "Max", value: Aggregations.Max },
201
202
  { label: "Min", value: Aggregations.Min },