@babylonjs/core 7.41.1 → 7.43.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 (170) hide show
  1. package/Animations/animation.js +1 -1
  2. package/Animations/animation.js.map +1 -1
  3. package/Culling/Helper/computeShaderBoundingHelper.js +3 -4
  4. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  5. package/Culling/Helper/transformFeedbackBoundingHelper.js +27 -64
  6. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  7. package/Engines/Extensions/engine.multiRender.js +3 -2
  8. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  9. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -0
  10. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -0
  11. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  12. package/Engines/WebGPU/webgpuTextureManager.js +6 -1
  13. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  14. package/Engines/abstractEngine.js +2 -2
  15. package/Engines/abstractEngine.js.map +1 -1
  16. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.d.ts +64 -0
  17. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +147 -0
  18. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -0
  19. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +0 -15
  20. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  21. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +4 -0
  22. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +9 -0
  23. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  24. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +1 -6
  25. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +0 -13
  26. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
  27. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +0 -1
  28. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
  29. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  30. package/FrameGraph/Node/Blocks/index.js +1 -0
  31. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  32. package/FrameGraph/Node/nodeRenderGraphBlock.js +17 -0
  33. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  34. package/FrameGraph/Passes/renderPass.d.ts +0 -8
  35. package/FrameGraph/Passes/renderPass.js +0 -10
  36. package/FrameGraph/Passes/renderPass.js.map +1 -1
  37. package/FrameGraph/Tasks/Layers/glowLayerTask.d.ts +57 -0
  38. package/FrameGraph/Tasks/Layers/glowLayerTask.js +173 -0
  39. package/FrameGraph/Tasks/Layers/glowLayerTask.js.map +1 -0
  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 +7 -0
  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 +5 -5
  49. package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -1
  50. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +12 -4
  51. package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
  52. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +1 -1
  53. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  54. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +0 -8
  55. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +1 -17
  56. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  57. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -0
  58. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  59. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -6
  60. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +20 -22
  61. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  62. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +7 -1
  63. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +21 -5
  64. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  65. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +4 -6
  66. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  67. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +1 -1
  68. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  69. package/FrameGraph/frameGraph.js +22 -11
  70. package/FrameGraph/frameGraph.js.map +1 -1
  71. package/FrameGraph/frameGraphRenderContext.d.ts +2 -1
  72. package/FrameGraph/frameGraphRenderContext.js +2 -1
  73. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  74. package/FrameGraph/frameGraphTask.d.ts +11 -1
  75. package/FrameGraph/frameGraphTask.js +8 -0
  76. package/FrameGraph/frameGraphTask.js.map +1 -1
  77. package/FrameGraph/frameGraphTextureManager.d.ts +8 -2
  78. package/FrameGraph/frameGraphTextureManager.js +10 -4
  79. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  80. package/FrameGraph/index.d.ts +1 -0
  81. package/FrameGraph/index.js +1 -0
  82. package/FrameGraph/index.js.map +1 -1
  83. package/Layers/effectLayer.d.ts +32 -33
  84. package/Layers/effectLayer.js +144 -530
  85. package/Layers/effectLayer.js.map +1 -1
  86. package/Layers/glowLayer.d.ts +14 -41
  87. package/Layers/glowLayer.js +92 -178
  88. package/Layers/glowLayer.js.map +1 -1
  89. package/Layers/highlightLayer.d.ts +0 -1
  90. package/Layers/highlightLayer.js +0 -1
  91. package/Layers/highlightLayer.js.map +1 -1
  92. package/Layers/index.d.ts +2 -0
  93. package/Layers/index.js +2 -0
  94. package/Layers/index.js.map +1 -1
  95. package/Layers/thinEffectLayer.d.ts +230 -0
  96. package/Layers/thinEffectLayer.js +734 -0
  97. package/Layers/thinEffectLayer.js.map +1 -0
  98. package/Layers/thinGlowLayer.d.ts +141 -0
  99. package/Layers/thinGlowLayer.js +292 -0
  100. package/Layers/thinGlowLayer.js.map +1 -0
  101. package/Lights/Shadows/shadowGenerator.js +40 -19
  102. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  103. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +17 -11
  104. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  105. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +18 -12
  106. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
  107. package/Materials/Node/Blocks/Input/inputBlock.js +34 -2
  108. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  109. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +34 -24
  110. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  111. package/Materials/Node/nodeMaterial.d.ts +10 -0
  112. package/Materials/Node/nodeMaterial.js +12 -0
  113. package/Materials/Node/nodeMaterial.js.map +1 -1
  114. package/Materials/PBR/pbrBaseMaterial.d.ts +5 -0
  115. package/Materials/PBR/pbrBaseMaterial.js +5 -0
  116. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  117. package/Materials/Textures/renderTargetTexture.d.ts +12 -0
  118. package/Materials/Textures/renderTargetTexture.js +29 -8
  119. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  120. package/Materials/materialHelper.functions.d.ts +17 -1
  121. package/Materials/materialHelper.functions.js +76 -4
  122. package/Materials/materialHelper.functions.js.map +1 -1
  123. package/Materials/shaderMaterial.d.ts +5 -4
  124. package/Materials/shaderMaterial.js +28 -51
  125. package/Materials/shaderMaterial.js.map +1 -1
  126. package/Materials/standardMaterial.d.ts +5 -0
  127. package/Materials/standardMaterial.js +5 -0
  128. package/Materials/standardMaterial.js.map +1 -1
  129. package/Meshes/Builders/greasedLineBuilder.d.ts +1 -1
  130. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +5 -0
  131. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +30 -22
  132. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  133. package/Meshes/GreasedLine/greasedLineBaseMesh.js +1 -0
  134. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  135. package/Meshes/abstractMesh.d.ts +1 -2
  136. package/Meshes/abstractMesh.js +1 -2
  137. package/Meshes/abstractMesh.js.map +1 -1
  138. package/Meshes/linesMesh.js +2 -2
  139. package/Meshes/linesMesh.js.map +1 -1
  140. package/Meshes/mesh.d.ts +30 -3
  141. package/Meshes/mesh.js +56 -29
  142. package/Meshes/mesh.js.map +1 -1
  143. package/Meshes/subMesh.js +16 -3
  144. package/Meshes/subMesh.js.map +1 -1
  145. package/Misc/fileTools.js +14 -7
  146. package/Misc/fileTools.js.map +1 -1
  147. package/Morph/morphTargetManager.d.ts +20 -0
  148. package/Morph/morphTargetManager.js +31 -1
  149. package/Morph/morphTargetManager.js.map +1 -1
  150. package/PostProcesses/volumetricLightScatteringPostProcess.js +15 -16
  151. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  152. package/Rendering/depthRenderer.js +13 -15
  153. package/Rendering/depthRenderer.js.map +1 -1
  154. package/Rendering/geometryBufferRenderer.js +13 -15
  155. package/Rendering/geometryBufferRenderer.js.map +1 -1
  156. package/Rendering/objectRenderer.d.ts +9 -2
  157. package/Rendering/objectRenderer.js +44 -7
  158. package/Rendering/objectRenderer.js.map +1 -1
  159. package/Rendering/outlineRenderer.js +13 -15
  160. package/Rendering/outlineRenderer.js.map +1 -1
  161. package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -4
  162. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  163. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +17 -5
  164. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  165. package/assetContainer.d.ts +43 -0
  166. package/assetContainer.js +67 -0
  167. package/assetContainer.js.map +1 -1
  168. package/package.json +1 -1
  169. package/scene.js +10 -3
  170. package/scene.js.map +1 -1
