@babylonjs/core 5.0.0-alpha.57 → 5.0.0-alpha.58

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 (237) hide show
  1. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +0 -1
  2. package/Cameras/Inputs/BaseCameraPointersInput.js +5 -5
  3. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  4. package/Cameras/Inputs/freeCameraMouseInput.d.ts +0 -1
  5. package/Cameras/Inputs/freeCameraMouseInput.js +27 -28
  6. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  7. package/Cameras/camera.d.ts +4 -0
  8. package/Cameras/camera.js +2 -0
  9. package/Cameras/camera.js.map +1 -1
  10. package/Culling/boundingBox.d.ts +7 -1
  11. package/Culling/boundingBox.js +4 -0
  12. package/Culling/boundingBox.js.map +1 -1
  13. package/DeviceInput/Helpers/eventFactory.js +1 -2
  14. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  15. package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +1 -0
  16. package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -12
  17. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  18. package/DeviceInput/InputDevices/deviceEnums.d.ts +1 -3
  19. package/DeviceInput/InputDevices/deviceEnums.js +0 -2
  20. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  21. package/Engines/IDrawContext.d.ts +3 -0
  22. package/Engines/IDrawContext.js.map +1 -1
  23. package/Engines/WebGPU/Extensions/engine.alpha.js +1 -1
  24. package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
  25. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +1 -1
  26. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  27. package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +1 -1
  28. package/Engines/WebGPU/Extensions/engine.uniformBuffer.js.map +1 -1
  29. package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -0
  30. package/Engines/WebGPU/webgpuBufferManager.js +3 -0
  31. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  32. package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +3 -2
  33. package/Engines/WebGPU/webgpuCacheBindGroups.js +15 -14
  34. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  35. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +2 -0
  36. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +17 -0
  37. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  38. package/Engines/WebGPU/webgpuDrawContext.d.ts +21 -2
  39. package/Engines/WebGPU/webgpuDrawContext.js +67 -1
  40. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  41. package/Engines/WebGPU/webgpuMaterialContext.d.ts +0 -6
  42. package/Engines/WebGPU/webgpuMaterialContext.js +0 -6
  43. package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
  44. package/Engines/WebGPU/webgpuShaderProcessor.d.ts +1 -0
  45. package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
  46. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  47. package/Engines/WebGPU/webgpuTextureHelper.js +1 -1
  48. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  49. package/Engines/constants.d.ts +1 -7
  50. package/Engines/constants.js +1 -7
  51. package/Engines/constants.js.map +1 -1
  52. package/Engines/engine.d.ts +37 -2
  53. package/Engines/engine.js +68 -0
  54. package/Engines/engine.js.map +1 -1
  55. package/Engines/engineFeatures.d.ts +2 -0
  56. package/Engines/engineFeatures.js.map +1 -1
  57. package/Engines/nativeEngine.js +1 -0
  58. package/Engines/nativeEngine.js.map +1 -1
  59. package/Engines/nullEngine.js +1 -0
  60. package/Engines/nullEngine.js.map +1 -1
  61. package/Engines/thinEngine.d.ts +4 -0
  62. package/Engines/thinEngine.js +3 -2
  63. package/Engines/thinEngine.js.map +1 -1
  64. package/Engines/webgpuEngine.d.ts +14 -6
  65. package/Engines/webgpuEngine.js +107 -57
  66. package/Engines/webgpuEngine.js.map +1 -1
  67. package/Inputs/scene.inputManager.js +2 -3
  68. package/Inputs/scene.inputManager.js.map +1 -1
  69. package/Layers/effectLayer.d.ts +0 -2
  70. package/Layers/effectLayer.js +12 -11
  71. package/Layers/effectLayer.js.map +1 -1
  72. package/Layers/effectLayerSceneComponent.js +5 -0
  73. package/Layers/effectLayerSceneComponent.js.map +1 -1
  74. package/Layers/glowLayer.js +2 -0
  75. package/Layers/glowLayer.js.map +1 -1
  76. package/Layers/highlightLayer.js +2 -0
  77. package/Layers/highlightLayer.js.map +1 -1
  78. package/LensFlares/lensFlare.d.ts +3 -0
  79. package/LensFlares/lensFlare.js +5 -0
  80. package/LensFlares/lensFlare.js.map +1 -1
  81. package/LensFlares/lensFlareSystem.d.ts +2 -1
  82. package/LensFlares/lensFlareSystem.js +15 -12
  83. package/LensFlares/lensFlareSystem.js.map +1 -1
  84. package/Lights/Shadows/cascadedShadowGenerator.d.ts +0 -2
  85. package/Lights/Shadows/cascadedShadowGenerator.js +3 -12
  86. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  87. package/Lights/Shadows/shadowGenerator.d.ts +0 -3
  88. package/Lights/Shadows/shadowGenerator.js +8 -14
  89. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  90. package/Lights/light.js +3 -0
  91. package/Lights/light.js.map +1 -1
  92. package/Loading/Plugins/babylonFileLoader.js +3 -0
  93. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  94. package/Materials/Background/backgroundMaterial.js +8 -11
  95. package/Materials/Background/backgroundMaterial.js.map +1 -1
  96. package/Materials/Node/Blocks/PBR/reflectionBlock.js +1 -1
  97. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  98. package/Materials/Node/Blocks/cloudBlock.d.ts +4 -0
  99. package/Materials/Node/Blocks/cloudBlock.js +27 -8
  100. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  101. package/Materials/Node/Blocks/colorMergerBlock.d.ts +21 -0
  102. package/Materials/Node/Blocks/colorMergerBlock.js +48 -4
  103. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  104. package/Materials/Node/Blocks/vectorMergerBlock.d.ts +25 -0
  105. package/Materials/Node/Blocks/vectorMergerBlock.js +93 -23
  106. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  107. package/Materials/Node/nodeMaterial.js +4 -4
  108. package/Materials/Node/nodeMaterial.js.map +1 -1
  109. package/Materials/PBR/pbrBaseMaterial.js +8 -4
  110. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  111. package/Materials/PBR/pbrClearCoatConfiguration.js +1 -1
  112. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  113. package/Materials/PBR/pbrSheenConfiguration.js +1 -1
  114. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  115. package/Materials/PBR/pbrSubSurfaceConfiguration.js +1 -1
  116. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  117. package/Materials/Textures/baseTexture.d.ts +2 -0
  118. package/Materials/Textures/baseTexture.js +2 -0
  119. package/Materials/Textures/baseTexture.js.map +1 -1
  120. package/Materials/Textures/renderTargetTexture.d.ts +27 -0
  121. package/Materials/Textures/renderTargetTexture.js +127 -14
  122. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  123. package/Materials/Textures/texture.js +11 -4
  124. package/Materials/Textures/texture.js.map +1 -1
  125. package/Materials/drawWrapper.d.ts +2 -1
  126. package/Materials/drawWrapper.js +10 -1
  127. package/Materials/drawWrapper.js.map +1 -1
  128. package/Materials/material.d.ts +3 -1
  129. package/Materials/material.detailMapConfiguration.d.ts +1 -1
  130. package/Materials/material.detailMapConfiguration.js +2 -2
  131. package/Materials/material.detailMapConfiguration.js.map +1 -1
  132. package/Materials/material.js +18 -9
  133. package/Materials/material.js.map +1 -1
  134. package/Materials/pushMaterial.js +1 -1
  135. package/Materials/pushMaterial.js.map +1 -1
  136. package/Materials/shaderMaterial.d.ts +0 -1
  137. package/Materials/shaderMaterial.js +3 -4
  138. package/Materials/shaderMaterial.js.map +1 -1
  139. package/Materials/shadowDepthWrapper.d.ts +4 -4
  140. package/Materials/shadowDepthWrapper.js +16 -15
  141. package/Materials/shadowDepthWrapper.js.map +1 -1
  142. package/Materials/standardMaterial.js +8 -4
  143. package/Materials/standardMaterial.js.map +1 -1
  144. package/Materials/uniformBuffer.d.ts +10 -2
  145. package/Materials/uniformBuffer.js +17 -11
  146. package/Materials/uniformBuffer.js.map +1 -1
  147. package/Meshes/abstractMesh.d.ts +13 -0
  148. package/Meshes/abstractMesh.js +22 -2
  149. package/Meshes/abstractMesh.js.map +1 -1
  150. package/Meshes/linesMesh.js +1 -1
  151. package/Meshes/linesMesh.js.map +1 -1
  152. package/Meshes/mesh.js +15 -0
  153. package/Meshes/mesh.js.map +1 -1
  154. package/Meshes/subMesh.d.ts +10 -9
  155. package/Meshes/subMesh.js +44 -43
  156. package/Meshes/subMesh.js.map +1 -1
  157. package/Misc/environmentTextureTools.js +1 -0
  158. package/Misc/environmentTextureTools.js.map +1 -1
  159. package/Misc/rgbdTextureTools.js +1 -0
  160. package/Misc/rgbdTextureTools.js.map +1 -1
  161. package/Misc/sceneSerializer.js +17 -17
  162. package/Misc/sceneSerializer.js.map +1 -1
  163. package/Misc/textureTools.js +2 -0
  164. package/Misc/textureTools.js.map +1 -1
  165. package/Particles/gpuParticleSystem.d.ts +5 -1
  166. package/Particles/gpuParticleSystem.js +31 -5
  167. package/Particles/gpuParticleSystem.js.map +1 -1
  168. package/Particles/particleSystem.d.ts +5 -1
  169. package/Particles/particleSystem.js +35 -5
  170. package/Particles/particleSystem.js.map +1 -1
  171. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +2 -0
  172. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  173. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +1 -0
  174. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  175. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -0
  176. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  177. package/PostProcesses/bloomMergePostProcess.js +1 -0
  178. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  179. package/PostProcesses/depthOfFieldBlurPostProcess.js +1 -0
  180. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  181. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -0
  182. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  183. package/PostProcesses/extractHighlightsPostProcess.js +1 -0
  184. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  185. package/PostProcesses/postProcess.d.ts +6 -0
  186. package/PostProcesses/postProcess.js +9 -1
  187. package/PostProcesses/postProcess.js.map +1 -1
  188. package/PostProcesses/screenSpaceReflectionPostProcess.js +1 -1
  189. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  190. package/PostProcesses/tonemapPostProcess.d.ts +2 -1
  191. package/PostProcesses/tonemapPostProcess.js +3 -2
  192. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  193. package/Rendering/boundingBoxRenderer.d.ts +5 -3
  194. package/Rendering/boundingBoxRenderer.js +46 -14
  195. package/Rendering/boundingBoxRenderer.js.map +1 -1
  196. package/Rendering/depthRenderer.d.ts +9 -2
  197. package/Rendering/depthRenderer.js +77 -43
  198. package/Rendering/depthRenderer.js.map +1 -1
  199. package/Rendering/depthRendererSceneComponent.js +0 -1
  200. package/Rendering/depthRendererSceneComponent.js.map +1 -1
  201. package/Rendering/edgesRenderer.d.ts +2 -0
  202. package/Rendering/edgesRenderer.js +11 -0
  203. package/Rendering/edgesRenderer.js.map +1 -1
  204. package/Rendering/geometryBufferRenderer.js +1 -1
  205. package/Rendering/geometryBufferRenderer.js.map +1 -1
  206. package/Rendering/outlineRenderer.d.ts +5 -4
  207. package/Rendering/outlineRenderer.js +24 -19
  208. package/Rendering/outlineRenderer.js.map +1 -1
  209. package/Rendering/prePassRenderer.js +2 -1
  210. package/Rendering/prePassRenderer.js.map +1 -1
  211. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.d.ts +5 -0
  212. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +7 -0
  213. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -0
  214. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.d.ts +5 -0
  215. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +7 -0
  216. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -0
  217. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.d.ts +5 -0
  218. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +7 -0
  219. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -0
  220. package/Shaders/boundingBoxRenderer.fragment.d.ts +7 -0
  221. package/Shaders/boundingBoxRenderer.fragment.js +9 -0
  222. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -0
  223. package/Shaders/boundingBoxRenderer.vertex.d.ts +7 -0
  224. package/Shaders/boundingBoxRenderer.vertex.js +9 -0
  225. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -0
  226. package/Sprites/spriteManager.d.ts +3 -1
  227. package/Sprites/spriteManager.js +16 -5
  228. package/Sprites/spriteManager.js.map +1 -1
  229. package/Sprites/spriteRenderer.d.ts +1 -0
  230. package/Sprites/spriteRenderer.js +14 -0
  231. package/Sprites/spriteRenderer.js.map +1 -1
  232. package/XR/features/WebXRWalkingLocomotion.js +28 -13
  233. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  234. package/package.json +16 -1
  235. package/scene.d.ts +18 -4
  236. package/scene.js +99 -34
  237. package/scene.js.map +1 -1
