@babylonjs/core 7.44.1 → 7.46.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 (254) hide show
  1. package/Buffers/bufferUtils.d.ts +28 -1
  2. package/Buffers/bufferUtils.js +104 -1
  3. package/Buffers/bufferUtils.js.map +1 -1
  4. package/Decorators/nodeDecorator.js +1 -1
  5. package/Decorators/nodeDecorator.js.map +1 -1
  6. package/Engines/Extensions/engine.renderTarget.js +2 -1
  7. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  8. package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -1
  9. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  10. package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -1
  11. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  12. package/Engines/abstractEngine.js +2 -2
  13. package/Engines/abstractEngine.js.map +1 -1
  14. package/Engines/renderTargetWrapper.js +1 -1
  15. package/Engines/renderTargetWrapper.js.map +1 -1
  16. package/Engines/thinEngine.js +2 -1
  17. package/Engines/thinEngine.js.map +1 -1
  18. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +5 -0
  19. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +7 -0
  20. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  21. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +3 -0
  22. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +13 -0
  23. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  24. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +0 -3
  25. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +0 -13
  26. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
  27. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +3 -0
  28. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
  29. package/FrameGraph/Node/nodeRenderGraph.js +9 -5
  30. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  31. package/FrameGraph/Node/nodeRenderGraphBlock.js +1 -0
  32. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  33. package/FrameGraph/Passes/renderPass.d.ts +11 -0
  34. package/FrameGraph/Passes/renderPass.js +40 -0
  35. package/FrameGraph/Passes/renderPass.js.map +1 -1
  36. package/FrameGraph/Tasks/Layers/baseLayerTask.js +3 -2
  37. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  38. package/FrameGraph/Tasks/Layers/highlightLayerTask.js +1 -1
  39. package/FrameGraph/Tasks/Layers/highlightLayerTask.js.map +1 -1
  40. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +1 -1
  41. package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -1
  42. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +1 -1
  43. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  44. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +1 -1
  45. package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -1
  46. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  47. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  48. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +2 -2
  49. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
  50. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +1 -0
  51. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  52. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +2 -1
  53. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  54. package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js +1 -0
  55. package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js.map +1 -1
  56. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +1 -1
  57. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  58. package/FrameGraph/frameGraph.d.ts +5 -5
  59. package/FrameGraph/frameGraph.js +31 -21
  60. package/FrameGraph/frameGraph.js.map +1 -1
  61. package/FrameGraph/frameGraphTask.d.ts +8 -2
  62. package/FrameGraph/frameGraphTask.js +12 -12
  63. package/FrameGraph/frameGraphTask.js.map +1 -1
  64. package/FrameGraph/frameGraphTextureManager.d.ts +33 -2
  65. package/FrameGraph/frameGraphTextureManager.js +368 -27
  66. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  67. package/Lights/LTC/ltcTextureTool.d.ts +20 -0
  68. package/Lights/LTC/ltcTextureTool.js +24 -0
  69. package/Lights/LTC/ltcTextureTool.js.map +1 -0
  70. package/Lights/Shadows/shadowGenerator.d.ts +10 -0
  71. package/Lights/Shadows/shadowGenerator.js +5 -0
  72. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  73. package/Lights/Shadows/shadowGeneratorSceneComponent.js +6 -0
  74. package/Lights/Shadows/shadowGeneratorSceneComponent.js.map +1 -1
  75. package/Lights/areaLight.d.ts +39 -0
  76. package/Lights/areaLight.js +81 -0
  77. package/Lights/areaLight.js.map +1 -0
  78. package/Lights/index.d.ts +2 -0
  79. package/Lights/index.js +2 -0
  80. package/Lights/index.js.map +1 -1
  81. package/Lights/light.d.ts +8 -0
  82. package/Lights/light.js +10 -0
  83. package/Lights/light.js.map +1 -1
  84. package/Lights/lightConstants.d.ts +4 -0
  85. package/Lights/lightConstants.js +4 -0
  86. package/Lights/lightConstants.js.map +1 -1
  87. package/Lights/rectAreaLight.d.ts +61 -0
  88. package/Lights/rectAreaLight.js +127 -0
  89. package/Lights/rectAreaLight.js.map +1 -0
  90. package/Loading/loadingScreen.d.ts +21 -1
  91. package/Loading/loadingScreen.js +125 -52
  92. package/Loading/loadingScreen.js.map +1 -1
  93. package/Materials/Node/Blocks/Dual/lightBlock.js +2 -0
  94. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  95. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +1 -1
  96. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  97. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +2 -1
  98. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  99. package/Materials/Node/Blocks/debugBlock.d.ts +38 -0
  100. package/Materials/Node/Blocks/debugBlock.js +92 -0
  101. package/Materials/Node/Blocks/debugBlock.js.map +1 -0
  102. package/Materials/Node/Blocks/index.d.ts +1 -0
  103. package/Materials/Node/Blocks/index.js +1 -0
  104. package/Materials/Node/Blocks/index.js.map +1 -1
  105. package/Materials/Node/nodeMaterial.d.ts +2 -0
  106. package/Materials/Node/nodeMaterial.js +20 -2
  107. package/Materials/Node/nodeMaterial.js.map +1 -1
  108. package/Materials/Node/nodeMaterialBlock.d.ts +8 -1
  109. package/Materials/Node/nodeMaterialBlock.js +13 -1
  110. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  111. package/Materials/PBR/index.d.ts +1 -0
  112. package/Materials/PBR/index.js +1 -0
  113. package/Materials/PBR/index.js.map +1 -1
  114. package/Materials/PBR/pbrBRDFConfiguration.d.ts +14 -0
  115. package/Materials/PBR/pbrBRDFConfiguration.js +19 -0
  116. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  117. package/Materials/PBR/pbrBaseMaterial.d.ts +13 -0
  118. package/Materials/PBR/pbrBaseMaterial.js +60 -0
  119. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  120. package/Materials/PBR/pbrMaterial.d.ts +8 -0
  121. package/Materials/PBR/pbrMaterial.js +12 -0
  122. package/Materials/PBR/pbrMaterial.js.map +1 -1
  123. package/Materials/Textures/internalTexture.d.ts +0 -18
  124. package/Materials/Textures/internalTexture.js +0 -46
  125. package/Materials/Textures/internalTexture.js.map +1 -1
  126. package/Materials/Textures/rawTexture.d.ts +6 -2
  127. package/Materials/Textures/rawTexture.js +10 -3
  128. package/Materials/Textures/rawTexture.js.map +1 -1
  129. package/Materials/Textures/textureHelper.functions.d.ts +18 -0
  130. package/Materials/Textures/textureHelper.functions.js +47 -0
  131. package/Materials/Textures/textureHelper.functions.js.map +1 -0
  132. package/Materials/materialFlags.d.ts +6 -0
  133. package/Materials/materialFlags.js +14 -0
  134. package/Materials/materialFlags.js.map +1 -1
  135. package/Materials/materialHelper.functions.js +3 -1
  136. package/Materials/materialHelper.functions.js.map +1 -1
  137. package/Materials/standardMaterial.d.ts +1 -0
  138. package/Materials/standardMaterial.js +14 -0
  139. package/Materials/standardMaterial.js.map +1 -1
  140. package/Meshes/Compression/dracoCompressionWorker.js +0 -1
  141. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  142. package/Misc/error.d.ts +6 -0
  143. package/Misc/error.js +10 -0
  144. package/Misc/error.js.map +1 -1
  145. package/Misc/timingTools.d.ts +2 -2
  146. package/Misc/timingTools.js +15 -10
  147. package/Misc/timingTools.js.map +1 -1
  148. package/Particles/gpuParticleSystem.js +8 -2
  149. package/Particles/gpuParticleSystem.js.map +1 -1
  150. package/Rendering/IBLShadows/iblShadowsPluginMaterial.d.ts +4 -0
  151. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +66 -16
  152. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
  153. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +8 -0
  154. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +16 -0
  155. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  156. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +9 -0
  157. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +28 -11
  158. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  159. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  160. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  161. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -1
  162. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  163. package/Shaders/ShadersInclude/lightFragment.js +19 -1
  164. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  165. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +3 -0
  166. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  167. package/Shaders/ShadersInclude/lightUboDeclaration.js +3 -0
  168. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  169. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +3 -0
  170. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  171. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +3 -0
  172. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  173. package/Shaders/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  174. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +14 -1
  175. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  176. package/Shaders/ShadersInclude/ltcHelperFunctions.d.ts +5 -0
  177. package/Shaders/ShadersInclude/ltcHelperFunctions.js +31 -0
  178. package/Shaders/ShadersInclude/ltcHelperFunctions.js.map +1 -0
  179. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +11 -2
  180. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  181. package/Shaders/ShadersInclude/pbrBlockReflection.js +7 -1
  182. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  183. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +6 -0
  184. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  185. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +1 -0
  186. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +18 -1
  187. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  188. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +6 -3
  189. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  190. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +4 -0
  191. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  192. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  193. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  194. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +5 -2
  195. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  196. package/Shaders/gaussianSplatting.vertex.d.ts +1 -0
  197. package/Shaders/gaussianSplatting.vertex.js +3 -1
  198. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  199. package/Shaders/iblShadowAccumulation.fragment.js +6 -5
  200. package/Shaders/iblShadowAccumulation.fragment.js.map +1 -1
  201. package/Shaders/iblShadowSpatialBlur.fragment.js +3 -3
  202. package/Shaders/iblShadowSpatialBlur.fragment.js.map +1 -1
  203. package/Shaders/iblShadowVoxelTracing.fragment.js +26 -8
  204. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  205. package/Shaders/pbr.fragment.js +11 -3
  206. package/Shaders/pbr.fragment.js.map +1 -1
  207. package/Shaders/pbr.vertex.js +2 -0
  208. package/Shaders/pbr.vertex.js.map +1 -1
  209. package/ShadersWGSL/ShadersInclude/lightFragment.js +19 -1
  210. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  211. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +4 -0
  212. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  213. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js +3 -0
  214. package/ShadersWGSL/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  215. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +4 -0
  216. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  217. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  218. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +12 -1
  219. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  220. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.d.ts +5 -0
  221. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.js +35 -0
  222. package/ShadersWGSL/ShadersInclude/ltcHelperFunctions.js.map +1 -0
  223. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js +10 -1
  224. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  225. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +7 -1
  226. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -1
  227. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +4 -0
  228. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  229. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +1 -0
  230. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +18 -1
  231. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  232. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js +4 -0
  233. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  234. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  235. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  236. package/ShadersWGSL/glowMapGeneration.fragment.js +1 -2
  237. package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -1
  238. package/ShadersWGSL/iblShadowAccumulation.fragment.js +4 -3
  239. package/ShadersWGSL/iblShadowAccumulation.fragment.js.map +1 -1
  240. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js +3 -3
  241. package/ShadersWGSL/iblShadowSpatialBlur.fragment.js.map +1 -1
  242. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +26 -8
  243. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
  244. package/ShadersWGSL/layer.fragment.js +1 -2
  245. package/ShadersWGSL/layer.fragment.js.map +1 -1
  246. package/ShadersWGSL/pbr.fragment.js +10 -2
  247. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  248. package/ShadersWGSL/pbr.vertex.js +2 -0
  249. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  250. package/Sprites/spriteRenderer.js +1 -0
  251. package/Sprites/spriteRenderer.js.map +1 -1
  252. package/XR/features/WebXRHandTracking.js +2 -2
  253. package/XR/features/WebXRHandTracking.js.map +1 -1
  254. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ import type { NodeMaterialBuildState } from "../nodeMaterialBuildState";
