@babylonjs/core 7.35.2 → 7.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/Collisions/gpuPicker.js.map +1 -1
  2. package/Engines/Extensions/engine.multiRender.d.ts +11 -0
  3. package/Engines/Extensions/engine.multiRender.js +71 -32
  4. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  5. package/Engines/Extensions/engine.rawTexture.d.ts +8 -8
  6. package/Engines/Extensions/engine.rawTexture.js.map +1 -1
  7. package/Engines/Extensions/engine.renderTarget.js +1 -13
  8. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  9. package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
  10. package/Engines/WebGL/webGLRenderTargetWrapper.d.ts +2 -0
  11. package/Engines/WebGL/webGLRenderTargetWrapper.js +37 -7
  12. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  13. package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +11 -0
  14. package/Engines/WebGPU/Extensions/engine.multiRender.js +30 -11
  15. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  16. package/Engines/WebGPU/Extensions/engine.rawTexture.d.ts +9 -9
  17. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  18. package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -5
  19. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  20. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
  21. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -2
  22. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  23. package/Engines/WebGPU/webgpuConstants.d.ts +6 -0
  24. package/Engines/WebGPU/webgpuConstants.js +6 -0
  25. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  26. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +3 -1
  27. package/Engines/WebGPU/webgpuHardwareTexture.js +5 -4
  28. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  29. package/Engines/WebGPU/webgpuTextureHelper.js +18 -0
  30. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  31. package/Engines/WebGPU/webgpuTextureManager.js +8 -2
  32. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  33. package/Engines/abstractEngine.d.ts +12 -1
  34. package/Engines/abstractEngine.js +4 -4
  35. package/Engines/abstractEngine.js.map +1 -1
  36. package/Engines/constants.d.ts +17 -1
  37. package/Engines/constants.js +17 -1
  38. package/Engines/constants.js.map +1 -1
  39. package/Engines/engine.d.ts +31 -1
  40. package/Engines/engine.js +17 -1
  41. package/Engines/engine.js.map +1 -1
  42. package/Engines/engineCapabilities.d.ts +2 -0
  43. package/Engines/engineCapabilities.js.map +1 -1
  44. package/Engines/nativeEngine.js +1 -0
  45. package/Engines/nativeEngine.js.map +1 -1
  46. package/Engines/nullEngine.d.ts +2 -2
  47. package/Engines/nullEngine.js +3 -2
  48. package/Engines/nullEngine.js.map +1 -1
  49. package/Engines/renderTargetWrapper.d.ts +33 -1
  50. package/Engines/renderTargetWrapper.js +64 -4
  51. package/Engines/renderTargetWrapper.js.map +1 -1
  52. package/Engines/thinEngine.d.ts +13 -1
  53. package/Engines/thinEngine.functions.d.ts +4 -0
  54. package/Engines/thinEngine.functions.js +17 -0
  55. package/Engines/thinEngine.functions.js.map +1 -1
  56. package/Engines/thinEngine.js +151 -32
  57. package/Engines/thinEngine.js.map +1 -1
  58. package/Engines/thinWebGPUEngine.d.ts +2 -0
  59. package/Engines/thinWebGPUEngine.js +7 -0
  60. package/Engines/thinWebGPUEngine.js.map +1 -1
  61. package/Engines/webgpuEngine.d.ts +12 -3
  62. package/Engines/webgpuEngine.js +40 -9
  63. package/Engines/webgpuEngine.js.map +1 -1
  64. package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +8 -0
  65. package/FrameGraph/Node/Blocks/Textures/clearBlock.js +22 -1
  66. package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
  67. package/FrameGraph/Node/Blocks/inputBlock.d.ts +4 -9
  68. package/FrameGraph/Node/Blocks/inputBlock.js +15 -25
  69. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  70. package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js +10 -2
  71. package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js.map +1 -1
  72. package/FrameGraph/Passes/renderPass.d.ts +10 -10
  73. package/FrameGraph/Passes/renderPass.js +10 -10
  74. package/FrameGraph/Passes/renderPass.js.map +1 -1
  75. package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +10 -5
  76. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +29 -14
  77. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  78. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +4 -0
  79. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
  80. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +11 -6
  81. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +30 -13
  82. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  83. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +4 -6
  84. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  85. package/FrameGraph/Tasks/Rendering/cullObjectsTask.d.ts +1 -1
  86. package/FrameGraph/Tasks/Rendering/cullObjectsTask.js.map +1 -1
  87. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +3 -3
  88. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +33 -32
  89. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  90. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -2
  91. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +8 -12
  92. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  93. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +13 -18
  94. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  95. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +15 -2
  96. package/FrameGraph/Tasks/Texture/clearTextureTask.js +17 -4
  97. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  98. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +2 -2
  99. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  100. package/FrameGraph/Tasks/Texture/generateMipMapsTask.js +3 -3
  101. package/FrameGraph/Tasks/Texture/generateMipMapsTask.js.map +1 -1
  102. package/FrameGraph/frameGraph.d.ts +11 -74
  103. package/FrameGraph/frameGraph.js +12 -126
  104. package/FrameGraph/frameGraph.js.map +1 -1
  105. package/FrameGraph/frameGraphRenderContext.d.ts +17 -8
  106. package/FrameGraph/frameGraphRenderContext.js +55 -43
  107. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  108. package/FrameGraph/frameGraphRenderTarget.d.ts +16 -0
  109. package/FrameGraph/frameGraphRenderTarget.js +67 -0
  110. package/FrameGraph/frameGraphRenderTarget.js.map +1 -0
  111. package/FrameGraph/frameGraphTask.d.ts +4 -3
  112. package/FrameGraph/frameGraphTask.js +41 -8
  113. package/FrameGraph/frameGraphTask.js.map +1 -1
  114. package/FrameGraph/frameGraphTextureManager.d.ts +130 -22
  115. package/FrameGraph/frameGraphTextureManager.js +312 -130
  116. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  117. package/FrameGraph/frameGraphTypes.d.ts +28 -13
  118. package/FrameGraph/frameGraphTypes.js.map +1 -1
  119. package/FrameGraph/index.d.ts +1 -0
  120. package/FrameGraph/index.js +1 -0
  121. package/FrameGraph/index.js.map +1 -1
  122. package/Helpers/environmentHelper.js.map +1 -1
  123. package/Layers/effectLayer.d.ts +1 -1
  124. package/Layers/effectLayer.js.map +1 -1
  125. package/Layers/glowLayer.d.ts +1 -1
  126. package/Layers/glowLayer.js.map +1 -1
  127. package/Layers/highlightLayer.d.ts +1 -1
  128. package/Layers/highlightLayer.js.map +1 -1
  129. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  130. package/Materials/Node/Blocks/conditionalBlock.d.ts +2 -0
  131. package/Materials/Node/Blocks/conditionalBlock.js +13 -0
  132. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  133. package/Materials/Node/nodeMaterial.js.map +1 -1
  134. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +12 -4
  135. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  136. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  137. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  138. package/Materials/Textures/baseTexture.js.map +1 -1
  139. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  140. package/Materials/Textures/internalTexture.d.ts +20 -0
  141. package/Materials/Textures/internalTexture.js +48 -0
  142. package/Materials/Textures/internalTexture.js.map +1 -1
  143. package/Materials/Textures/mirrorTexture.js.map +1 -1
  144. package/Materials/Textures/multiRenderTarget.d.ts +5 -0
  145. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  146. package/Materials/Textures/rawCubeTexture.d.ts +2 -2
  147. package/Materials/Textures/rawCubeTexture.js +2 -2
  148. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  149. package/Materials/Textures/rawTexture.js.map +1 -1
  150. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  151. package/Materials/Textures/rawTexture2DArray.js +1 -1
  152. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  153. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  154. package/Materials/Textures/rawTexture3D.js +1 -1
  155. package/Materials/Textures/rawTexture3D.js.map +1 -1
  156. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  157. package/Materials/Textures/textureCreationOptions.d.ts +6 -6
  158. package/Materials/Textures/textureCreationOptions.js.map +1 -1
  159. package/Materials/drawWrapper.d.ts +6 -1
  160. package/Materials/drawWrapper.js +18 -2
  161. package/Materials/drawWrapper.js.map +1 -1
  162. package/Materials/effect.d.ts +6 -1
  163. package/Materials/effect.functions.d.ts +5 -0
  164. package/Materials/effect.functions.js +19 -0
  165. package/Materials/effect.functions.js.map +1 -1
  166. package/Materials/effect.js +22 -20
  167. package/Materials/effect.js.map +1 -1
  168. package/Materials/effect.webgl.functions.js +12 -4
  169. package/Materials/effect.webgl.functions.js.map +1 -1
  170. package/Maths/math.color.d.ts +16 -0
  171. package/Maths/math.color.js +16 -0
  172. package/Maths/math.color.js.map +1 -1
  173. package/Maths/math.vector.d.ts +32 -0
  174. package/Maths/math.vector.js +32 -0
  175. package/Maths/math.vector.js.map +1 -1
  176. package/Meshes/Compression/dracoCompression.d.ts +3 -1
  177. package/Meshes/Compression/dracoCompression.js +5 -2
  178. package/Meshes/Compression/dracoCompression.js.map +1 -1
  179. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +2 -1
  180. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -0
  181. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  182. package/Meshes/Node/Blocks/Matrices/rotationXBlock.d.ts +0 -1
  183. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js +1 -9
  184. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -1
  185. package/Meshes/Node/Blocks/Matrices/rotationYBlock.d.ts +0 -1
  186. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js +1 -9
  187. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -1
  188. package/Meshes/Node/Blocks/Matrices/rotationZBlock.d.ts +0 -1
  189. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js +1 -9
  190. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -1
  191. package/Meshes/Node/Blocks/Set/latticeBlock.js +3 -1
  192. package/Meshes/Node/Blocks/Set/latticeBlock.js.map +1 -1
  193. package/Meshes/Node/Blocks/conditionBlock.d.ts +2 -0
  194. package/Meshes/Node/Blocks/conditionBlock.js +15 -0
  195. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  196. package/Meshes/Node/Blocks/geometryClampBlock.d.ts +4 -4
  197. package/Meshes/Node/Blocks/geometryClampBlock.js +16 -25
  198. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  199. package/Meshes/Node/Blocks/geometryLerpBlock.js +2 -2
  200. package/Meshes/Node/Blocks/geometryLerpBlock.js.map +1 -1
  201. package/Meshes/Node/Blocks/geometryNLerpBlock.js +2 -2
  202. package/Meshes/Node/Blocks/geometryNLerpBlock.js.map +1 -1
  203. package/Meshes/Node/Blocks/geometryReplaceColorBlock.js +2 -2
  204. package/Meshes/Node/Blocks/geometryReplaceColorBlock.js.map +1 -1
  205. package/Meshes/Node/Blocks/geometryRotate2dBlock.js +2 -2
  206. package/Meshes/Node/Blocks/geometryRotate2dBlock.js.map +1 -1
  207. package/Meshes/Node/Blocks/geometrySmoothStepBlock.js +3 -3
  208. package/Meshes/Node/Blocks/geometrySmoothStepBlock.js.map +1 -1
  209. package/Meshes/Node/Blocks/geometryStepBlock.js +2 -2
  210. package/Meshes/Node/Blocks/geometryStepBlock.js.map +1 -1
  211. package/Meshes/Node/nodeGeometry.js +1 -1
  212. package/Meshes/Node/nodeGeometry.js.map +1 -1
  213. package/Meshes/Node/nodeGeometryBlock.d.ts +3 -1
  214. package/Meshes/Node/nodeGeometryBlock.js +2 -1
  215. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  216. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +10 -2
  217. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -1
  218. package/Meshes/abstractMesh.d.ts +5 -3
  219. package/Meshes/abstractMesh.js +9 -7
  220. package/Meshes/abstractMesh.js.map +1 -1
  221. package/Meshes/subMesh.d.ts +5 -3
  222. package/Meshes/subMesh.js +9 -7
  223. package/Meshes/subMesh.js.map +1 -1
  224. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  225. package/Misc/dds.d.ts +1 -1
  226. package/Misc/dds.js.map +1 -1
  227. package/Misc/environmentTextureTools.js.map +1 -1
  228. package/Misc/observable.d.ts +1 -3
  229. package/Misc/observable.js +9 -7
  230. package/Misc/observable.js.map +1 -1
  231. package/Misc/screenshotTools.js.map +1 -1
  232. package/Misc/snapshotRenderingHelper.js +3 -0
  233. package/Misc/snapshotRenderingHelper.js.map +1 -1
  234. package/Misc/textureTools.js.map +1 -1
  235. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  236. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -1
  237. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  238. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  239. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  240. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  241. package/PostProcesses/blurPostProcess.js.map +1 -1
  242. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  243. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  244. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  245. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  246. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  247. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  248. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  249. package/PostProcesses/grainPostProcess.js.map +1 -1
  250. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  251. package/PostProcesses/highlightsPostProcess.js +1 -1
  252. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  253. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  254. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  255. package/PostProcesses/passPostProcess.js.map +1 -1
  256. package/PostProcesses/postProcess.d.ts +1 -1
  257. package/PostProcesses/postProcess.js.map +1 -1
  258. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  259. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  260. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  261. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  262. package/PostProcesses/tonemapPostProcess.d.ts +1 -1
  263. package/PostProcesses/tonemapPostProcess.js +1 -1
  264. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  265. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  266. package/Rendering/IBLShadows/iblShadowsImportanceSamplingRenderer.js.map +1 -1
  267. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  268. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  269. package/Rendering/prePassRenderer.js.map +1 -1
  270. package/ShadersWGSL/pbr.fragment.js +4 -3
  271. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  272. package/package.json +1 -1