@@ -18,12 +18,14 @@ var CloudBlock = /** @class */ (function (_super) {
18
18
  /** Gets or sets the number of octaves */
19
19
  _this.octaves = 6.0;
20
20
  _this.registerInput("seed", NodeMaterialBlockConnectionPointTypes.AutoDetect);
21
+ _this.registerInput("chaos", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);
21
22
  _this.registerInput("offsetX", NodeMaterialBlockConnectionPointTypes.Float, true);
22
23
  _this.registerInput("offsetY", NodeMaterialBlockConnectionPointTypes.Float, true);
23
24
  _this.registerInput("offsetZ", NodeMaterialBlockConnectionPointTypes.Float, true);
24
- _this.registerOutput("output", NodeMaterialBlockConnectionPointTypes.Vector3);
25
+ _this.registerOutput("output", NodeMaterialBlockConnectionPointTypes.Float);
25
26
  _this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);
26
27
  _this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);
28
+ _this._linkConnectionTypes(0, 1);
27
29
  return _this;
28
30
  }
29
31
  /**
@@ -43,12 +45,22 @@ var CloudBlock = /** @class */ (function (_super) {
43
45
  enumerable: false,
44
46
  configurable: true
45
47
  });
48
+ Object.defineProperty(CloudBlock.prototype, "chaos", {
49
+ /**
50
+ * Gets the chaos input component
51
+ */
52
+ get: function () {
53
+ return this._inputs[1];
54
+ },
55
+ enumerable: false,
56
+ configurable: true
57
+ });
46
58
  Object.defineProperty(CloudBlock.prototype, "offsetX", {
47
59
  /**
48
60
  * Gets the offset X input component
49
61
  */
50
62
  get: function () {
51
- return this._inputs[1];
63
+ return this._inputs[2];
52
64
  },
53
65
  enumerable: false,
54
66
  configurable: true
@@ -58,7 +70,7 @@ var CloudBlock = /** @class */ (function (_super) {
58
70
  * Gets the offset Y input component
59
71
  */
60
72
  get: function () {
61
- return this._inputs[2];
73
+ return this._inputs[3];
62
74
  },
63
75
  enumerable: false,
64
76
  configurable: true
@@ -68,7 +80,7 @@ var CloudBlock = /** @class */ (function (_super) {
68
80
  * Gets the offset Z input component
69
81
  */
70
82
  get: function () {
71
- return this._inputs[3];
83
+ return this._inputs[4];
72
84
  },
73
85
  enumerable: false,
74
86
  configurable: true
@@ -84,7 +96,7 @@ var CloudBlock = /** @class */ (function (_super) {
84
96
  configurable: true
85
97
  });
86
98
  CloudBlock.prototype._buildBlock = function (state) {
87
- var _a;
99
+ var _a, _b;
88
100
  _super.prototype._buildBlock.call(this, state);
89
101
  if (!this.seed.isConnected) {
90
102
  return;
@@ -92,8 +104,8 @@ var CloudBlock = /** @class */ (function (_super) {
92
104
  if (!this._outputs[0].hasEndpoints) {
93
105
  return;
94
106
  }
95
- var functionString = "float cloudRandom (in vec2 st) {\n return fract(sin(dot(st.xy,\n vec2(12.9898,78.233)))*\n 43758.5453123);\n }\n\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\n\n // Based on Morgan McGuire @morgan3d\n // https://www.shadertoy.com/view/4dS3Wd\n float cloudNoise(in vec2 st) {\n vec2 i = floor(st);\n vec2 f = fract(st);\n\n // Four corners in 2D of a tile\n float a = cloudRandom(i);\n float b = cloudRandom(i + vec2(1.0, 0.0));\n float c = cloudRandom(i + vec2(0.0, 1.0));\n float d = cloudRandom(i + vec2(1.0, 1.0));\n\n vec2 u = f * f * (3.0 - 2.0 * f);\n\n return mix(a, b, u.x) +\n (c - a)* u.y * (1.0 - u.x) +\n (d - b) * u.x * u.y;\n }\n\n float cloudNoise(in vec3 x) {\n const vec3 step = vec3(110, 241, 171);\n\n vec3 i = floor(x);\n vec3 f = fract(x);\n\n float n = dot(i, step);\n\n vec3 u = f * f * (3.0 - 2.0 * f);\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\n }";
96
- var fractalBrownianString = "\n float fbm(in vec2 st) {\n // Initial values\n float value = 0.0;\n float amplitude = .5;\n float frequency = 0.;\n\n // Loop of octaves\n for (int i = 0; i < OCTAVES; i++) {\n value += amplitude * cloudNoise(st);\n st *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n }\n\n float fbm(in vec3 x) {\n // Initial values\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < OCTAVES; ++i) {\n value += amplitude * cloudNoise(x);\n x = x * 2.0;\n amplitude *= 0.5;\n }\n return value;\n }";
107
+ var functionString = "\n\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\n\n // Based on Morgan McGuire @morgan3d\n // https://www.shadertoy.com/view/4dS3Wd\n float cloudNoise(in vec2 x, in vec2 chaos) {\n vec2 step = chaos * vec2(75., 120.) + vec2(75., 120.);\n\n vec2 i = floor(x);\n vec2 f = fract(x);\n\n float n = dot(i, step);\n\n vec2 u = f * f * (3.0 - 2.0 * f);\n return mix(\n mix(cloudRandom(n + dot(step, vec2(0, 0))), cloudRandom(n + dot(step, vec2(1, 0))), u.x),\n mix(cloudRandom(n + dot(step, vec2(0, 1))), cloudRandom(n + dot(step, vec2(1, 1))), u.x),\n u.y\n );\n }\n\n float cloudNoise(in vec3 x, in vec3 chaos) {\n vec3 step = chaos * vec3(60., 120., 75.) + vec3(60., 120., 75.);\n\n vec3 i = floor(x);\n vec3 f = fract(x);\n\n float n = dot(i, step);\n\n vec3 u = f * f * (3.0 - 2.0 * f);\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\n }";
108
+ var fractalBrownianString = "\n float fbm(in vec2 st, in vec2 chaos) {\n // Initial values\n float value = 0.0;\n float amplitude = .5;\n float frequency = 0.;\n\n // Loop of octaves\n for (int i = 0; i < OCTAVES; i++) {\n value += amplitude * cloudNoise(st, chaos);\n st *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n }\n\n float fbm(in vec3 x, in vec3 chaos) {\n // Initial values\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < OCTAVES; ++i) {\n value += amplitude * cloudNoise(x, chaos);\n x = x * 2.0;\n amplitude *= 0.5;\n }\n return value;\n }";
97
109
  var fbmNewName = "fbm" + this.octaves;
98
110
  state._emitFunction('CloudBlockCode', functionString, '// CloudBlockCode');
99
111
  state._emitFunction('CloudBlockCodeFBM' + this.octaves, fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()), '// CloudBlockCode FBM');
@@ -109,7 +121,14 @@ var CloudBlock = /** @class */ (function (_super) {
109
121
  if (this.offsetZ.isConnected && seedType === "vec3") {
110
122
  state.compilationString += localVariable + ".z += 0.1 * " + this.offsetZ.associatedVariableName + ";\r\n";
111
123
  }
112
- state.compilationString += this._declareOutput(this._outputs[0], state) + (" = vec3(0.0) + " + fbmNewName + "(" + localVariable + ");\r\n");
124
+ var chaosValue = "";
125
+ if (this.chaos.isConnected) {
126
+ chaosValue = this.chaos.associatedVariableName;
127
+ }
128
+ else {
129
+ chaosValue = ((_b = this.seed.connectedPoint) === null || _b === void 0 ? void 0 : _b.type) === NodeMaterialBlockConnectionPointTypes.Vector2 ? "vec2(0., 0.)" : "vec3(0., 0., 0.)";
130
+ }
131
+ state.compilationString += this._declareOutput(this._outputs[0], state) + (" = " + fbmNewName + "(" + localVariable + ", " + chaosValue + ");\r\n");
113
132
  return this;
114
133
  };
115
134
  CloudBlock.prototype._dumpPropertiesCode = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"cloudBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/cloudBlock.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;AACxD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAE1F;;GAEG;AACH;IAAgC,8BAAiB;IAK7C;;;OAGG;IACH,oBAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAShD;QAlBD,yCAAyC;QAElC,aAAO,GAAG,GAAG,CAAC;QAQjB,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC7E,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,KAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAE7E,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACjG,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;;IACrG,CAAC;IAED;;;OAGG;IACI,iCAAY,GAAnB;QACI,OAAO,YAAY,CAAC;IACxB,CAAC;IAKD,sBAAW,4BAAI;QAHf;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,+BAAO;QAHlB;;UAEE;aACF;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,+BAAO;QAHnB;;UAEE;aACD;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKA,sBAAW,+BAAO;QAHnB;;UAEE;aACD;YACG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8BAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAES,gCAAW,GAArB,UAAsB,KAA6B;;QAC/C,iBAAM,WAAW,YAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACxB,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;YAChC,OAAO;SACV;QAED,IAAI,cAAc,GAAG,grDAwCnB,CAAC;QAEH,IAAI,qBAAqB,GAAG,swBA0B1B,CAAC;QAEH,IAAM,UAAU,GAAG,QAAM,IAAI,CAAC,OAAS,CAAC;QACxC,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAC3E,KAAK,CAAC,aAAa,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAEzL,IAAM,aAAa,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAM,QAAQ,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,0CAAE,IAAI,MAAK,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAEpH,KAAK,CAAC,iBAAiB,IAAO,QAAQ,SAAI,aAAa,WAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,UAAO,CAAC;QACrG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC1B,KAAK,CAAC,iBAAiB,IAAO,aAAa,oBAAe,IAAI,CAAC,OAAO,CAAC,sBAAsB,UAAO,CAAC;SACxG;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC1B,KAAK,CAAC,iBAAiB,IAAO,aAAa,oBAAe,IAAI,CAAC,OAAO,CAAC,sBAAsB,UAAO,CAAC;SACxG;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,KAAK,MAAM,EAAE;YACjD,KAAK,CAAC,iBAAiB,IAAO,aAAa,oBAAe,IAAI,CAAC,OAAO,CAAC,sBAAsB,UAAO,CAAC;SACxG;QACD,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAG,oBAAkB,UAAU,SAAI,aAAa,WAAQ,CAAA,CAAC;QAEhI,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,wCAAmB,GAA7B;QACI,IAAI,UAAU,GAAG,iBAAM,mBAAmB,WAAE,IAAM,IAAI,CAAC,iBAAiB,mBAAc,IAAI,CAAC,OAAO,UAAO,CAAA,CAAC;QAC1G,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,8BAAS,GAAhB;QACI,IAAI,mBAAmB,GAAG,iBAAM,SAAS,WAAE,CAAC;QAE5C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE3C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,iCAAY,GAAnB,UAAoB,mBAAwB,EAAE,KAAY,EAAE,OAAe;QACvE,iBAAM,YAAY,YAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;IAC/C,CAAC;IArLD;QADC,sBAAsB,CAAC,SAAS,EAAE,sBAAsB,CAAC,GAAG,CAAC;+CACzC;IAsLzB,iBAAC;CAAA,AAzLD,CAAgC,iBAAiB,GAyLhD;SAzLY,UAAU;AA2LvB,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from '../nodeMaterialDecorator';\r\nimport { Scene } from '../../../scene';\r\n/**\r\n * block used to Generate Fractal Brownian Motion Clouds\r\n */\r\nexport class CloudBlock extends NodeMaterialBlock {\r\n /** Gets or sets the number of octaves */\r\n @editableInPropertyPage(\"Octaves\", PropertyTypeForEdition.Int)\r\n public octaves = 6.0;\r\n\r\n /**\r\n * Creates a new CloudBlock\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.AutoDetect);\r\n this.registerInput(\"offsetX\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetY\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetZ\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CloudBlock\";\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 offset X input component\r\n */\r\n public get offsetX(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the offset Y input component\r\n */\r\n public get offsetY(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset Z input component\r\n */\r\n public get offsetZ(): 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 _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._outputs[0].hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `float cloudRandom (in vec2 st) {\r\n return fract(sin(dot(st.xy,\r\n vec2(12.9898,78.233)))*\r\n 43758.5453123);\r\n }\r\n\r\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\r\n\r\n // Based on Morgan McGuire @morgan3d\r\n // https://www.shadertoy.com/view/4dS3Wd\r\n float cloudNoise(in vec2 st) {\r\n vec2 i = floor(st);\r\n vec2 f = fract(st);\r\n\r\n // Four corners in 2D of a tile\r\n float a = cloudRandom(i);\r\n float b = cloudRandom(i + vec2(1.0, 0.0));\r\n float c = cloudRandom(i + vec2(0.0, 1.0));\r\n float d = cloudRandom(i + vec2(1.0, 1.0));\r\n\r\n vec2 u = f * f * (3.0 - 2.0 * f);\r\n\r\n return mix(a, b, u.x) +\r\n (c - a)* u.y * (1.0 - u.x) +\r\n (d - b) * u.x * u.y;\r\n }\r\n\r\n float cloudNoise(in vec3 x) {\r\n const vec3 step = vec3(110, 241, 171);\r\n\r\n vec3 i = floor(x);\r\n vec3 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec3 u = f * f * (3.0 - 2.0 * f);\r\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\r\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\r\n }`;\r\n\r\n let fractalBrownianString = `\r\n float fbm(in vec2 st) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = .5;\r\n float frequency = 0.;\r\n\r\n // Loop of octaves\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise(st);\r\n st *= 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }\r\n\r\n float fbm(in vec3 x) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = 0.5;\r\n for (int i = 0; i < OCTAVES; ++i) {\r\n value += amplitude * cloudNoise(x);\r\n x = x * 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }`;\r\n\r\n const fbmNewName = `fbm${this.octaves}`;\r\n state._emitFunction('CloudBlockCode', functionString, '// CloudBlockCode');\r\n state._emitFunction('CloudBlockCodeFBM' + this.octaves, fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()), '// CloudBlockCode FBM');\r\n\r\n const localVariable = state._getFreeVariableName(\"st\");\r\n const seedType = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"vec2\" : \"vec3\";\r\n\r\n state.compilationString += `${seedType} ${localVariable} = ${this.seed.associatedVariableName};\\r\\n`;\r\n if (this.offsetX.isConnected) {\r\n state.compilationString += `${localVariable}.x += 0.1 * ${this.offsetX.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetY.isConnected) {\r\n state.compilationString += `${localVariable}.y += 0.1 * ${this.offsetY.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetZ.isConnected && seedType === \"vec3\") {\r\n state.compilationString += `${localVariable}.z += 0.1 * ${this.offsetZ.associatedVariableName};\\r\\n`;\r\n }\r\n state.compilationString += this._declareOutput(this._outputs[0], state) + ` = vec3(0.0) + ${fbmNewName}(${localVariable});\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\\r\\n`;\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.octaves = this.octaves;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.octaves = serializationObject.octaves;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CloudBlock\", CloudBlock);\r\n"]}
1
+ {"version":3,"file":"cloudBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/cloudBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from '../nodeMaterialDecorator';\r\nimport { Scene } from '../../../scene';\r\n/**\r\n * block used to Generate Fractal Brownian Motion Clouds\r\n */\r\nexport class CloudBlock extends NodeMaterialBlock {\r\n /** Gets or sets the number of octaves */\r\n @editableInPropertyPage(\"Octaves\", PropertyTypeForEdition.Int)\r\n public octaves = 6.0;\r\n\r\n /**\r\n * Creates a new CloudBlock\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.AutoDetect);\r\n this.registerInput(\"chaos\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"offsetX\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetY\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"offsetZ\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerOutput(\"output\", NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this._inputs[0].acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this._linkConnectionTypes(0, 1);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"CloudBlock\";\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 chaos input component\r\n */\r\n public get chaos(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the offset X input component\r\n */\r\n public get offsetX(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the offset Y input component\r\n */\r\n public get offsetY(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the offset Z input component\r\n */\r\n public get offsetZ(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\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 _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._outputs[0].hasEndpoints) {\r\n return;\r\n }\r\n\r\n let functionString = `\r\n\r\n float cloudRandom(in float p) { p = fract(p * 0.011); p *= p + 7.5; p *= p + p; return fract(p); }\r\n\r\n // Based on Morgan McGuire @morgan3d\r\n // https://www.shadertoy.com/view/4dS3Wd\r\n float cloudNoise(in vec2 x, in vec2 chaos) {\r\n vec2 step = chaos * vec2(75., 120.) + vec2(75., 120.);\r\n\r\n vec2 i = floor(x);\r\n vec2 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec2 u = f * f * (3.0 - 2.0 * f);\r\n return mix(\r\n mix(cloudRandom(n + dot(step, vec2(0, 0))), cloudRandom(n + dot(step, vec2(1, 0))), u.x),\r\n mix(cloudRandom(n + dot(step, vec2(0, 1))), cloudRandom(n + dot(step, vec2(1, 1))), u.x),\r\n u.y\r\n );\r\n }\r\n\r\n float cloudNoise(in vec3 x, in vec3 chaos) {\r\n vec3 step = chaos * vec3(60., 120., 75.) + vec3(60., 120., 75.);\r\n\r\n vec3 i = floor(x);\r\n vec3 f = fract(x);\r\n\r\n float n = dot(i, step);\r\n\r\n vec3 u = f * f * (3.0 - 2.0 * f);\r\n return mix(mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 0))), cloudRandom(n + dot(step, vec3(1, 0, 0))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 0))), cloudRandom(n + dot(step, vec3(1, 1, 0))), u.x), u.y),\r\n mix(mix( cloudRandom(n + dot(step, vec3(0, 0, 1))), cloudRandom(n + dot(step, vec3(1, 0, 1))), u.x),\r\n mix( cloudRandom(n + dot(step, vec3(0, 1, 1))), cloudRandom(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);\r\n }`;\r\n\r\n let fractalBrownianString = `\r\n float fbm(in vec2 st, in vec2 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = .5;\r\n float frequency = 0.;\r\n\r\n // Loop of octaves\r\n for (int i = 0; i < OCTAVES; i++) {\r\n value += amplitude * cloudNoise(st, chaos);\r\n st *= 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }\r\n\r\n float fbm(in vec3 x, in vec3 chaos) {\r\n // Initial values\r\n float value = 0.0;\r\n float amplitude = 0.5;\r\n for (int i = 0; i < OCTAVES; ++i) {\r\n value += amplitude * cloudNoise(x, chaos);\r\n x = x * 2.0;\r\n amplitude *= 0.5;\r\n }\r\n return value;\r\n }`;\r\n\r\n const fbmNewName = `fbm${this.octaves}`;\r\n state._emitFunction('CloudBlockCode', functionString, '// CloudBlockCode');\r\n state._emitFunction('CloudBlockCodeFBM' + this.octaves, fractalBrownianString.replace(/fbm/gi, fbmNewName).replace(/OCTAVES/gi, (this.octaves | 0).toString()), '// CloudBlockCode FBM');\r\n\r\n const localVariable = state._getFreeVariableName(\"st\");\r\n const seedType = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"vec2\" : \"vec3\";\r\n\r\n state.compilationString += `${seedType} ${localVariable} = ${this.seed.associatedVariableName};\\r\\n`;\r\n if (this.offsetX.isConnected) {\r\n state.compilationString += `${localVariable}.x += 0.1 * ${this.offsetX.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetY.isConnected) {\r\n state.compilationString += `${localVariable}.y += 0.1 * ${this.offsetY.associatedVariableName};\\r\\n`;\r\n }\r\n if (this.offsetZ.isConnected && seedType === \"vec3\") {\r\n state.compilationString += `${localVariable}.z += 0.1 * ${this.offsetZ.associatedVariableName};\\r\\n`;\r\n }\r\n\r\n let chaosValue = \"\";\r\n if (this.chaos.isConnected) {\r\n chaosValue = this.chaos.associatedVariableName;\r\n } else {\r\n chaosValue = this.seed.connectedPoint?.type === NodeMaterialBlockConnectionPointTypes.Vector2 ? \"vec2(0., 0.)\" : \"vec3(0., 0., 0.)\";\r\n }\r\n\r\n state.compilationString += this._declareOutput(this._outputs[0], state) + ` = ${fbmNewName}(${localVariable}, ${chaosValue});\\r\\n`;\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.octaves = ${this.octaves};\\r\\n`;\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.octaves = this.octaves;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.octaves = serializationObject.octaves;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.CloudBlock\", CloudBlock);\r\n"]}
@@ -1,10 +1,27 @@
1
1
  import { NodeMaterialBlock } from '../nodeMaterialBlock';
2
2
  import { NodeMaterialBuildState } from '../nodeMaterialBuildState';
3
3
  import { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';
4
+ import { Scene } from '../../../scene';
4
5
  /**
5
6
  * Block used to create a Color3/4 out of individual inputs (one for each component)
6
7
  */
7
8
  export declare class ColorMergerBlock extends NodeMaterialBlock {
9
+ /**
10
+ * Gets or sets the swizzle for r (meaning which compoent to affect to the output.r)
11
+ */
12
+ rSwizzle: "r" | "g" | "b" | "a";
13
+ /**
14
+ * Gets or sets the swizzle for g (meaning which compoent to affect to the output.g)
15
+ */
16
+ gSwizzle: "r" | "g" | "b" | "a";
17
+ /**
18
+ * Gets or sets the swizzle for b (meaning which compoent to affect to the output.b)
19
+ */
20
+ bSwizzle: "r" | "g" | "b" | "a";
21
+ /**
22
+ * Gets or sets the swizzle for a (meaning which compoent to affect to the output.a)
23
+ */
24
+ aSwizzle: "r" | "g" | "b" | "a";
8
25
  /**
9
26
  * Create a new ColorMergerBlock
10
27
  * @param name defines the block name
@@ -49,5 +66,9 @@ export declare class ColorMergerBlock extends NodeMaterialBlock {
49
66
  */
50
67
  get rgb(): NodeMaterialConnectionPoint;
51
68
  protected _inputRename(name: string): string;
69
+ private _buildSwizzle;
52
70
  protected _buildBlock(state: NodeMaterialBuildState): this;
71
+ serialize(): any;
72
+ _deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
73
+ protected _dumpPropertiesCode(): string;
53
74
  }
@@ -14,6 +14,22 @@ var ColorMergerBlock = /** @class */ (function (_super) {
14
14
  */
15
15
  function ColorMergerBlock(name) {
16
16
  var _this = _super.call(this, name, NodeMaterialBlockTargets.Neutral) || this;
17
+ /**
18
+ * Gets or sets the swizzle for r (meaning which compoent to affect to the output.r)
19
+ */
20
+ _this.rSwizzle = "r";
21
+ /**
22
+ * Gets or sets the swizzle for g (meaning which compoent to affect to the output.g)
23
+ */
24
+ _this.gSwizzle = "g";
25
+ /**
26
+ * Gets or sets the swizzle for b (meaning which compoent to affect to the output.b)
27
+ */
28
+ _this.bSwizzle = "b";
29
+ /**
30
+ * Gets or sets the swizzle for a (meaning which compoent to affect to the output.a)
31
+ */
32
+ _this.aSwizzle = "a";
17
33
  _this.registerInput("rgb ", NodeMaterialBlockConnectionPointTypes.Color3, true);
18
34
  _this.registerInput("r", NodeMaterialBlockConnectionPointTypes.Float, true);
19
35
  _this.registerInput("g", NodeMaterialBlockConnectionPointTypes.Float, true);
@@ -117,6 +133,10 @@ var ColorMergerBlock = /** @class */ (function (_super) {
117
133
  }
118
134
  return name;
119
135
  };
136
+ ColorMergerBlock.prototype._buildSwizzle = function (len) {
137
+ var swizzle = this.rSwizzle + this.gSwizzle + this.bSwizzle + this.aSwizzle;
138
+ return "." + swizzle.substr(0, len);
139
+ };
120
140
  ColorMergerBlock.prototype._buildBlock = function (state) {
121
141
  _super.prototype._buildBlock.call(this, state);
122
142
  var rInput = this.r;
@@ -128,22 +148,46 @@ var ColorMergerBlock = /** @class */ (function (_super) {
128
148
  var color3Output = this._outputs[1];
129
149
  if (rgbInput.isConnected) {
130
150
  if (color4Output.hasEndpoints) {
131
- state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + rgbInput.associatedVariableName + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ");\r\n");
151
+ state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + rgbInput.associatedVariableName + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ")" + this._buildSwizzle(4) + ";\r\n");
132
152
  }
133
153
  if (color3Output.hasEndpoints) {
134
- state.compilationString += this._declareOutput(color3Output, state) + (" = " + rgbInput.associatedVariableName + ";\r\n");
154
+ state.compilationString += this._declareOutput(color3Output, state) + (" = " + rgbInput.associatedVariableName + this._buildSwizzle(3) + ";\r\n");
135
155
  }
136
156
  }
137
157
  else {
138
158
  if (color4Output.hasEndpoints) {
139
- state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ");\r\n");
159
+ state.compilationString += this._declareOutput(color4Output, state) + (" = vec4(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ", " + (aInput.isConnected ? this._writeVariable(aInput) : "0.0") + ")" + this._buildSwizzle(4) + ";\r\n");
140
160
  }
141
161
  if (color3Output.hasEndpoints) {
142
- state.compilationString += this._declareOutput(color3Output, state) + (" = vec3(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ");\r\n");
162
+ state.compilationString += this._declareOutput(color3Output, state) + (" = vec3(" + (rInput.isConnected ? this._writeVariable(rInput) : "0.0") + ", " + (gInput.isConnected ? this._writeVariable(gInput) : "0.0") + ", " + (bInput.isConnected ? this._writeVariable(bInput) : "0.0") + ")" + this._buildSwizzle(3) + ";\r\n");
143
163
  }
144
164
  }
145
165
  return this;
146
166
  };
167
+ ColorMergerBlock.prototype.serialize = function () {
168
+ var serializationObject = _super.prototype.serialize.call(this);
169
+ serializationObject.rSwizzle = this.rSwizzle;
170
+ serializationObject.gSwizzle = this.gSwizzle;
171
+ serializationObject.bSwizzle = this.bSwizzle;
172
+ serializationObject.aSwizzle = this.aSwizzle;
173
+ return serializationObject;
174
+ };
175
+ ColorMergerBlock.prototype._deserialize = function (serializationObject, scene, rootUrl) {
176
+ var _a, _b, _c, _d;
177
+ _super.prototype._deserialize.call(this, serializationObject, scene, rootUrl);
178
+ this.rSwizzle = (_a = serializationObject.rSwizzle) !== null && _a !== void 0 ? _a : "r";
179
+ this.gSwizzle = (_b = serializationObject.gSwizzle) !== null && _b !== void 0 ? _b : "g";
180
+ this.bSwizzle = (_c = serializationObject.bSwizzle) !== null && _c !== void 0 ? _c : "b";
181
+ this.aSwizzle = (_d = serializationObject.aSwizzle) !== null && _d !== void 0 ? _d : "a";
182
+ };
183
+ ColorMergerBlock.prototype._dumpPropertiesCode = function () {
184
+ var codeString = _super.prototype._dumpPropertiesCode.call(this);
185
+ codeString += this._codeVariableName + ".rSwizzle = " + this.rSwizzle + "};\r\n";
186
+ codeString += this._codeVariableName + ".gSwizzle = " + this.gSwizzle + "};\r\n";
187
+ codeString += this._codeVariableName + ".bSwizzle = " + this.bSwizzle + "};\r\n";
188
+ codeString += this._codeVariableName + ".aSwizzle = " + this.aSwizzle + "};\r\n";
189
+ return codeString;
190
+ };
147
191
  return ColorMergerBlock;
148
192
  }(NodeMaterialBlock));
149
193
  export { ColorMergerBlock };
@@ -1 +1 @@
1
- {"version":3,"file":"colorMergerBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/colorMergerBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\n\r\n/**\r\n * Block used to create a Color3/4 out of individual inputs (one for each component)\r\n */\r\nexport class ColorMergerBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new ColorMergerBlock\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(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ColorMergerBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb component (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the r component (input)\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the g component (input)\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the b component (input)\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the a component (input)\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the rgba component (output)\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 component (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n * @deprecated Please use rgbOut instead.\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this.rgbOut;\r\n }\r\n\r\n protected _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n return name;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let rInput = this.r;\r\n let gInput = this.g;\r\n let bInput = this.b;\r\n let aInput = this.a;\r\n let rgbInput = this.rgbIn;\r\n\r\n let color4Output = this._outputs[0];\r\n let color3Output = this._outputs[1];\r\n\r\n if (rgbInput.isConnected) {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rgbInput.associatedVariableName}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"});\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = ${rgbInput.associatedVariableName};\\r\\n`;\r\n }\r\n } else {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"});\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = vec3(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"});\\r\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorMergerBlock\", ColorMergerBlock);"]}
1
+ {"version":3,"file":"colorMergerBlock.js","sourceRoot":"","sources":["../../../../../sourceES6/core/Materials/Node/Blocks/colorMergerBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from '../nodeMaterialBlock';\r\nimport { NodeMaterialBlockConnectionPointTypes } from '../Enums/nodeMaterialBlockConnectionPointTypes';\r\nimport { NodeMaterialBuildState } from '../nodeMaterialBuildState';\r\nimport { NodeMaterialBlockTargets } from '../Enums/nodeMaterialBlockTargets';\r\nimport { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';\r\nimport { RegisterClass } from '../../../Misc/typeStore';\r\nimport { Scene } from '../../../scene';\r\n\r\n/**\r\n * Block used to create a Color3/4 out of individual inputs (one for each component)\r\n */\r\nexport class ColorMergerBlock extends NodeMaterialBlock {\r\n /**\r\n * Gets or sets the swizzle for r (meaning which compoent to affect to the output.r)\r\n */\r\n public rSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"r\";\r\n /**\r\n * Gets or sets the swizzle for g (meaning which compoent to affect to the output.g)\r\n */\r\n public gSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"g\";\r\n /**\r\n * Gets or sets the swizzle for b (meaning which compoent to affect to the output.b)\r\n */\r\n public bSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"b\";\r\n /**\r\n * Gets or sets the swizzle for a (meaning which compoent to affect to the output.a)\r\n */\r\n public aSwizzle: \"r\" | \"g\" | \"b\" | \"a\" = \"a\";\r\n\r\n /**\r\n * Create a new ColorMergerBlock\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(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"r\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"g\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"b\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n\r\n this.registerOutput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4);\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ColorMergerBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb component (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the r component (input)\r\n */\r\n public get r(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the g component (input)\r\n */\r\n public get g(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the b component (input)\r\n */\r\n public get b(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the a component (input)\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the rgba component (output)\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 component (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb component (output)\r\n * @deprecated Please use rgbOut instead.\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this.rgbOut;\r\n }\r\n\r\n protected _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n return name;\r\n }\r\n\r\n private _buildSwizzle(len: number) {\r\n let swizzle = this.rSwizzle + this.gSwizzle + this.bSwizzle + this.aSwizzle;\r\n return \".\" + swizzle.substr(0, len);\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n let rInput = this.r;\r\n let gInput = this.g;\r\n let bInput = this.b;\r\n let aInput = this.a;\r\n let rgbInput = this.rgbIn;\r\n\r\n let color4Output = this._outputs[0];\r\n let color3Output = this._outputs[1];\r\n\r\n if (rgbInput.isConnected) {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rgbInput.associatedVariableName}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = ${rgbInput.associatedVariableName}${this._buildSwizzle(3)};\\r\\n`;\r\n }\r\n } else {\r\n if (color4Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color4Output, state) + ` = vec4(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"}, ${aInput.isConnected ? this._writeVariable(aInput) : \"0.0\"})${this._buildSwizzle(4)};\\r\\n`;\r\n }\r\n\r\n if (color3Output.hasEndpoints) {\r\n state.compilationString += this._declareOutput(color3Output, state) + ` = vec3(${rInput.isConnected ? this._writeVariable(rInput) : \"0.0\"}, ${gInput.isConnected ? this._writeVariable(gInput) : \"0.0\"}, ${bInput.isConnected ? this._writeVariable(bInput) : \"0.0\"})${this._buildSwizzle(3)};\\r\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n let serializationObject = super.serialize();\r\n\r\n serializationObject.rSwizzle = this.rSwizzle;\r\n serializationObject.gSwizzle = this.gSwizzle;\r\n serializationObject.bSwizzle = this.bSwizzle;\r\n serializationObject.aSwizzle = this.aSwizzle;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.rSwizzle = serializationObject.rSwizzle ?? \"r\";\r\n this.gSwizzle = serializationObject.gSwizzle ?? \"g\";\r\n this.bSwizzle = serializationObject.bSwizzle ?? \"b\";\r\n this.aSwizzle = serializationObject.aSwizzle ?? \"a\";\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n var codeString = super._dumpPropertiesCode();\r\n codeString += `${this._codeVariableName}.rSwizzle = ${this.rSwizzle}};\\r\\n`;\r\n codeString += `${this._codeVariableName}.gSwizzle = ${this.gSwizzle}};\\r\\n`;\r\n codeString += `${this._codeVariableName}.bSwizzle = ${this.bSwizzle}};\\r\\n`;\r\n codeString += `${this._codeVariableName}.aSwizzle = ${this.aSwizzle}};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorMergerBlock\", ColorMergerBlock);"]}
@@ -1,10 +1,27 @@
1
1
  import { NodeMaterialBlock } from '../nodeMaterialBlock';