2
+ import { NodeMaterialBlock } from "../nodeMaterialBlock";
3
+ import type { NodeMaterialConnectionPoint } from "../nodeMaterialBlockConnectionPoint";
4
+ import type { Scene } from "../../../scene.js";
5
+ /**
6
+ * Block used to render intermediate debug values
7
+ * Please note that the node needs to be active to be generated in the shader
8
+ * Only one DebugBlock should be active at a time
9
+ */
10
+ export declare class NodeMaterialDebugBlock extends NodeMaterialBlock {
11
+ private _isActive;
12
+ /**
13
+ * Gets or sets a boolean indicating that the block is active
14
+ */
15
+ get isActive(): boolean;
16
+ set isActive(value: boolean);
17
+ /**
18
+ * Creates a new NodeMaterialDebugBlock
19
+ * @param name defines the block name
20
+ */
21
+ constructor(name: string);
22
+ /** @internal */
23
+ get _isFinalOutputAndActive(): boolean;
24
+ /** @internal */
25
+ get _hasPrecedence(): boolean;
26
+ /**
27
+ * Gets the rgba input component
28
+ */
29
+ get debug(): NodeMaterialConnectionPoint;
30
+ /**
31
+ * Gets the current class name
32
+ * @returns the class name
33
+ */
34
+ getClassName(): string;
35
+ protected _buildBlock(state: NodeMaterialBuildState): this;
36
+ serialize(): any;
37
+ _deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
38
+ }
@@ -0,0 +1,92 @@
1
+ import { RegisterClass } from "../../../Misc/typeStore.js";
2
+ import { NodeMaterialBlock } from "../nodeMaterialBlock.js";
3
+ import { NodeMaterialBlockConnectionPointTypes } from "../Enums/nodeMaterialBlockConnectionPointTypes.js";
4
+ import { NodeMaterialBlockTargets } from "../Enums/nodeMaterialBlockTargets.js";
5
+ /**
6
+ * Block used to render intermediate debug values
7
+ * Please note that the node needs to be active to be generated in the shader
8
+ * Only one DebugBlock should be active at a time
9
+ */
10
+ export class NodeMaterialDebugBlock extends NodeMaterialBlock {
11
+ /**
12
+ * Gets or sets a boolean indicating that the block is active
13
+ */
14
+ get isActive() {
15
+ return this._isActive && this.debug.isConnected;
16
+ }
17
+ set isActive(value) {
18
+ if (this._isActive === value) {
19
+ return;
20
+ }
21
+ this._isActive = value;
22
+ }
23
+ /**
24
+ * Creates a new NodeMaterialDebugBlock
25
+ * @param name defines the block name
26
+ */
27
+ constructor(name) {
28
+ super(name, NodeMaterialBlockTargets.Fragment, true, true);
29
+ this._isActive = false;
30
+ this.registerInput("debug", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);
31
+ this.debug.excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);
32
+ }
33
+ /** @internal */
34
+ get _isFinalOutputAndActive() {
35
+ return this.isActive;
36
+ }
37
+ /** @internal */
38
+ get _hasPrecedence() {
39
+ return true;
40
+ }
41
+ /**
42
+ * Gets the rgba input component
43
+ */
44
+ get debug() {
45
+ return this._inputs[0];
46
+ }
47
+ /**
48
+ * Gets the current class name
49
+ * @returns the class name
50
+ */
51
+ getClassName() {
52
+ return "NodeMaterialDebugBlock";
53
+ }
54
+ _buildBlock(state) {
55
+ super._buildBlock(state);
56
+ if (!this._isActive) {
57
+ return this;
58
+ }
59
+ let outputString = "gl_FragColor";
60
+ if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
61
+ outputString = "fragmentOutputs.color";
62
+ }
63
+ const debug = this.debug;
64
+ if (!debug.connectedPoint) {
65
+ return this;
66
+ }
67
+ if (debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {
68
+ state.compilationString += `${outputString} = vec4${state.fSuffix}(${debug.associatedVariableName}, ${debug.associatedVariableName}, ${debug.associatedVariableName}, 1.0);\n`;
69
+ }
70
+ else if (debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Vector2) {
71
+ state.compilationString += `${outputString} = vec4${state.fSuffix}(${debug.associatedVariableName}, 0., 1.0);\n`;
72
+ }
73
+ else if (debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Color3 || debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Vector3) {
74
+ state.compilationString += `${outputString} = vec4${state.fSuffix}(${debug.associatedVariableName}, 1.0);\n`;
75
+ }
76
+ else {
77
+ state.compilationString += `${outputString} = ${debug.associatedVariableName};\n`;
78
+ }
79
+ return this;
80
+ }
81
+ serialize() {
82
+ const serializationObject = super.serialize();
83
+ serializationObject.isActive = this._isActive;
84
+ return serializationObject;
85
+ }
86
+ _deserialize(serializationObject, scene, rootUrl) {
87
+ super._deserialize(serializationObject, scene, rootUrl);
88
+ this.isActive = serializationObject.isActive;
89
+ }
90
+ }
91
+ RegisterClass("BABYLON.NodeMaterialDebugBlock", NodeMaterialDebugBlock);
92
+ //# sourceMappingURL=debugBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/debugBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeMaterialBuildState } from \"../nodeMaterialBuildState\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeMaterialBlock } from \"../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\nimport type { Scene } from \"core/scene\";\r\n\r\n/**\r\n * Block used to render intermediate debug values\r\n * Please note that the node needs to be active to be generated in the shader\r\n * Only one DebugBlock should be active at a time\r\n */\r\nexport class NodeMaterialDebugBlock extends NodeMaterialBlock {\r\n private _isActive = false;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the block is active\r\n */\r\n public get isActive(): boolean {\r\n return this._isActive && this.debug.isConnected;\r\n }\r\n\r\n public set isActive(value: boolean) {\r\n if (this._isActive === value) {\r\n return;\r\n }\r\n\r\n this._isActive = value;\r\n }\r\n\r\n /**\r\n * Creates a new NodeMaterialDebugBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true, true);\r\n\r\n this.registerInput(\"debug\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.debug.excludedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Matrix);\r\n }\r\n\r\n /** @internal */\r\n public override get _isFinalOutputAndActive() {\r\n return this.isActive;\r\n }\r\n\r\n /** @internal */\r\n public override get _hasPrecedence() {\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get debug(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeMaterialDebugBlock\";\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this._isActive) {\r\n return this;\r\n }\r\n\r\n let outputString = \"gl_FragColor\";\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n outputString = \"fragmentOutputs.color\";\r\n }\r\n\r\n const debug = this.debug;\r\n if (!debug.connectedPoint) {\r\n return this;\r\n }\r\n\r\n if (debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = vec4${state.fSuffix}(${debug.associatedVariableName}, ${debug.associatedVariableName}, ${debug.associatedVariableName}, 1.0);\\n`;\r\n } else if (debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Vector2) {\r\n state.compilationString += `${outputString} = vec4${state.fSuffix}(${debug.associatedVariableName}, 0., 1.0);\\n`;\r\n } else if (debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Color3 || debug.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Vector3) {\r\n state.compilationString += `${outputString} = vec4${state.fSuffix}(${debug.associatedVariableName}, 1.0);\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${debug.associatedVariableName};\\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 serializationObject.isActive = this._isActive;\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.isActive = serializationObject.isActive;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeMaterialDebugBlock\", NodeMaterialDebugBlock);\r\n"]}
@@ -67,3 +67,4 @@ export * from "./storageReadBlock";
67
67
  export * from "./storageWriteBlock";