@@ -2,6 +2,7 @@ import { NodeMaterialBlock } from "../nodeMaterialBlock";
2
2
  import type { NodeMaterialBuildState } from "../nodeMaterialBuildState";
3
3
  import type { NodeMaterialConnectionPoint } from "../nodeMaterialBlockConnectionPoint";
4
4
  import type { Scene } from "../../../scene";
5
+ import type { NodeMaterial } from "../nodeMaterial";
5
6
  /**
6
7
  * Operations supported by the ConditionalBlock block
7
8
  */
@@ -64,6 +65,7 @@ export declare class ConditionalBlock extends NodeMaterialBlock {
64
65
  * Gets the output component
65
66
  */
66
67
  get output(): NodeMaterialConnectionPoint;
68
+ autoConfigure(nodeMaterial: NodeMaterial): void;
67
69
  protected _buildBlock(state: NodeMaterialBuildState): this;
68
70
  serialize(): any;
69
71
  _deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
@@ -4,6 +4,7 @@ import { NodeMaterialBlockConnectionPointTypes } from "../Enums/nodeMaterialBloc
4
4
  import { NodeMaterialBlockTargets } from "../Enums/nodeMaterialBlockTargets.js";
5
5
  import { RegisterClass } from "../../../Misc/typeStore.js";
6
6
  import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
7
+ import { InputBlock } from "./Input/inputBlock.js";
7
8
  /**
8
9
  * Operations supported by the ConditionalBlock block
9
10
  */
@@ -89,6 +90,18 @@ export class ConditionalBlock extends NodeMaterialBlock {
89
90
  get output() {
90
91
  return this._outputs[0];
91
92
  }
93
+ autoConfigure(nodeMaterial) {
94
+ if (!this.true.isConnected) {
95
+ const minInput = nodeMaterial.getBlockByPredicate((b) => b.isInput && b.value === 1 && b.name === "True") || new InputBlock("True");
96
+ minInput.value = 1;
97
+ minInput.output.connectTo(this.true);
98
+ }
99
+ if (!this.false.isConnected) {
100
+ const maxInput = nodeMaterial.getBlockByPredicate((b) => b.isInput && b.value === 0 && b.name === "False") || new InputBlock("False");
101
+ maxInput.value = 0;
102
+ maxInput.output.connectTo(this.false);
103
+ }
104
+ }
92
105
  _buildBlock(state) {
93
106
  super._buildBlock(state);
94
107
  const output = this._outputs[0];
@@ -1 +1 @@
1
- {"version":3,"file":"conditionalBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/conditionalBlock.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 ConditionalBlock block\r\n */\r\nexport enum ConditionalBlockConditions {\r\n /** Equal */\r\n Equal,\r\n /** NotEqual */\r\n NotEqual,\r\n /** LessThan */\r\n LessThan,\r\n /** GreaterThan */\r\n GreaterThan,\r\n /** LessOrEqual */\r\n LessOrEqual,\r\n /** GreaterOrEqual */\r\n GreaterOrEqual,\r\n /** Logical Exclusive OR */\r\n Xor,\r\n /** Logical Or */\r\n Or,\r\n /** Logical And */\r\n And,\r\n}\r\n\r\n/**\r\n * Block used to apply conditional operation between floats\r\n * @since 5.0.0\r\n */\r\nexport class ConditionalBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the condition applied by the block\r\n */\r\n @editableInPropertyPage(\"Condition\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"Equal\", value: ConditionalBlockConditions.Equal },\r\n { label: \"NotEqual\", value: ConditionalBlockConditions.NotEqual },\r\n { label: \"LessThan\", value: ConditionalBlockConditions.LessThan },\r\n { label: \"GreaterThan\", value: ConditionalBlockConditions.GreaterThan },\r\n { label: \"LessOrEqual\", value: ConditionalBlockConditions.LessOrEqual },\r\n { label: \"GreaterOrEqual\", value: ConditionalBlockConditions.GreaterOrEqual },\r\n { label: \"Xor\", value: ConditionalBlockConditions.Xor },\r\n { label: \"And\", value: ConditionalBlockConditions.And },\r\n { label: \"Or\", value: ConditionalBlockConditions.Or },\r\n ],\r\n })\r\n public condition = ConditionalBlockConditions.LessThan;\r\n\r\n /**\r\n * Creates a new ConditionalBlock\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(\"a\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"true\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"false\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._linkConnectionTypes(2, 3);\r\n this._outputs[0]._typeConnectionSource = this._inputs[2];\r\n this._outputs[0]._defaultConnectionPointType = 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 \"ConditionalBlock\";\r\n }\r\n\r\n /**\r\n * Gets the first operand component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the second operand component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is true\r\n */\r\n public get true(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is false\r\n */\r\n public get false(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\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 const trueStatement = this.true.isConnected ? this.true.associatedVariableName : \"1.0\";\r\n const falseStatement = this.false.isConnected ? this.false.associatedVariableName : \"0.0\";\r\n\r\n switch (this.condition) {\r\n case ConditionalBlockConditions.Equal: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} == ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.NotEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} != ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessThan: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} < ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessOrEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} <= ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterThan: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} > ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterOrEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} >= ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Xor: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `(((${this.a.associatedVariableName} + ${this.b.associatedVariableName}) % 2.0) > 0.0)`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Or: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `(min(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 1.0) > 0.0)`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.And: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `(${this.a.associatedVariableName} * ${this.b.associatedVariableName} > 0.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.condition = this.condition;\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.condition = serializationObject.condition;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.condition = BABYLON.ConditionalBlockConditions.${ConditionalBlockConditions[this.condition]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ConditionalBlock\", ConditionalBlock);\r\n"]}
1
+ {"version":3,"file":"conditionalBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/conditionalBlock.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\nimport type { NodeMaterial } from \"../nodeMaterial\";\r\nimport { InputBlock } from \"./Input/inputBlock\";\r\n\r\n/**\r\n * Operations supported by the ConditionalBlock block\r\n */\r\nexport enum ConditionalBlockConditions {\r\n /** Equal */\r\n Equal,\r\n /** NotEqual */\r\n NotEqual,\r\n /** LessThan */\r\n LessThan,\r\n /** GreaterThan */\r\n GreaterThan,\r\n /** LessOrEqual */\r\n LessOrEqual,\r\n /** GreaterOrEqual */\r\n GreaterOrEqual,\r\n /** Logical Exclusive OR */\r\n Xor,\r\n /** Logical Or */\r\n Or,\r\n /** Logical And */\r\n And,\r\n}\r\n\r\n/**\r\n * Block used to apply conditional operation between floats\r\n * @since 5.0.0\r\n */\r\nexport class ConditionalBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the condition applied by the block\r\n */\r\n @editableInPropertyPage(\"Condition\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"Equal\", value: ConditionalBlockConditions.Equal },\r\n { label: \"NotEqual\", value: ConditionalBlockConditions.NotEqual },\r\n { label: \"LessThan\", value: ConditionalBlockConditions.LessThan },\r\n { label: \"GreaterThan\", value: ConditionalBlockConditions.GreaterThan },\r\n { label: \"LessOrEqual\", value: ConditionalBlockConditions.LessOrEqual },\r\n { label: \"GreaterOrEqual\", value: ConditionalBlockConditions.GreaterOrEqual },\r\n { label: \"Xor\", value: ConditionalBlockConditions.Xor },\r\n { label: \"And\", value: ConditionalBlockConditions.And },\r\n { label: \"Or\", value: ConditionalBlockConditions.Or },\r\n ],\r\n })\r\n public condition = ConditionalBlockConditions.LessThan;\r\n\r\n /**\r\n * Creates a new ConditionalBlock\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(\"a\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this.registerInput(\"true\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"false\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._linkConnectionTypes(2, 3);\r\n this._outputs[0]._typeConnectionSource = this._inputs[2];\r\n this._outputs[0]._defaultConnectionPointType = 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 \"ConditionalBlock\";\r\n }\r\n\r\n /**\r\n * Gets the first operand component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the second operand component\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is true\r\n */\r\n public get true(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the value to return if condition is false\r\n */\r\n public get false(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\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 public override autoConfigure(nodeMaterial: NodeMaterial) {\r\n if (!this.true.isConnected) {\r\n const minInput = (nodeMaterial.getBlockByPredicate((b) => b.isInput && (b as InputBlock).value === 1 && b.name === \"True\") as InputBlock) || new InputBlock(\"True\");\r\n minInput.value = 1;\r\n minInput.output.connectTo(this.true);\r\n }\r\n\r\n if (!this.false.isConnected) {\r\n const maxInput = (nodeMaterial.getBlockByPredicate((b) => b.isInput && (b as InputBlock).value === 0 && b.name === \"False\") as InputBlock) || new InputBlock(\"False\");\r\n maxInput.value = 0;\r\n maxInput.output.connectTo(this.false);\r\n }\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 const trueStatement = this.true.isConnected ? this.true.associatedVariableName : \"1.0\";\r\n const falseStatement = this.false.isConnected ? this.false.associatedVariableName : \"0.0\";\r\n\r\n switch (this.condition) {\r\n case ConditionalBlockConditions.Equal: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} == ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.NotEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} != ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessThan: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} < ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.LessOrEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} <= ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterThan: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} > ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.GreaterOrEqual: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `${this.a.associatedVariableName} >= ${this.b.associatedVariableName}`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Xor: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `(((${this.a.associatedVariableName} + ${this.b.associatedVariableName}) % 2.0) > 0.0)`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.Or: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `(min(${this.a.associatedVariableName} + ${this.b.associatedVariableName}, 1.0) > 0.0)`)};\\n`;\r\n break;\r\n }\r\n case ConditionalBlockConditions.And: {\r\n state.compilationString +=\r\n state._declareOutput(output) +\r\n ` = ${state._generateTernary(trueStatement, falseStatement, `(${this.a.associatedVariableName} * ${this.b.associatedVariableName} > 0.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.condition = this.condition;\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.condition = serializationObject.condition;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString =\r\n super._dumpPropertiesCode() + `${this._codeVariableName}.condition = BABYLON.ConditionalBlockConditions.${ConditionalBlockConditions[this.condition]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ConditionalBlock\", ConditionalBlock);\r\n"]}