2
2
  import { NodeMaterialBuildState } from '../nodeMaterialBuildState';
3
3
  import { NodeMaterialConnectionPoint } from '../nodeMaterialBlockConnectionPoint';
4
+ import { Scene } from '../../../scene';
4
5
  /**
5
6
  * Block used to create a Vector2/3/4 out of individual inputs (one for each component)
6
7
  */
7
8
  export declare class VectorMergerBlock extends NodeMaterialBlock {
9
+ /**
10
+ * Gets or sets the swizzle for x (meaning which compoent to affect to the output.x)
11
+ */
12
+ xSwizzle: "x" | "y" | "z" | "w";
13
+ /**
14
+ * Gets or sets the swizzle for y (meaning which compoent to affect to the output.y)
15
+ */
16
+ ySwizzle: "x" | "y" | "z" | "w";
17
+ /**
18
+ * Gets or sets the swizzle for z (meaning which compoent to affect to the output.z)
19
+ */
20
+ zSwizzle: "x" | "y" | "z" | "w";
21
+ /**
22
+ * Gets or sets the swizzle for w (meaning which compoent to affect to the output.w)
23
+ */
24
+ wSwizzle: "x" | "y" | "z" | "w";
8
25
  /**
9
26
  * Create a new VectorMergerBlock
10
27
  * @param name defines the block name
@@ -15,6 +32,10 @@ export declare class VectorMergerBlock extends NodeMaterialBlock {
15
32
  * @returns the class name
16
33
  */
17
34
  getClassName(): string;
35
+ /**
36
+ * Gets the xyzw component (input)
37
+ */
38
+ get xyzwIn(): NodeMaterialConnectionPoint;
18
39
  /**
19
40
  * Gets the xyz component (input)
20
41
  */
@@ -70,5 +91,9 @@ export declare class VectorMergerBlock extends NodeMaterialBlock {
70
91
  */
71
92
  get xyz(): NodeMaterialConnectionPoint;
72
93
  protected _inputRename(name: string): string;
94
+ private _buildSwizzle;
73
95
  protected _buildBlock(state: NodeMaterialBuildState): this;
96
+ serialize(): any;
97
+ _deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
98
+ protected _dumpPropertiesCode(): string;
74
99
  }