68
68
  export * from "./matrixSplitterBlock";
69
69
  export * from "./GaussianSplatting/index";
70
+ export * from "./debugBlock";
@@ -68,4 +68,5 @@ export * from "./storageReadBlock.js";
68
68
  export * from "./storageWriteBlock.js";
69
69
  export * from "./matrixSplitterBlock.js";
70
70
  export * from "./GaussianSplatting/index.js";
71
+ export * from "./debugBlock.js";
71
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./Vertex/index\";\r\nexport * from \"./Fragment/index\";\r\nexport * from \"./Dual/index\";\r\nexport * from \"./Input/index\";\r\nexport * from \"./Teleport/index\";\r\nexport * from \"./multiplyBlock\";\r\nexport * from \"./addBlock\";\r\nexport * from \"./scaleBlock\";\r\nexport * from \"./clampBlock\";\r\nexport * from \"./crossBlock\";\r\nexport * from \"./customBlock\";\r\nexport * from \"./dotBlock\";\r\nexport * from \"./transformBlock\";\r\nexport * from \"./remapBlock\";\r\nexport * from \"./normalizeBlock\";\r\nexport * from \"./trigonometryBlock\";\r\nexport * from \"./colorMergerBlock\";\r\nexport * from \"./vectorMergerBlock\";\r\nexport * from \"./colorSplitterBlock\";\r\nexport * from \"./vectorSplitterBlock\";\r\nexport * from \"./lerpBlock\";\r\nexport * from \"./divideBlock\";\r\nexport * from \"./subtractBlock\";\r\nexport * from \"./stepBlock\";\r\nexport * from \"./oneMinusBlock\";\r\nexport * from \"./viewDirectionBlock\";\r\nexport * from \"./fresnelBlock\";\r\nexport * from \"./maxBlock\";\r\nexport * from \"./minBlock\";\r\nexport * from \"./distanceBlock\";\r\nexport * from \"./lengthBlock\";\r\nexport * from \"./negateBlock\";\r\nexport * from \"./powBlock\";\r\nexport * from \"./randomNumberBlock\";\r\nexport * from \"./arcTan2Block\";\r\nexport * from \"./smoothStepBlock\";\r\nexport * from \"./reciprocalBlock\";\r\nexport * from \"./replaceColorBlock\";\r\nexport * from \"./posterizeBlock\";\r\nexport * from \"./waveBlock\";\r\nexport * from \"./gradientBlock\";\r\nexport * from \"./nLerpBlock\";\r\nexport * from \"./worleyNoise3DBlock\";\r\nexport * from \"./simplexPerlin3DBlock\";\r\nexport * from \"./normalBlendBlock\";\r\nexport * from \"./rotate2dBlock\";\r\nexport * from \"./reflectBlock\";\r\nexport * from \"./refractBlock\";\r\nexport * from \"./desaturateBlock\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./Particle/index\";\r\nexport * from \"./modBlock\";\r\nexport * from \"./matrixBuilderBlock\";\r\nexport * from \"./conditionalBlock\";\r\nexport * from \"./cloudBlock\";\r\nexport * from \"./voronoiNoiseBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./triPlanarBlock\";\r\nexport * from \"./biPlanarBlock\";\r\nexport * from \"./matrixDeterminantBlock\";\r\nexport * from \"./matrixTransposeBlock\";\r\nexport * from \"./meshAttributeExistsBlock\";\r\nexport * from \"./curveBlock\";\r\nexport * from \"./colorConverterBlock\";\r\nexport * from \"./loopBlock\";\r\nexport * from \"./storageReadBlock\";\r\nexport * from \"./storageWriteBlock\";\r\nexport * from \"./matrixSplitterBlock\";\r\nexport * from \"./GaussianSplatting/index\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./Vertex/index\";\r\nexport * from \"./Fragment/index\";\r\nexport * from \"./Dual/index\";\r\nexport * from \"./Input/index\";\r\nexport * from \"./Teleport/index\";\r\nexport * from \"./multiplyBlock\";\r\nexport * from \"./addBlock\";\r\nexport * from \"./scaleBlock\";\r\nexport * from \"./clampBlock\";\r\nexport * from \"./crossBlock\";\r\nexport * from \"./customBlock\";\r\nexport * from \"./dotBlock\";\r\nexport * from \"./transformBlock\";\r\nexport * from \"./remapBlock\";\r\nexport * from \"./normalizeBlock\";\r\nexport * from \"./trigonometryBlock\";\r\nexport * from \"./colorMergerBlock\";\r\nexport * from \"./vectorMergerBlock\";\r\nexport * from \"./colorSplitterBlock\";\r\nexport * from \"./vectorSplitterBlock\";\r\nexport * from \"./lerpBlock\";\r\nexport * from \"./divideBlock\";\r\nexport * from \"./subtractBlock\";\r\nexport * from \"./stepBlock\";\r\nexport * from \"./oneMinusBlock\";\r\nexport * from \"./viewDirectionBlock\";\r\nexport * from \"./fresnelBlock\";\r\nexport * from \"./maxBlock\";\r\nexport * from \"./minBlock\";\r\nexport * from \"./distanceBlock\";\r\nexport * from \"./lengthBlock\";\r\nexport * from \"./negateBlock\";\r\nexport * from \"./powBlock\";\r\nexport * from \"./randomNumberBlock\";\r\nexport * from \"./arcTan2Block\";\r\nexport * from \"./smoothStepBlock\";\r\nexport * from \"./reciprocalBlock\";\r\nexport * from \"./replaceColorBlock\";\r\nexport * from \"./posterizeBlock\";\r\nexport * from \"./waveBlock\";\r\nexport * from \"./gradientBlock\";\r\nexport * from \"./nLerpBlock\";\r\nexport * from \"./worleyNoise3DBlock\";\r\nexport * from \"./simplexPerlin3DBlock\";\r\nexport * from \"./normalBlendBlock\";\r\nexport * from \"./rotate2dBlock\";\r\nexport * from \"./reflectBlock\";\r\nexport * from \"./refractBlock\";\r\nexport * from \"./desaturateBlock\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./Particle/index\";\r\nexport * from \"./modBlock\";\r\nexport * from \"./matrixBuilderBlock\";\r\nexport * from \"./conditionalBlock\";\r\nexport * from \"./cloudBlock\";\r\nexport * from \"./voronoiNoiseBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./triPlanarBlock\";\r\nexport * from \"./biPlanarBlock\";\r\nexport * from \"./matrixDeterminantBlock\";\r\nexport * from \"./matrixTransposeBlock\";\r\nexport * from \"./meshAttributeExistsBlock\";\r\nexport * from \"./curveBlock\";\r\nexport * from \"./colorConverterBlock\";\r\nexport * from \"./loopBlock\";\r\nexport * from \"./storageReadBlock\";\r\nexport * from \"./storageWriteBlock\";\r\nexport * from \"./matrixSplitterBlock\";\r\nexport * from \"./GaussianSplatting/index\";\r\nexport * from \"./debugBlock\";\r\n"]}
@@ -161,6 +161,8 @@ export declare class NodeMaterialDefines extends MaterialDefines implements IIma
161
161
  CAMERA_ORTHOGRAPHIC: boolean;
