@babylonjs/core 7.34.1 → 7.34.3

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 (95) hide show
  1. package/Animations/animationGroup.js +1 -1
  2. package/Animations/animationGroup.js.map +1 -1
  3. package/Behaviors/Meshes/pointerDragBehavior.js +1 -0
  4. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  5. package/Collisions/gpuPicker.d.ts +1 -1
  6. package/Collisions/gpuPicker.js +1 -1
  7. package/Collisions/gpuPicker.js.map +1 -1
  8. package/Compat/index.d.ts +1 -1
  9. package/Compat/index.js +1 -1
  10. package/Compat/index.js.map +1 -1
  11. package/Engines/WebGPU/Extensions/engine.query.js +9 -9
  12. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  13. package/Engines/abstractEngine.js +2 -2
  14. package/Engines/abstractEngine.js.map +1 -1
  15. package/Engines/thinWebGPUEngine.d.ts +3 -0
  16. package/Engines/thinWebGPUEngine.js.map +1 -1
  17. package/Engines/webgpuEngine.d.ts +1 -3
  18. package/Engines/webgpuEngine.js +1 -0
  19. package/Engines/webgpuEngine.js.map +1 -1
  20. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +1 -2
  21. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  22. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +9 -1
  23. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +20 -2
  24. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  25. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +5 -1
  26. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +18 -2
  27. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
  28. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.d.ts +5 -1
  29. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +16 -2
  30. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
  31. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +9 -6
  32. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +27 -25
  33. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  34. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +9 -6
  35. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +25 -23
  36. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  37. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.d.ts +3 -2
  38. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +8 -8
  39. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  40. package/FrameGraph/frameGraphRenderContext.d.ts +7 -3
  41. package/FrameGraph/frameGraphRenderContext.js +23 -4
  42. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  43. package/Gizmos/boundingBoxGizmo.d.ts +52 -10
  44. package/Gizmos/boundingBoxGizmo.js +17 -0
  45. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  46. package/Gizmos/positionGizmo.js +1 -0
  47. package/Gizmos/positionGizmo.js.map +1 -1
  48. package/Gizmos/rotationGizmo.js +1 -0
  49. package/Gizmos/rotationGizmo.js.map +1 -1
  50. package/Materials/PBR/pbrSubSurfaceConfiguration.js +1 -0
  51. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  52. package/Materials/Textures/baseTexture.d.ts +4 -0
  53. package/Materials/Textures/baseTexture.js +3 -0
  54. package/Materials/Textures/baseTexture.js.map +1 -1
  55. package/Materials/Textures/multiRenderTarget.js +1 -1
  56. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  57. package/Materials/Textures/renderTargetTexture.d.ts +46 -42
  58. package/Materials/Textures/renderTargetTexture.js +249 -435
  59. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  60. package/Meshes/abstractMesh.hotSpot.d.ts +4 -2
  61. package/Meshes/abstractMesh.hotSpot.js +34 -7
  62. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  63. package/Meshes/csg2.js +1 -1
  64. package/Meshes/csg2.js.map +1 -1
  65. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +1 -1
  66. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +3 -9
  67. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  68. package/Rendering/index.d.ts +1 -0
  69. package/Rendering/index.js +1 -0
  70. package/Rendering/index.js.map +1 -1
  71. package/Rendering/objectRenderer.d.ts +228 -0
  72. package/Rendering/objectRenderer.js +517 -0
  73. package/Rendering/objectRenderer.js.map +1 -0
  74. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +2 -3
  75. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  76. package/XR/features/WebXRControllerTeleportation.js +6 -0
  77. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  78. package/XR/features/WebXRDepthSensing.js +1 -0
  79. package/XR/features/WebXRDepthSensing.js.map +1 -1
  80. package/XR/features/WebXRHandTracking.js +1 -0
  81. package/XR/features/WebXRHandTracking.js.map +1 -1
  82. package/XR/motionController/webXRAbstractMotionController.js +1 -0
  83. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  84. package/XR/webXRCamera.js +1 -0
  85. package/XR/webXRCamera.js.map +1 -1
  86. package/XR/webXRManagedOutputCanvas.js +1 -0
  87. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  88. package/XR/webXRSessionManager.js +1 -0
  89. package/XR/webXRSessionManager.js.map +1 -1
  90. package/index.d.ts +6 -6
  91. package/index.js +6 -6
  92. package/index.js.map +1 -1
  93. package/package.json +1 -1
  94. package/scene.js +21 -7
  95. package/scene.js.map +1 -1