@@ -0,0 +1,230 @@
1
+ import { Observable } from "../Misc/observable";
2
+ import type { Nullable } from "../types";
3
+ import type { Camera } from "../Cameras/camera";
4
+ import type { Scene } from "../scene";
5
+ import { Color4 } from "../Maths/math.color";
6
+ import type { AbstractEngine } from "../Engines/abstractEngine";
7
+ import type { SubMesh } from "../Meshes/subMesh";
8
+ import type { AbstractMesh } from "../Meshes/abstractMesh";
9
+ import type { Mesh } from "../Meshes/mesh";
10
+ import type { EffectWrapper } from "../Materials/effectRenderer.js";
11
+ import type { BaseTexture } from "../Materials/Textures/baseTexture";
12
+ import type { Effect } from "../Materials/effect";
13
+ import { Material } from "../Materials/material";
14
+ import { ShaderLanguage } from "../Materials/shaderLanguage.js";
15
+ import { ObjectRenderer } from "../Rendering/objectRenderer.js";
16
+ /**
17
+ * Effect layer options. This helps customizing the behaviour
18
+ * of the effect layer.
19
+ */
20
+ export interface IThinEffectLayerOptions {
21
+ /**
22
+ * Alpha blending mode used to apply the blur. Default depends of the implementation. Default: ALPHA_COMBINE
23
+ */
24
+ alphaBlendingMode?: number;
25
+ /**
26
+ * The camera attached to the layer. Default: null
27
+ */
28
+ camera?: Nullable<Camera>;
29
+ /**
30
+ * The rendering group to draw the layer in. Default: -1
31
+ */
32
+ renderingGroupId?: number;
33
+ }
34
+ /**
35
+ * @internal
36
+ */
37
+ export declare class ThinEffectLayer {
38
+ private _additionalImportShadersAsync?;
39
+ private _vertexBuffers;
40
+ private _indexBuffer;
41
+ private _mergeDrawWrapper;
42
+ private _dontCheckIfReady;
43
+ protected _scene: Scene;
44
+ protected _engine: AbstractEngine;
45
+ protected _options: Required<IThinEffectLayerOptions>;
46
+ protected _objectRenderer: ObjectRenderer;
47
+ /** @internal */
48
+ _shouldRender: boolean;
49
+ /** @internal */
50
+ _emissiveTextureAndColor: {
51
+ texture: Nullable<BaseTexture>;
52
+ color: Color4;
53
+ };
54
+ /** @internal */
55
+ _effectIntensity: {
56
+ [meshUniqueId: number]: number;
57
+ };
58
+ /** @internal */
59
+ _postProcesses: EffectWrapper[];
60
+ /**
61
+ * Force all the effect layers to compile to glsl even on WebGPU engines.
62
+ * False by default. This is mostly meant for backward compatibility.
63
+ */
64
+ static ForceGLSL: boolean;
65
+ /**
66
+ * The name of the layer
67
+ */
68
+ name: string;
69
+ /**
70
+ * The clear color of the texture used to generate the glow map.
71
+ */
72
+ neutralColor: Color4;
73
+ /**
74
+ * Specifies whether the effect layer is enabled or not.
75
+ */
76
+ isEnabled: boolean;
77
+ /**
78
+ * Gets/sets the camera attached to the layer.
79
+ */
80
+ get camera(): Nullable<Camera>;
81
+ set camera(camera: Nullable<Camera>);
82
+ /**
83
+ * Gets the rendering group id the layer should render in.
84
+ */
85
+ get renderingGroupId(): number;
86
+ set renderingGroupId(renderingGroupId: number);
87
+ /**
88
+ * Specifies if the bounding boxes should be rendered normally or if they should undergo the effect of the layer
89
+ */
90
+ disableBoundingBoxesFromEffectLayer: boolean;
91
+ /**
92
+ * An event triggered when the effect layer has been disposed.
93
+ */
94
+ onDisposeObservable: Observable<ThinEffectLayer>;
95
+ /**
96
+ * An event triggered when the effect layer is about rendering the main texture with the glowy parts.
97
+ */
98
+ onBeforeRenderLayerObservable: Observable<ThinEffectLayer>;
99
+ /**
100
+ * An event triggered when the generated texture is being merged in the scene.
101
+ */
102
+ onBeforeComposeObservable: Observable<ThinEffectLayer>;
103
+ /**
104
+ * An event triggered when the mesh is rendered into the effect render target.
105
+ */
106
+ onBeforeRenderMeshToEffect: Observable<AbstractMesh>;
107
+ /**
108
+ * An event triggered after the mesh has been rendered into the effect render target.
109
+ */
110
+ onAfterRenderMeshToEffect: Observable<AbstractMesh>;
111
+ /**
112
+ * An event triggered when the generated texture has been merged in the scene.
113
+ */
114
+ onAfterComposeObservable: Observable<ThinEffectLayer>;
115
+ /**
116
+ * Gets the object renderer used to render objects in the layer
117
+ */
118
+ get objectRenderer(): ObjectRenderer;
119
+ protected _shaderLanguage: ShaderLanguage;
120
+ /**
121
+ * Gets the shader language used in this material.
122
+ */
123
+ get shaderLanguage(): ShaderLanguage;
124
+ private _materialForRendering;
125
+ /**
126
+ * Sets a specific material to be used to render a mesh/a list of meshes in the layer
127
+ * @param mesh mesh or array of meshes
128
+ * @param material material to use by the layer when rendering the mesh(es). If undefined is passed, the specific material created by the layer will be used.
129
+ */
130
+ setMaterialForRendering(mesh: AbstractMesh | AbstractMesh[], material?: Material): void;
131
+ /**
132
+ * Gets the intensity of the effect for a specific mesh.
133
+ * @param mesh The mesh to get the effect intensity for
134
+ * @returns The intensity of the effect for the mesh
135
+ */
136
+ getEffectIntensity(mesh: AbstractMesh): number;
137
+ /**
138
+ * Sets the intensity of the effect for a specific mesh.
139
+ * @param mesh The mesh to set the effect intensity for
140
+ * @param intensity The intensity of the effect for the mesh
141
+ */
142
+ setEffectIntensity(mesh: AbstractMesh, intensity: number): void;
143
+ /**
144
+ * Instantiates a new effect Layer
145
+ * @param name The name of the layer
146
+ * @param scene The scene to use the layer in
147
+ * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false
148
+ * @param dontCheckIfReady Specifies if the layer should disable checking whether all the post processes are ready (default: false). To save performance, this should be set to true and you should call `isReady` manually before rendering to the layer.
149
+ * @param _additionalImportShadersAsync Additional shaders to import when the layer is created
150
+ */
151
+ constructor(name: string, scene?: Scene, forceGLSL?: boolean, dontCheckIfReady?: boolean, _additionalImportShadersAsync?: (() => Promise<void>) | undefined);
152
+ /** @internal */
153
+ _shadersLoaded: boolean;
154
+ /**
155
+ * Get the effect name of the layer.
156
+ * @returns The effect name
157
+ */
158
+ getEffectName(): string;
159
+ /**
160
+ * Checks for the readiness of the element composing the layer.
161
+ * @param _subMesh the mesh to check for
162
+ * @param _useInstances specify whether or not to use instances to render the mesh
163
+ * @returns true if ready otherwise, false
164
+ */
165
+ isReady(_subMesh: SubMesh, _useInstances: boolean): boolean;
166
+ /** @internal */
167
+ _createMergeEffect(): Effect;
168
+ /** @internal */
169
+ _createTextureAndPostProcesses(): void;
170
+ /** @internal */
171
+ _internalCompose(_effect: Effect, _renderIndex: number): void;
172
+ /** @internal */
173
+ _setEmissiveTextureAndColor(_mesh: Mesh, _subMesh: SubMesh, _material: Material): void;
174
+ /** @internal */
175
+ _numInternalDraws(): number;
176
+ /** @internal */
177
+ _init(options: IThinEffectLayerOptions): void;
178
+ private _generateIndexBuffer;
179
+ private _generateVertexBuffer;
180
+ protected _createObjectRenderer(): void;
181
+ /** @internal */
182
+ _addCustomEffectDefines(_defines: string[]): void;
183
+ /** @internal */
184
+ _internalIsSubMeshReady(subMesh: SubMesh, useInstances: boolean, emissiveTexture: Nullable<BaseTexture>): boolean;
185
+ /** @internal */
186
+ _isSubMeshReady(subMesh: SubMesh, useInstances: boolean, emissiveTexture: Nullable<BaseTexture>): boolean;
187
+ protected _importShadersAsync(): Promise<void>;
188
+ /** @internal */
189
+ _internalIsLayerReady(): boolean;
190
+ /**
191
+ * Checks if the layer is ready to be used.
192
+ * @returns true if the layer is ready to be used
193
+ */
194
+ isLayerReady(): boolean;
195
+ /**
196
+ * Renders the glowing part of the scene by blending the blurred glowing meshes on top of the rendered scene.
197
+ * @returns true if the rendering was successful
198
+ */
199
+ compose(): boolean;
200
+ /** @internal */
201
+ _internalHasMesh(mesh: AbstractMesh): boolean;
202
+ /**
203
+ * Determine if a given mesh will be used in the current effect.
204
+ * @param mesh mesh to test
205
+ * @returns true if the mesh will be used
206
+ */
207
+ hasMesh(mesh: AbstractMesh): boolean;
208
+ /** @internal */
209
+ _internalShouldRender(): boolean;
210
+ /**
211
+ * Returns true if the layer contains information to display, otherwise false.
212
+ * @returns true if the glow layer should be rendered
213
+ */
214
+ shouldRender(): boolean;
215
+ /** @internal */
216
+ _shouldRenderMesh(_mesh: AbstractMesh): boolean;
217
+ /** @internal */
218
+ _internalCanRenderMesh(mesh: AbstractMesh, material: Material): boolean;
219
+ /** @internal */
220
+ _canRenderMesh(mesh: AbstractMesh, material: Material): boolean;
221
+ protected _renderSubMesh(subMesh: SubMesh, enableAlphaMode?: boolean): void;
222
+ /** @internal */
223
+ _useMeshMaterial(_mesh: AbstractMesh): boolean;
224
+ /** @internal */
225
+ _rebuild(): void;
226
+ /**
227
+ * Dispose the effect layer and free resources.
228
+ */
229
+ dispose(): void;
230
+ }