162
162
  /** Camera is perspective */
163
163
  CAMERA_PERSPECTIVE: boolean;
164
+ AREALIGHTSUPPORTED: boolean;
165
+ AREALIGHTNOROUGHTNESS: boolean;
164
166
  /**
165
167
  * Creates a new NodeMaterialDefines
166
168
  */
@@ -165,6 +165,8 @@ export class NodeMaterialDefines extends MaterialDefines {
165
165
  this.CAMERA_ORTHOGRAPHIC = false;
166
166
  /** Camera is perspective */
167
167
  this.CAMERA_PERSPECTIVE = false;
168
+ this.AREALIGHTSUPPORTED = true;
169
+ this.AREALIGHTNOROUGHTNESS = true;
168
170
  this.rebuild();
169
171
  }
170
172
  /**
@@ -698,9 +700,17 @@ export class NodeMaterial extends PushMaterial {
698
700
  this._fragmentCompilationState.supportUniformBuffers = engine.supportsUniformBuffers;
699
701
  this._fragmentCompilationState.target = NodeMaterialBlockTargets.Fragment;
700
702
  // Shared data
703
+ const needToPurgeList = this._fragmentOutputNodes.filter((n) => n._isFinalOutputAndActive).length > 1;
704
+ let fragmentOutputNodes = this._fragmentOutputNodes;
705
+ if (needToPurgeList) {
706
+ // Get all but the final output nodes
707
+ fragmentOutputNodes = this._fragmentOutputNodes.filter((n) => !n._isFinalOutputAndActive);
708
+ // Get the first with precedence on
709
+ fragmentOutputNodes.push(this._fragmentOutputNodes.filter((n) => n._isFinalOutputAndActive && n._hasPrecedence)[0]);
710
+ }
701
711
  this._sharedData = new NodeMaterialBuildStateSharedData();
702
712
  this._sharedData.nodeMaterial = this;
703
- this._sharedData.fragmentOutputNodes = this._fragmentOutputNodes;
713
+ this._sharedData.fragmentOutputNodes = fragmentOutputNodes;
704
714
  this._vertexCompilationState.sharedData = this._sharedData;
705
715
  this._fragmentCompilationState.sharedData = this._sharedData;
706
716
  this._sharedData.buildId = this._buildId;
@@ -715,7 +725,7 @@ export class NodeMaterial extends PushMaterial {
715
725
  vertexNodes.push(vertexOutputNode);
716
726
  this._initializeBlock(vertexOutputNode, this._vertexCompilationState, fragmentNodes, autoConfigure);
717
727
  }
718
- for (const fragmentOutputNode of this._fragmentOutputNodes) {
728
+ for (const fragmentOutputNode of fragmentOutputNodes) {
719
729
  fragmentNodes.push(fragmentOutputNode);
720
730
  this._initializeBlock(fragmentOutputNode, this._fragmentCompilationState, vertexNodes, autoConfigure);
721
731
  }
@@ -1279,6 +1289,14 @@ export class NodeMaterial extends PushMaterial {
1279
1289
  }
1280
1290
  }
1281
1291
  }
1292
+ // Check if Area Lights have LTC texture.
1293
+ if (defines["AREALIGHTUSED"]) {
1294
+ for (let index = 0; index < mesh.lightSources.length; index++) {
1295
+ if (!mesh.lightSources[index]._isReady()) {
1296
+ return false;
1297
+ }
1298
+ }
1299
+ }
1282
1300
  if (!subMesh.effect || !subMesh.effect.isReady()) {
1283
1301
  return false;
1284
1302
  }