@@ -0,0 +1,228 @@
1
+ import type { SmartArray, Nullable, Immutable, Camera, Scene, AbstractMesh, SubMesh, Material, IParticleSystem } from "../index.js";
2
+ import { Observable } from "../Misc/observable";
3
+ import { RenderingManager } from "../Rendering/renderingManager";
4
+ /**
5
+ * Defines the options of the object renderer
6
+ */
7
+ export interface ObjectRendererOptions {
8
+ /** The number of passes the renderer will support (1 by default) */
9
+ numPasses?: number;
10
+ /** True (default) to not change the aspect ratio of the scene in the RTT */
11
+ doNotChangeAspectRatio?: boolean;
12
+ }
13
+ /**
14
+ * A class that renders objects to the currently bound render target.
15
+ * This class only renders objects, and is not concerned with the output texture or post-processing.
16
+ */
17
+ export declare class ObjectRenderer {
18
+ /**
19
+ * Objects will only be rendered once which can be useful to improve performance if everything in your render is static for instance.
20
+ */
21
+ static readonly REFRESHRATE_RENDER_ONCE: number;
22
+ /**
23
+ * Objects will be rendered every frame and is recommended for dynamic contents.
24
+ */
25
+ static readonly REFRESHRATE_RENDER_ONEVERYFRAME: number;
26
+ /**
27
+ * Objects will be rendered every 2 frames which could be enough if your dynamic objects are not
28
+ * the central point of your effect and can save a lot of performances.
29
+ */
30
+ static readonly REFRESHRATE_RENDER_ONEVERYTWOFRAMES: number;
31
+ /**
32
+ * Use this predicate to dynamically define the list of mesh you want to render.
33
+ * If set, the renderList property will be overwritten.
34
+ */
35
+ renderListPredicate: (AbstractMesh: AbstractMesh) => boolean;
36
+ private _renderList;
37
+ private _unObserveRenderList;
38
+ /**
39
+ * Use this list to define the list of mesh you want to render.
40
+ */
41
+ get renderList(): Nullable<Array<AbstractMesh>>;
42
+ set renderList(value: Nullable<Array<AbstractMesh>>);
43
+ private _renderListHasChanged;
44
+ /**
45
+ * Define the list of particle systems to render. If not provided, will render all the particle systems of the scene.
46
+ * Note that the particle systems are rendered only if renderParticles is set to true.
47
+ */
48
+ particleSystemList: Nullable<Array<IParticleSystem>>;
49
+ /**
50
+ * Use this function to overload the renderList array at rendering time.
51
+ * Return null to render with the current renderList, else return the list of meshes to use for rendering.
52
+ * For 2DArray, layerOrFace is the index of the layer that is going to be rendered, else it is the faceIndex of
53
+ * the cube (if the RTT is a cube, else layerOrFace=0).
54
+ * The renderList passed to the function is the current render list (the one that will be used if the function returns null).
55
+ * The length of this list is passed through renderListLength: don't use renderList.length directly because the array can
56
+ * hold dummy elements!
57
+ */
58
+ getCustomRenderList: Nullable<(layerOrFace: number, renderList: Nullable<Immutable<Array<AbstractMesh>>>, renderListLength: number) => Nullable<Array<AbstractMesh>>>;
59
+ /**
60
+ * Define if particles should be rendered.
61
+ */
62
+ renderParticles: boolean;
63
+ /**
64
+ * Define if sprites should be rendered.
65
+ */
66
+ renderSprites: boolean;
67
+ /**
68
+ * Force checking the layerMask property even if a custom list of meshes is provided (ie. if renderList is not undefined)
69
+ */
70
+ forceLayerMaskCheck: boolean;
71
+ /**
72
+ * Define the camera used to render the objects.
73
+ */
74
+ activeCamera: Nullable<Camera>;
75
+ /**
76
+ * Override the mesh isReady function with your own one.
77
+ */
78
+ customIsReadyFunction: (mesh: AbstractMesh, refreshRate: number, preWarm?: boolean) => boolean;
79
+ /**
80
+ * Override the render function with your own one.
81
+ */
82
+ customRenderFunction: (opaqueSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>, beforeTransparents?: () => void) => void;
83
+ /**
84
+ * An event triggered before rendering the objects
85
+ */
86
+ readonly onBeforeRenderObservable: Observable<number>;
87
+ /**
88
+ * An event triggered after rendering the objects
89
+ */
90
+ readonly onAfterRenderObservable: Observable<number>;
91
+ /**
92
+ * An event triggered before the rendering group is processed
93
+ */
94
+ readonly onBeforeRenderingManagerRenderObservable: Observable<number>;
95
+ /**
96
+ * An event triggered after the rendering group is processed
97
+ */
98
+ readonly onAfterRenderingManagerRenderObservable: Observable<number>;
99
+ /**
100
+ * An event triggered when fast path rendering is used
101
+ */
102
+ readonly onFastPathRenderObservable: Observable<number>;
103
+ protected _scene: Scene;
104
+ protected _renderingManager: RenderingManager;
105
+ /** @internal */
106
+ _waitingRenderList?: string[];
107
+ protected _currentRefreshId: number;
108
+ protected _refreshRate: number;
109
+ protected _doNotChangeAspectRatio: boolean;
110
+ /**
111
+ * The options used by the object renderer
112
+ */
113
+ options: Required<ObjectRendererOptions>;
114
+ /**
115
+ * Friendly name of the object renderer
116
+ */
117
+ name: string;
118
+ /**
119
+ * Current render pass id. Note it can change over the rendering as there's a separate id for each face of a cube / each layer of an array layer!
120
+ */
121
+ renderPassId: number;
122
+ private _renderPassIds;
123
+ /**
124
+ * Gets the render pass ids used by the object renderer.
125
+ */
126
+ get renderPassIds(): readonly number[];
127
+ /**
128
+ * Gets the current value of the refreshId counter
129
+ */
130
+ get currentRefreshId(): number;
131
+ /**
132
+ * Sets a specific material to be used to render a mesh/a list of meshes with this object renderer
133
+ * @param mesh mesh or array of meshes
134
+ * @param material material or array of materials to use for this render pass. If undefined is passed, no specific material will be used but the regular material instead (mesh.material). It's possible to provide an array of materials to use a different material for each rendering pass.
135
+ */
136
+ setMaterialForRendering(mesh: AbstractMesh | AbstractMesh[], material?: Material | Material[]): void;
137
+ /**
138
+ * Instantiates an object renderer.
139
+ * @param name The friendly name of the object renderer
140
+ * @param scene The scene the renderer belongs to
141
+ * @param options The options used to create the renderer (optional)
142
+ */
143
+ constructor(name: string, scene: Scene, options?: ObjectRendererOptions);
144
+ private _releaseRenderPassId;
145
+ private _createRenderPassId;
146
+ /**
147
+ * Resets the refresh counter of the renderer and start back from scratch.
148
+ * Could be useful to re-render if it is setup to render only once.
149
+ */
150
+ resetRefreshCounter(): void;
151
+ /**
152
+ * Defines the refresh rate of the rendering or the rendering frequency.
153
+ * Use 0 to render just once, 1 to render on every frame, 2 to render every two frames and so on...
154
+ */
155
+ get refreshRate(): number;
156
+ set refreshRate(value: number);
157
+ /**
158
+ * Indicates if the renderer should render the current frame.
159
+ * The output is based on the specified refresh rate.
160
+ * @returns true if the renderer should render the current frame
161
+ */
162
+ shouldRender(): boolean;
163
+ /**
164
+ * This function will check if the renderer is ready to render (textures are loaded, shaders are compiled)
165
+ * @param viewportWidth defines the width of the viewport
166
+ * @param viewportHeight defines the height of the viewport
167
+ * @returns true if all required resources are ready
168
+ */
169
+ isReadyForRendering(viewportWidth: number, viewportHeight: number): boolean;
170
+ /**
171
+ * Makes sure the list of meshes is ready to be rendered
172
+ * You should call this function before "initRender", but if you know the render list is ok, you may call "initRender" directly
173
+ */
174
+ prepareRenderList(): void;
175
+ private _defaultRenderListPrepared;
176
+ private _currentSceneCamera;
177
+ /**
178
+ * This method makes sure everything is setup before "render" can be called
179
+ * @param viewportWidth Width of the viewport to render to
180
+ * @param viewportHeight Height of the viewport to render to
181
+ */
182
+ initRender(viewportWidth: number, viewportHeight: number): void;
183
+ /**
184
+ * This method must be called after the "render" call(s), to complete the rendering process.
185
+ */
186
+ finishRender(): void;
187
+ /**
188
+ * Renders all the objects (meshes, particles systems, sprites) to the currently bound render target texture.
189
+ * @param passIndex defines the pass index to use (default: 0)
190
+ * @param skipOnAfterRenderObservable defines a flag to skip raising the onAfterRenderObservable
191
+ */
192
+ render(passIndex?: number, skipOnAfterRenderObservable?: boolean): void;
193
+ /** @internal */
194
+ _checkReadiness(): boolean;
195
+ private _prepareRenderingManager;
196
+ /**
197
+ * Overrides the default sort function applied in the rendering group to prepare the meshes.
198
+ * This allowed control for front to back rendering or reversely depending of the special needs.
199
+ *
200
+ * @param renderingGroupId The rendering group id corresponding to its index
201
+ * @param opaqueSortCompareFn The opaque queue comparison function use to sort.
202
+ * @param alphaTestSortCompareFn The alpha test queue comparison function use to sort.
203
+ * @param transparentSortCompareFn The transparent queue comparison function use to sort.
204
+ */
205
+ setRenderingOrder(renderingGroupId: number, opaqueSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, alphaTestSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, transparentSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>): void;
206
+ /**
207
+ * Specifies whether or not the stencil and depth buffer are cleared between two rendering groups.
208
+ *
209
+ * @param renderingGroupId The rendering group id corresponding to its index
210
+ * @param autoClearDepthStencil Automatically clears depth and stencil between groups if true.
211
+ */
212
+ setRenderingAutoClearDepthStencil(renderingGroupId: number, autoClearDepthStencil: boolean): void;
213
+ /**
214
+ * Clones the renderer.
215
+ * @returns the cloned renderer
216
+ */
217
+ clone(): ObjectRenderer;
218
+ /**
219
+ * Dispose the renderer and release its associated resources.
220
+ */
221
+ dispose(): void;
222
+ /** @internal */
223
+ _rebuild(): void;
224
+ /**
225
+ * Clear the info related to rendering groups preventing retention point in material dispose.
226
+ */
227
+ freeRenderingGroups(): void;
228
+ }