@babylonjs/lite-compat 0.0.1-preview.54961

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.
package/index.d.ts ADDED
@@ -0,0 +1,3159 @@
1
+ import { AnimationGroup as AnimationGroup_2 } from '@babylonjs/lite';
2
+ import { AnisotropyProps } from '@babylonjs/lite';
3
+ import { AssetContainer as AssetContainer_2 } from '@babylonjs/lite';
4
+ import { ClearCoatProps } from '@babylonjs/lite';
5
+ import { EngineContext } from '@babylonjs/lite';
6
+ import { EngineOptions } from '@babylonjs/lite';
7
+ import { IridescenceProps } from '@babylonjs/lite';
8
+ import { Mesh as Mesh_2 } from '@babylonjs/lite';
9
+ import { RenderCanvas } from '@babylonjs/lite';
10
+ import { SceneNode } from '@babylonjs/lite';
11
+ import { SheenProps } from '@babylonjs/lite';
12
+ import { Texture2D } from '@babylonjs/lite';
13
+
14
+ /** Base class for an asset-loading task. Subclasses implement {@link runAsync}. */
15
+ export declare abstract class AbstractAssetTask {
16
+ name: string;
17
+ state: TaskState;
18
+ errorObject: {
19
+ message: string;
20
+ exception?: unknown;
21
+ } | undefined;
22
+ onSuccess?: (task: this) => void;
23
+ onError?: (task: this, message?: string, exception?: unknown) => void;
24
+ constructor(name: string);
25
+ get isCompleted(): boolean;
26
+ /** Run the task. Subclasses populate their result fields here. */
27
+ abstract runAsync(): Promise<void>;
28
+
29
+ export declare abstract class AbstractEngine {
30
  protected readonly _canvas: RenderCanvas;
31
+ private readonly _options;
32
+ protected readonly _scenes: Scene[];
33
+ protected readonly _loopCallbacks: Array<() => void>;
34
+ protected _initialized: boolean;
35
+ private _started;
1
36
  /**
37
+ * Babylon.js `engine.useReverseDepthBuffer`. Babylon Lite owns its depth
38
+ * configuration internally, so this is a settable no-op kept for API shape.
39
+ */
40
+ useReverseDepthBuffer: boolean;
41
+ /** Babylon.js `engine.onResizeObservable` — fires after `resize()` / `setSize()`. */
42
+ readonly onResizeObservable: Observable<AbstractEngine>;
2
43
  constructor(canvas: RenderCanvas, options?: ({
44
+ antialias?: boolean;
45
+ adaptToDeviceRatio?: boolean;
46
+ useLargeWorldRendering?: boolean;
47
+ } & EngineOptions) | boolean);
48
+ /** Acquire the GPU device and build the Lite engine context. */
49
+ initAsync(): Promise<void>;
50
+ getRenderingCanvas(): RenderCanvas;
51
+ /**
52
+ * Babylon.js `engine.getDeltaTime()` — milliseconds elapsed since the previous
53
+ * frame. Updated from each scene's Lite before-render hook (which receives the
54
+ * frame delta); defaults to ~16ms before the first frame.
55
+ */
56
+ getDeltaTime(): number;
57
+ /**
58
+ * Babylon.js `engine.isNDCHalfZRange`. WebGPU's clip space uses a `[0, 1]`
59
+ * depth range, so this is always `true` under Babylon Lite.
60
+ */
61
+ get isNDCHalfZRange(): boolean;
62
+ /** Babylon.js `engine.isWebGPU` — Babylon Lite is WebGPU-only, so always `true`. */
63
+ get isWebGPU(): boolean;
64
+ /**
65
+ * Babylon.js `engine.getCaps()` — engine capability flags. Only the
66
+ * compressed-texture-format flags ported scenes branch on are derived (from the
67
+ * Lite WebGPU device's enabled features); the rest report Babylon Lite's fixed
68
+ * WebGPU baseline. A headless `NullEngine` has no device, so all flags are off.
69
+ */
70
+ getCaps(): Record<string, unknown>;
71
+ /** Babylon.js `engine.scenes` — every scene created against this engine. */
72
+ get scenes(): Scene[];
73
+ /** Babylon.js `engine.getRenderWidth()` — backing render-target width in pixels. */
74
+ getRenderWidth(): number;
75
+ /** Babylon.js `engine.getRenderHeight()` — backing render-target height in pixels. */
76
+ getRenderHeight(): number;
77
+ /** Babylon.js `engine.getScreenAspectRatio()` — render-target width / height. */
78
+ getScreenAspectRatio(): number;
79
+ /**
80
+ * Babylon.js `engine.getAspectRatio(camera?, useScreen?)`. Babylon Lite renders
81
+ * each scene through a single full-canvas viewport, so the camera viewport does
82
+ * not subdivide the surface — this is the screen aspect ratio.
83
+ */
84
+ getAspectRatio(_camera?: unknown, _useScreen?: boolean): number;
85
+ /** Babylon.js `engine.getFps()` — frames-per-second estimate from the last frame delta. */
86
+ getFps(): number;
87
+ /**
88
+ * Babylon.js `engine.getHardwareScalingLevel()`. Babylon Lite manages its own
89
+ * device-pixel-ratio scaling, so this returns the stored parity value.
90
+ */
91
+ getHardwareScalingLevel(): number;
92
+ /** Babylon.js `engine.setHardwareScalingLevel(level)` — stored for parity (Lite self-manages DPR). */
93
+ setHardwareScalingLevel(level: number): void;
94
+ /** Babylon.js `engine.getRenderingCanvasClientRect()` — the canvas client rect, or `null` for offscreen canvases. */
95
+ getRenderingCanvasClientRect(): {
96
+ x: number;
97
+ y: number;
98
+ width: number;
99
+ height: number;
100
+ } | null;
101
+ /**
102
+ * Babylon.js `engine.clear(color?, backBuffer?, depth?, stencil?)`. Babylon
103
+ * Lite owns clearing through its render contexts (scenes / sprite renderers),
104
+ * so this records the requested clear colour (used by the scene-less sprite
105
+ * renderer path) and is otherwise a no-op.
106
+ */
107
+ clear(color?: {
108
+ r: number;
109
+ g: number;
110
+ b: number;
111
+ a: number;
112
+ }, _backBuffer?: boolean, _depth?: boolean, _stencil?: boolean): void;
3
113
  runRenderLoop(callback: () => void): void;
114
+ stopRenderLoop(): void;
115
+ resize(): void;
116
+ setSize(width: number, height: number): void;
117
+ dispose(): void;
118
+ /** Babylon.js manual frame-pump entry point — unsupported (Lite's frame graph owns the frame). */
119
+ beginFrame(): never;
120
+ /** Babylon.js manual frame-pump exit point — unsupported (Lite's frame graph owns the frame). */
121
+ endFrame(): never;
122
+ private _start;
123
+ private _ensureInitialized;
124
+ }
125
+
126
+ /**
127
+ * Babylon.js `AbstractMesh` — a renderable transform node with a material,
128
+ * visibility, and shadow-receipt. Concrete meshes derive from this.
129
+ */
130
+ export declare class AbstractMesh extends TransformNode {
4
131
  private _material;
132
+ private _visible;
133
+ constructor(name: string, lite: Mesh_2, scene?: Scene);
134
+ getClassName(): string;
5
135
  get material(): CompatMaterial | null;
136
+ set material(value: CompatMaterial | null);
137
+ get isVisible(): boolean;
138
+ set isVisible(value: boolean);
139
+ get receiveShadows(): boolean;
140
+ set receiveShadows(value: boolean);
141
+ setEnabled(enabled: boolean): void;
142
+ /** Bounding info accessor — needs a public Lite bounds accessor that does not yet exist. */
143
+ getBoundingInfo(): never;
144
+ /**
145
+ * Babylon.js `mesh.getVerticesData(kind)` — read back the CPU geometry buffer
146
+ * for `position` / `normal` / `uv`. Babylon Lite retains these on the mesh
147
+ * (for picking + device-loss recovery); other kinds are not stored.
148
+ */
149
+ getVerticesData(kind: string): Float32Array | null;
150
+ /**
151
+ * Babylon.js `mesh.setVerticesData(kind, data)` — replace a vertex attribute.
152
+ * `position` / `normal` / `uv` / `color` / `tangent` re-upload the geometry in
153
+ * place; the last-set `color`/`tangent` buffers are retained so successive calls
154
+ * (e.g. set tangent then set color) keep both. Skinning/morph attributes
155
+ * (`matricesIndices`, etc.) are accepted but not applied (Babylon Lite drives
156
+ * skinning through its own loaded-skeleton path).
157
+ */
158
+ setVerticesData(kind: string, data: number[] | Float32Array, _updatable?: boolean): void;
6
159
  private _lastColors;
160
+ /** Babylon.js `mesh.getTotalVertices()` — vertex count from the position buffer. */
161
+ getTotalVertices(): number;
162
+ /**
163
+ * Babylon.js `mesh.refreshBoundingInfo()` — Babylon Lite recomputes a mesh's
164
+ * bounds from its CPU geometry on demand (and on geometry upload), so this is a
165
+ * no-op that returns the mesh for chaining. The deformed-pick options
166
+ * (`applySkeleton` / `applyMorph`) are accepted for parity but not used.
167
+ */
168
+ refreshBoundingInfo(_options?: unknown): this;
169
+ /**
170
+ * Babylon.js `mesh.bakeCurrentTransformIntoVertices()` — fold the node's local
171
+ * transform (position / rotation / scaling) into the CPU geometry and reset the
172
+ * transform to identity. Babylon Lite has no built-in mesh-transform bake, so we
173
+ * transform the retained CPU positions (full matrix) and normals (rotation only,
174
+ * renormalized), re-upload via `resizeMeshGeometry`, then clear the transform.
175
+ */
176
+ bakeCurrentTransformIntoVertices(): this;
177
+ dispose(): void;
178
+ }
179
+
180
+ export declare abstract class AbstractScene {
7
181
  /**
182
+ * Babylon.js `scene.meshes`. Babylon Lite does not expose a public scene-mesh
183
+ * registry, so this tracks the meshes the compat layer creates against a scene
184
+ * which need lookup (currently Gaussian-Splatting meshes surfaced through the
185
+ * loader). Other primitives register with the Lite scene directly.
186
+ */
187
+ get meshes(): TransformNode[];
188
+ /** Babylon.js `scene.cameras` — every camera constructed against this scene. */
189
+ get cameras(): Camera[];
190
+ /** Babylon.js `scene.lights` — every light constructed against this scene. */
191
+ get lights(): Light[];
192
+ /** Babylon.js `scene.materials` — every material constructed against this scene. */
193
+ get materials(): Material[];
8
194
  /** Babylon.js `scene.getCameraByName(name)` — first camera with a matching name, else `null`. */
195
+ getCameraByName(name: string): Camera | null;
196
+ /** Babylon.js `scene.getCameraById(id)` — first camera whose `id` matches, else `null`. */
197
+ getCameraById(id: string): Camera | null;
198
+ /** Babylon.js `scene.getLightByName(name)` — first light with a matching name, else `null`. */
199
+ getLightByName(name: string): Light | null;
200
+ /** Babylon.js `scene.getLightById(id)` — first light whose `id` matches, else `null`. */
201
+ getLightById(id: string): Light | null;
202
+ /** Babylon.js `scene.getMaterialByName(name)` — first material with a matching name, else `null`. */
203
+ getMaterialByName(name: string): Material | null;
204
+ /** Babylon.js `scene.getMaterialById(id)` — first material whose `id` matches, else `null`. */
205
+ getMaterialById(id: string): Material | null;
206
+ /**
207
+ * Babylon.js `scene.getMeshByName(name)`. Babylon Lite has no public scene-mesh
208
+ * registry, so this searches the compat meshes tracked through `scene.meshes`
209
+ * (currently meshes the loader surfaces, e.g. Gaussian-Splatting). Returns `null`
210
+ * when not found, matching Babylon.js.
211
+ */
212
+ getMeshByName(name: string): TransformNode | null;
213
+ /** Babylon.js `scene.getMeshById(id)` — first tracked mesh whose `id` matches, else `null`. */
214
+ getMeshById(id: string): TransformNode | null;
215
+ /** Babylon.js legacy `scene.getMeshByID(id)` — alias of {@link getMeshById}. */
216
+ getMeshByID(id: string): TransformNode | null;
217
+ /** Babylon.js `scene.getNodeByName(name)` — searches tracked meshes, cameras, and lights. */
218
+ getNodeByName(name: string): Node_2 | null;
219
+ /** Babylon.js `scene.getNodeById(id)` — searches tracked meshes, cameras, and lights by `id`. */
220
+ getNodeById(id: string): Node_2 | null;
221
+ }
222
+
223
+ /** Base class for actions. `execute` is implemented by subclasses. */
224
+ export declare abstract class Action {
225
+ trigger: number;
226
+ /** Condition gating execution. When set, `execute` runs only if it evaluates true. */
227
+ condition: Condition | undefined;
228
+ private _nextActiveAction;
229
+ constructor(trigger: number, condition?: Condition);
230
+ abstract execute(evt?: ActionEvent): void;
231
+ /** Chain another action to run after this one (Babylon.js `then`). */
232
+ then(action: Action): Action;
233
+
234
+ declare interface ActionEvent {
235
+ source: unknown;
236
+ pointerX: number;
237
+ pointerY: number;
238
+ meshUnderPointer: unknown;
239
+ additionalData?: unknown;
240
+ }
241
+
242
+ /**
243
+ * Babylon.js `ActionManager`. Register actions with `registerAction`, then
244
+ * dispatch them with `processTrigger(trigger, evt?)`. (Automatic trigger
245
+ * dispatch from input is not yet wired — see module docs.)
246
+ */
247
+ export declare class ActionManager {
248
+ static readonly Triggers: {
249
+ readonly NothingTrigger: 0;
250
+ readonly OnPickTrigger: 1;
251
+ readonly OnLeftPickTrigger: 2;
252
+ readonly OnRightPickTrigger: 3;
253
+ readonly OnCenterPickTrigger: 4;
254
+ readonly OnPickDownTrigger: 5;
255
+ readonly OnDoublePickTrigger: 6;
256
+ readonly OnPickUpTrigger: 7;
257
+ readonly OnPickOutTrigger: 16;
258
+ readonly OnPointerOverTrigger: 10;
259
+ readonly OnPointerOutTrigger: 11;
260
+ readonly OnEveryFrameTrigger: 14;
261
+ };
262
+ readonly actions: Action[];
263
+ registerAction(action: Action): Action;
264
+ unregisterAction(action: Action): boolean;
265
+ hasSpecificTrigger(trigger: number): boolean;
266
+ /** Dispatch every registered action matching `trigger`. */
267
+ processTrigger(trigger: number, evt?: ActionEvent): void;
268
+ }
269
+
270
+ /** Babylon.js `ActionManager` trigger constants (subset). */
271
+ export declare const ActionManagerTriggers: {
272
+ readonly NothingTrigger: 0;
273
+ readonly OnPickTrigger: 1;
274
+ readonly OnLeftPickTrigger: 2;
275
+ readonly OnRightPickTrigger: 3;
276
+ readonly OnCenterPickTrigger: 4;
277
+ readonly OnPickDownTrigger: 5;
278
+ readonly OnDoublePickTrigger: 6;
279
+ readonly OnPickUpTrigger: 7;
280
+ readonly OnPickOutTrigger: 16;
281
+ readonly OnPointerOverTrigger: 10;
282
+ readonly OnPointerOutTrigger: 11;
283
+ readonly OnEveryFrameTrigger: 14;
284
+ };
285
+
286
+ export declare class AmmoJSPlugin {
287
+ constructor();
288
+ }
289
+
290
+ /** Babylon.js `AnaglyphArcRotateCamera` — stereoscopic camera rigs are not implemented in Babylon Lite. */
291
+ export declare class AnaglyphArcRotateCamera {
292
+ constructor();
293
+ }
294
+
295
+ export declare class Angle {
296
+ private readonly _radians;
297
+ constructor(_radians: number);
298
+ radians(): number;
299
+ degrees(): number;
300
+ static FromRadians(radians: number): Angle;
301
+ static FromDegrees(degrees: number): Angle;
302
+ }
303
+
304
+ /**
305
+ * Babylon.js `Animatable` — a running animation on a target, driven per-frame on
306
+ * the CPU by evaluating each `Animation`'s keyframes and writing the result onto
307
+ * the target's (dotted) property path.
308
+ */
309
+ declare class Animatable_2 {
310
+ private readonly _target;
311
+ private readonly _animations;
312
+ private readonly _from;
313
+ private readonly _to;
314
+ private readonly _loop;
315
+ masterFrame: number;
316
+ speedRatio: number;
317
+ private _paused;
318
+ private _stopped;
319
+ constructor(_target: unknown, _animations: Animation_2[], _from: number, _to: number, _loop: boolean, speedRatio: number);
9
320
  goToFrame(frame: number): void;
321
+ pause(): void;
322
+ restart(): void;
323
+ stop(): void;
324
+ get animationStarted(): boolean;
325
+ private _apply;
326
+ }
327
+ export { Animatable_2 as Animatable }
328
+
329
+ declare class Animation_2 {
330
+ name: string;
331
+ targetProperty: string;
332
+ framePerSecond: number;
333
+ dataType: number;
334
+ loopMode: number;
335
+ static readonly ANIMATIONTYPE_FLOAT: 0;
336
+ static readonly ANIMATIONTYPE_VECTOR3: 1;
337
+ static readonly ANIMATIONTYPE_QUATERNION: 2;
338
+ static readonly ANIMATIONTYPE_MATRIX: 3;
339
+ static readonly ANIMATIONTYPE_COLOR3: 4;
340
+ static readonly ANIMATIONLOOPMODE_RELATIVE: 0;
341
+ static readonly ANIMATIONLOOPMODE_CYCLE: 1;
342
+ static readonly ANIMATIONLOOPMODE_CONSTANT: 2;
343
+ private _keys;
344
+ constructor(name: string, targetProperty: string, framePerSecond: number, dataType?: number, loopMode?: number);
345
+ setKeys(keys: IAnimationKey[]): void;
346
+ getKeys(): IAnimationKey[];
347
+ getHighestFrame(): number;
348
+ /** Linearly evaluate the animated value at `frame` (clamped to the key range). */
349
+ evaluate(frame: number): number | number[];
350
+ /** Babylon.js helper: build a one-shot float animation between two values. */
351
+ static CreateAndStartAnimation(name: string, _target: unknown, targetProperty: string, framePerSecond: number, totalFrame: number, from: number, to: number): Animation_2;
352
+ }
353
+ export { Animation_2 as Animation }
354
+
355
+ /**
356
+ * Babylon.js `AnimationGroup` — a named collection of targeted animations with
357
+ * playback state. This is the **single** `AnimationGroup` type, matching Babylon.js;
358
+ * there is no separate "loaded" subtype. Two construction paths map onto Lite:
359
+ *
360
+ * - **Structural** (`new AnimationGroup(name, scene?)`): a CPU-side collection
361
+ * built by ported code via `addTargetedAnimation`. When `start`ed it registers
362
+ * with the scene and is stepped each frame on the CPU; multiple groups that
363
+ * animate the same property are **weight-blended** (Babylon.js manual weighted
364
+ * / cross-fade blending) before the result is written to the target.
365
+ * - **Loaded** (`AnimationGroup._fromLite`, used to populate `scene.animationGroups`
366
+ * from glTF / `.babylon` clips): a thin wrapper over a Babylon Lite loaded group.
367
+ * The playback methods (`goToFrame`/`play`/`pause`/`stop`/`reset`) and the
368
+ * `from`/`to`/`isPlaying`/`speedRatio`/`loopAnimation`/`weight`/`animatables`
369
+ * accessors delegate to the Lite group so ported scenes can freeze/seek a
370
+ * loaded animation at a deterministic frame.
371
+ */
372
+ export declare class AnimationGroup {
373
+ name: string;
374
+ readonly targetedAnimations: Array<{
375
+ animation: Animation_2;
376
+ target: unknown;
377
+ }>;
378
+ onAnimationGroupEndObservable?: () => void;
10
379
  private _from;
380
+ private _to;
381
+ private _state;
382
+ private _speedRatio;
383
+ private _loopAnimation;
11
384
  constructor(name: string, scene?: unknown);
12
385
  /**
386
+ * Babylon.js `AnimationGroup.MakeAnimationAdditive(group)` — convert a loaded
387
+ * group into an additive layer (reference frame 0) and enable the scene's
388
+ * weighted-blend manager. Returns the same group (Babylon Lite mutates in
389
+ * place rather than cloning).
390
+ */
391
+ static MakeAnimationAdditive(group: AnimationGroup): AnimationGroup;
392
+ /** First frame of the clip. Always 0 for loaded clips. */
393
+ get from(): number;
394
+ /** Last frame of the clip. */
395
+ get to(): number;
396
+ get isPlaying(): boolean;
397
+ get state(): AnimationGroupState;
398
+ get speedRatio(): number;
399
+ set speedRatio(value: number);
400
+ get loopAnimation(): boolean;
401
+ set loopAnimation(value: boolean);
402
+ get weight(): number;
403
+ set weight(value: number);
404
+ /**
405
+ * Babylon.js `AnimationGroup.animatables`. For loaded groups Babylon Lite drives
406
+ * the whole group as one unit, so this surfaces a single animatable whose
407
+ * `masterFrame` reflects the group's current frame. Structural groups built
408
+ * without a running scene report no animatables.
409
+ */
410
+ get animatables(): Array<{
411
+ masterFrame: number;
412
+ }>;
413
+ addTargetedAnimation(animation: Animation_2, target: unknown): {
414
+ animation: Animation_2;
415
+ target: unknown;
416
+ };
417
+ /**
418
+ * Babylon.js `start(loop?, speedRatio?, from?, to?)`. On the structural path this
419
+ * registers the group with its host scene, captures the targets' rest-pose
420
+ * baselines, and begins CPU stepping + weight blending. On the loaded path it
421
+ * seeks to `from` and plays — except a zero-length range (`from === to`) is a
422
+ * **held single-frame pose** (e.g. an additive pose layer), which must hold
423
+ * rather than play: Babylon Lite's group advance ignores the BJS play range and
424
+ * would otherwise loop the (often ~2-frame) pose clip every frame, flickering.
425
+ */
426
+ start(loop?: boolean, speedRatio?: number, from?: number, to?: number): this;
427
+ /** Babylon.js `goToFrame(frame)` — seek to a frame (loaded groups seek + hold via Lite; structural groups re-blend). */
428
+ goToFrame(frame: number): this;
429
+ play(loop?: boolean): this;
430
+ pause(): this;
431
+ stop(): this;
432
+ reset(): this;
433
+
434
+ export declare type AnimationGroupState = "init" | "playing" | "paused" | "stopped";
435
+
436
+ /**
437
+ * Babylon.js `AnimationKeyInterpolation` — how the segment starting at a key is
438
+ * interpolated. `STEP` holds the key's value until the next key (no blend).
439
+ */
440
+ export declare const AnimationKeyInterpolation: {
441
+ readonly NONE: 0;
442
+ readonly STEP: 1;
443
+ };
444
+
445
+ export declare const AnimationLoopModes: {
446
+ readonly ANIMATIONLOOPMODE_RELATIVE: 0;
447
+ readonly ANIMATIONLOOPMODE_CYCLE: 1;
448
+ readonly ANIMATIONLOOPMODE_CONSTANT: 2;
449
+ };
450
+
451
+ export declare const AnimationTypes: {
452
+ readonly ANIMATIONTYPE_FLOAT: 0;
453
+ readonly ANIMATIONTYPE_VECTOR3: 1;
454
+ readonly ANIMATIONTYPE_QUATERNION: 2;
455
+ readonly ANIMATIONTYPE_MATRIX: 3;
456
+ readonly ANIMATIONTYPE_COLOR3: 4;
457
+ readonly ANIMATIONTYPE_VECTOR2: 5;
458
+ readonly ANIMATIONTYPE_COLOR4: 6;
459
+ };
460
+
461
+ /** Babylon.js `AppendSceneAsync(source, scene, options?)` — appends an asset's contents to the scene. */
462
+ export declare function AppendSceneAsync(source: string, scene: Scene, _options?: unknown): Promise<Scene>;
463
+
464
+ export declare class ArcRotateCamera extends Camera {
13
465
  constructor(name: string, alpha: number, beta: number, radius: number, target: Vector3, scene?: Scene);
14
466
  getClassName(): string;
467
+ get alpha(): number;
468
+ set alpha(value: number);
469
+ get beta(): number;
470
+ set beta(value: number);
471
+ get radius(): number;
472
+ set radius(value: number);
473
+ get target(): Vector3;
474
+ set target(value: Vector3);
475
+ /** Babylon.js `setTarget` — point the arc-rotate camera at a world-space target. */
476
+ setTarget(target: Vector3): void;
477
+ get lowerRadiusLimit(): number | undefined;
478
+ set lowerRadiusLimit(value: number | undefined);
479
+ get upperRadiusLimit(): number | undefined;
480
+ set upperRadiusLimit(value: number | undefined);
481
+ attachControl(canvas: HTMLCanvasElement, _noPreventDefault?: boolean): void;
482
+
483
+ export declare class AssetContainer {
15
484
  constructor(lite: AssetContainer_2);
485
+ get animationGroups(): AnimationGroup_2[];
486
+ /** Flat list of renderable meshes (Babylon.js-shaped handles over the loaded node tree). */
487
+ get meshes(): LoadedMesh[];
488
+ /** Add every entity, animation group, camera, and clear colour to the scene. */
489
+ addAllToScene(scene: Scene): void;
490
+ dispose(): void;
491
+ }
492
+
493
+ export declare class AssetsManager {
494
+ readonly onProgressObservable: Observable<{
495
+ remainingCount: number;
496
+ totalCount: number;
497
+ task: AbstractAssetTask;
498
+ }>;
499
+ readonly onTaskSuccessObservable: Observable<AbstractAssetTask>;
500
+ readonly onTaskErrorObservable: Observable<AbstractAssetTask>;
501
+ readonly onFinishObservable: Observable<AbstractAssetTask[]>;
502
+ useDefaultLoadingScreen: boolean;
503
+ autoHideLoadingUI: boolean;
504
+ private readonly _tasks;
505
+ private _isLoading;
506
+ get tasks(): readonly AbstractAssetTask[];
507
+ addTask<T extends AbstractAssetTask>(task: T): T;
508
+ /** Add a custom async task and return it (handy for non-mesh/texture assets and tests). */
509
+ addCustomTask<T>(name: string, loader: () => Promise<T>): CustomAssetTask<T>;
510
+ reset(): this;
511
+ /** Run all queued tasks sequentially, emitting progress, and resolve when done. */
512
+ loadAsync(): Promise<AbstractAssetTask[]>;
513
+ }
514
+
515
+ export declare class AudioEngine {
516
+ constructor();
517
+ }
518
+
519
+ /** Idle auto-rotation of an `ArcRotateCamera` (spins `alpha` when not interacting). */
520
+ export declare class AutoRotationBehavior implements Behavior<ArcRotateCamera> {
521
+ readonly name = "AutoRotation";
522
+ /** Idle rotation speed in radians/second. */
523
+ idleRotationSpeed: number;
524
+ private _camera;
525
+ private _detach;
526
+ init(): void;
527
+ attach(camera: ArcRotateCamera): void;
528
+ detach(): void;
529
+ }
530
+
531
+ export declare const Axis: {
532
+ readonly X: Vector3;
533
+ readonly Y: Vector3;
534
+ readonly Z: Vector3;
535
+ };
536
+
537
+ /** Babylon.js `AxisDragGizmo` — drags the attached node along a single world axis. */
538
+ export declare class AxisDragGizmo extends GizmoBase {
16
539
  private _attached;
540
+ constructor(dragAxis: Vector3, color: Color3, layer: UtilityLayerRenderer);
541
+ get attachedMesh(): AbstractMesh | null;
542
+ set attachedMesh(value: AbstractMesh | null);
543
+ get attachedNode(): Node_2 | null;
544
+ set attachedNode(value: Node_2 | null);
545
+ dispose(): void;
546
+ }
547
+
548
+ /** Babylon.js `AxisScaleGizmo` — scales the attached node along a single axis. */
549
+ export declare class AxisScaleGizmo extends GizmoBase {
17
550
  private _attached;
551
+ constructor(dragAxis: Vector3, color: Color3, layer: UtilityLayerRenderer);
552
+ get attachedMesh(): AbstractMesh | null;
553
+ set attachedMesh(value: AbstractMesh | null);
554
+ get attachedNode(): Node_2 | null;
555
+ set attachedNode(value: Node_2 | null);
556
+ dispose(): void;
557
+ }
558
+
559
+ export declare class BackEase extends EasingFunction {
560
+ private readonly amplitude;
561
+ constructor(amplitude?: number);
562
+ easeInCore(gradient: number): number;
563
+ }
564
+
565
+ export declare class BackgroundMaterial {
566
+ constructor();
567
+ }
568
+
569
+ export declare abstract class BaseTexture {
570
+ name: string;
18
571
  getClassName(): string;
572
+ abstract whenReadyAsync(): Promise<void>;
573
+ dispose(): void;
574
+ }
575
+
576
+ /** Babylon.js `Behavior<T>` interface. */
577
+ export declare interface Behavior<T> {
578
+ readonly name: string;
579
+ init(): void;
580
+ attach(target: T): void;
581
+ detach(): void;
582
+ }
583
+
584
+ export declare const BlackAndWhitePostProcess: new () => never;
585
+
586
+ export declare const BloomEffect: new () => never;
587
+
588
+ export declare const BlurPostProcess: new () => never;
589
+
590
+ export declare class Bone {
591
+ constructor();
592
+ }
593
+
594
+ export declare class BounceEase extends EasingFunction {
595
+ private readonly bounces;
596
+ private readonly bounciness;
597
+ constructor(bounces?: number, bounciness?: number);
598
+ easeInCore(gradient: number): number;
599
+ }
600
+
601
+ /** Clamps an `ArcRotateCamera`'s radius to a [lower, upper] band (no bounce tween). */
602
+ export declare class BouncingBehavior implements Behavior<ArcRotateCamera> {
603
+ readonly name = "Bouncing";
604
+ lowerRadiusTransitionRange: number;
605
+ upperRadiusTransitionRange: number;
606
+ private _camera;
607
+ private _detach;
608
+ init(): void;
609
+ attach(camera: ArcRotateCamera): void;
610
+ detach(): void;
611
+ }
612
+
613
+ export declare class BoundingBox {
614
+ minimum: Vector3;
615
+ maximum: Vector3;
616
+ center: Vector3;
617
+ extendSize: Vector3;
618
+ /** World-space AABB corners. Equal to `minimum`/`maximum` when the box is
619
+ * already built in world space (as the loader's `getBoundingInfo` does). */
620
+ minimumWorld: Vector3;
621
+ maximumWorld: Vector3;
622
+ /** The 8 corner points (min/max combinations). */
623
+ vectors: Vector3[];
624
+ constructor(min: Vector3, max: Vector3);
625
+ intersectsPoint(point: Vector3): boolean;
626
+ static Intersects(a: BoundingBox, b: BoundingBox): boolean;
627
+ }
628
+
629
+ export declare class BoundingBoxGizmo extends GizmoBase {
19
630
  private _attached;
631
+ /**
632
+ * Babylon.js `BoundingBoxGizmo(color?, utilityLayer?)`. The first argument may
633
+ * be the gizmo colour (when a layer is also supplied) or the utility layer.
634
+ */
635
+ constructor(colorOrLayer: Color3 | UtilityLayerRenderer, layer?: UtilityLayerRenderer);
636
+ get attachedMesh(): AbstractMesh | null;
637
+ set attachedMesh(value: AbstractMesh | null);
638
+ get attachedNode(): AbstractMesh | null;
639
+ set attachedNode(value: AbstractMesh | null);
640
+ /** Babylon.js `BoundingBoxGizmo.enableDragBehavior()` — enables body-drag (Lite enables it by default). */
641
+ enableDragBehavior(): void;
642
+ dispose(): void;
643
+ }
644
+
645
+ export declare class BoundingBoxRenderer {
646
+ constructor();
647
+ }
648
+
649
+ export declare class BoundingInfo {
650
+ boundingBox: BoundingBox;
651
+ boundingSphere: BoundingSphere;
652
+ constructor(min: Vector3, max: Vector3);
653
+ get minimum(): Vector3;
654
+ get maximum(): Vector3;
655
+ intersectsPoint(point: Vector3): boolean;
656
+ /** World-matrix-aware reframe is not modelled here; reframe by rebuilding from transformed corners. */
657
+ reConstruct(min: Vector3, max: Vector3, _worldMatrix?: Matrix): void;
658
+ }
659
+
660
+ export declare class BoundingSphere {
661
+ center: Vector3;
662
+ radius: number;
663
+ minimum: Vector3;
664
+ maximum: Vector3;
665
+ constructor(min: Vector3, max: Vector3);
666
+ intersectsPoint(point: Vector3): boolean;
667
+ static Intersects(a: BoundingSphere, b: BoundingSphere): boolean;
668
+ }
669
+
670
+ declare interface BoxOptions {
671
+ size?: number;
672
+ width?: number;
673
+ }
674
+
675
+ export declare class BVHFileLoader {
676
+ constructor();
677
+ }
678
+
679
+ /** Babylon.js `Camera` — base class for all cameras (derives from `Node`). */
680
+ export declare abstract class Camera extends Node_2 {
20
681
  private _detach;
682
+ protected constructor(name: string, scene?: Scene);
683
+ getClassName(): string;
684
+ get fov(): number;
685
+ set fov(value: number);
686
+ get minZ(): number;
687
+ set minZ(value: number);
688
+ get maxZ(): number;
689
+ set maxZ(value: number);
690
+ /** World-space position of the camera. */
691
+ get globalPosition(): Vector3;
692
+ /** Babylon.js `camera.getViewMatrix()` — the camera's view matrix. */
693
+ getViewMatrix(): Matrix;
694
+ /** Babylon.js `camera.getProjectionMatrix()` — the camera's projection matrix. */
695
+ getProjectionMatrix(): Matrix;
696
+ private _aspectRatio;
697
+ abstract attachControl(canvas: HTMLCanvasElement, noPreventDefault?: boolean): void;
698
+ detachControl(): void;
21
699
  protected _makeActive(scene: Scene | undefined): void;
700
+ }
701
+
702
+ export declare class CameraGizmo {
22
703
  private _attached;
704
+ constructor(layer: UtilityLayerRenderer);
705
+ get camera(): Camera | null;
706
+ set camera(value: Camera | null);
707
+ dispose(): void;
708
+ }
709
+
710
+ export declare class CannonJSPlugin {
711
+ constructor();
712
+ }
713
+
714
+ /**
715
+ * Babylon.js `CascadedShadowGenerator` — cascaded shadow maps for large directional
716
+ * scenes. Mapped onto Babylon Lite's CSM generator is a larger task; for now this
717
+ * extends {@link ShadowGenerator} and falls back to the standard directional path,
718
+ * which renders (a single cascade's worth of) shadows rather than throwing.
719
+ */
720
+ export declare class CascadedShadowGenerator extends ShadowGenerator {
721
+ numCascades: number;
722
+ lambda: number;
723
+ stabilizeCascades: boolean;
724
+ depthClamp: boolean;
725
+ autoCalcDepthBounds: boolean;
726
+ getClassName(): string;
727
+ }
728
+
729
+ declare interface CellSize {
730
+ width: number;
731
+ height: number;
732
+ }
733
+
734
+ export declare const ChromaticAberrationPostProcess: new () => never;
735
+
736
+ export declare class CircleEase extends EasingFunction {
737
+ easeInCore(gradient: number): number;
738
+ }
739
+
740
+ export declare class ClusteredLightContainer {
741
+ constructor();
742
+ }
743
+
744
+ /**
745
+ * Babylon.js-compatible colour classes (`Color3`, `Color4`).
746
+ *
747
+ * Mutable, backed by `r`/`g`/`b`/`a` fields. `asArray()` yields the tuple shape
748
+ * (`[r, g, b]` / `[r, g, b, a]`) consumed by the Babylon Lite material and light
749
+ * APIs.
750
+ */
751
+ export declare class Color3 {
752
+ r: number;
753
+ g: number;
754
+ b: number;
755
+ constructor(r?: number, g?: number, b?: number);
756
+ set(r: number, g: number, b: number): this;
757
+ copyFrom(source: Color3): this;
758
+ scale(scale: number): Color3;
759
+ scaleInPlace(scale: number): this;
760
+ multiply(other: Color3): Color3;
761
+ add(other: Color3): Color3;
762
+ clone(): Color3;
763
+ equals(other: Color3): boolean;
764
+ asArray(): [number, number, number];
765
+ toColor4(alpha?: number): Color4;
766
+ toHexString(): string;
767
+ static Black(): Color3;
768
+ static White(): Color3;
769
+ static Red(): Color3;
770
+ static Green(): Color3;
771
+ static Blue(): Color3;
772
+ static FromArray(array: ArrayLike<number>, offset?: number): Color3;
773
+ static FromInts(r: number, g: number, b: number): Color3;
774
+ static FromHexString(hex: string): Color3;
775
+ static Lerp(start: Color3, end: Color3, amount: number): Color3;
776
+ }
777
+
778
+ export declare class Color4 {
779
+ r: number;
780
+ g: number;
781
+ b: number;
782
+ a: number;
783
+ constructor(r?: number, g?: number, b?: number, a?: number);
784
+ set(r: number, g: number, b: number, a: number): this;
785
+ copyFrom(source: Color4): this;
786
+ scale(scale: number): Color4;
787
+ add(other: Color4): Color4;
788
+ clone(): Color4;
789
+ equals(other: Color4): boolean;
790
+ toColor3(): Color3;
791
+ asArray(): [number, number, number, number];
792
+ static FromArray(array: ArrayLike<number>, offset?: number): Color4;
793
+ static FromInts(r: number, g: number, b: number, a: number): Color4;
794
+ }
795
+
796
+ /** An RGBA color bound to a [0, 1] position (Babylon.js `ColorGradient`). */
797
+ export declare class ColorGradient {
798
+ gradient: number;
799
+ color1: [number, number, number, number];
800
+ color2?: [number, number, number, number] | undefined;
801
+ constructor(gradient: number, color1: [number, number, number, number], color2?: [number, number, number, number] | undefined);
802
+ }
803
+
804
+ declare type CompatMaterial = StandardMaterial | PBRMaterial | NodeMaterial | GridMaterial;
805
+
806
+ declare type CompatMaterial_2 = StandardMaterial | PBRMaterial | NodeMaterial;
807
+
808
+ /** Base class for action conditions. */
809
+ export declare abstract class Condition {
810
+ abstract isValid(): boolean;
811
+ }
812
+
813
+ /**
814
+ * Babylon.js `Constants` — the small subset of numeric constants referenced by
815
+ * the ported scenes. Extend as needed.
816
+ */
817
+ export declare const Constants: {
818
+ readonly MATERIAL_ClockWiseSideOrientation: 0;
819
+ readonly MATERIAL_CounterClockWiseSideOrientation: 1;
820
+ readonly MATERIAL_TriangleFillMode: 0;
821
+ readonly MATERIAL_WireFrameFillMode: 1;
822
+ readonly MATERIAL_PointFillMode: 2;
823
+ readonly ALPHA_DISABLE: 0;
824
+ readonly ALPHA_ADD: 1;
825
+ readonly ALPHA_COMBINE: 2;
826
+ readonly ALPHA_ONEONE: 6;
827
+ readonly ALPHA_PREMULTIPLIED: 7;
828
+ readonly MATERIAL_OPAQUE: 0;
829
+ readonly MATERIAL_ALPHATEST: 1;
830
+ readonly MATERIAL_ALPHABLEND: 2;
831
+ readonly TEXTURE_CLAMP_ADDRESSMODE: 0;
832
+ readonly TEXTURE_WRAP_ADDRESSMODE: 1;
833
+ readonly TEXTURE_MIRROR_ADDRESSMODE: 2;
834
+ };
835
+
836
+ /** Babylon.js `CreateBox(name, options, scene)` (boxBuilder). */
837
+ export declare function CreateBox(name: string, options: BoxOptions, scene: Scene): Mesh;
838
+
839
+ /** Babylon.js `CreateCylinder(name, options, scene)` (cylinderBuilder). */
840
+ export declare function CreateCylinder(name: string, options: CylinderOptions, scene: Scene): Mesh;
841
+
842
+ /** Babylon.js `CreateDisc(name, options, scene)` (discBuilder). */
843
+ export declare function CreateDisc(name: string, options: object, scene: Scene): Mesh;
844
+
845
+ /** Babylon.js `CreateGround(name, options, scene)` (groundBuilder). */
846
+ export declare function CreateGround(name: string, options: GroundOptions, scene: Scene): Mesh;
847
+
848
+ /** Babylon.js `CreatePlane(name, options, scene)` (planeBuilder). */
849
+ export declare function CreatePlane(name: string, options: PlaneOptions, scene: Scene): Mesh;
850
+
851
+ /** Babylon.js `CreateSphere(name, options, scene)` (sphereBuilder). */
852
+ export declare function CreateSphere(name: string, options: SphereOptions, scene: Scene): Mesh;
853
+
854
+ /** Babylon.js `CreateTorus(name, options, scene)` (torusBuilder). */
855
+ export declare function CreateTorus(name: string, options: object, scene: Scene): Mesh;
856
+
857
+ /**
858
+ * Babylon.js `CSG` — legacy constructive solid geometry. Build from a mesh with
859
+ * {@link FromMesh}, combine with {@link subtract} / {@link intersect} /
860
+ * {@link union}, then materialize with {@link toMesh}.
861
+ */
862
+ export declare class CSG {
863
+ private readonly _lite;
864
+ private constructor();
865
+ /** Babylon.js `CSG.FromMesh(mesh)`. */
866
+ static FromMesh(mesh: MeshLike): CSG;
867
+ /** Babylon.js `csg.subtract(other)` — `this − other`. */
868
+ subtract(other: CSG): CSG;
869
+ /** Babylon.js `csg.intersect(other)`. */
870
+ intersect(other: CSG): CSG;
871
+ /** Babylon.js `csg.union(other)`. */
872
+ union(other: CSG): CSG;
873
+ /** Babylon.js `csg.toMesh(name, material, scene)` — triangulate into a single mesh. */
874
+ toMesh(name: string, material: CompatMaterial_2 | null, scene: Scene): Mesh;
875
+ }
876
+
877
+ /**
878
+ * Babylon.js `CSG2` — Manifold-based constructive solid geometry that preserves
879
+ * per-source-mesh materials. Call `await InitializeCSG2Async()` once before use.
880
+ */
881
+ export declare class CSG2 {
882
+ private readonly _lite;
883
+ /** Slot → source material, accumulated across operations. */
884
+ private readonly _materials;
885
+ private constructor();
886
+ /** Babylon.js `CSG2.FromMesh(mesh)` — records the mesh's material against a unique slot. */
887
+ static FromMesh(mesh: MeshLike & {
888
+ material?: CompatMaterial_2 | null;
889
+ }): CSG2;
890
+ private _combine;
891
+ /** Babylon.js `csg.subtract(other)` — `this − other`. */
892
+ subtract(other: CSG2): CSG2;
893
+ /** Babylon.js `csg.intersect(other)`. */
894
+ intersect(other: CSG2): CSG2;
895
+ /** Babylon.js `csg.add(other)` — union. */
896
+ add(other: CSG2): CSG2;
897
+ /**
898
+ * Babylon.js `csg.toMesh(name, scene)` — triangulate into a single mesh,
899
+ * preserving each source mesh's material across the result's faces.
900
+ */
901
+ toMesh(name: string, scene: Scene): Mesh;
902
+ /** Babylon.js `csg.dispose()` — release the underlying Manifold solid. */
903
+ dispose(): void;
904
+ }
905
+
906
+ /**
907
+ * Babylon.js `CubeTexture` — environment/skybox cube map. Babylon Lite loads
908
+ * environments through `loadEnvironment` (IBL + skybox registered on the scene)
909
+ * rather than as a standalone GPU texture object. This compat `CubeTexture`
910
+ * therefore acts as a lightweight handle that records the environment URL; the
911
+ * actual GPU work happens when it is assigned to `scene.environmentTexture` and
912
+ * the engine starts (see `Scene` env handling).
913
+ */
914
+ export declare class CubeTexture {
915
+ /** Source URL of the (prefiltered) environment. */
916
+ readonly url: string;
917
+ /** Babylon.js `coordinatesMode` (skybox = 5). Recorded for API parity. */
918
+ coordinatesMode: number;
919
+ name: string;
920
+ gammaSpace: boolean;
921
+ level: number;
922
+ /** Fires when the cube map is "ready" (resolved on a microtask in this compat layer). */
923
+ readonly onLoadObservable: Observable<CubeTexture>;
924
+ private _ready;
925
+ constructor(url: string, _scene?: unknown, _extensions?: unknown, _noMipmap?: boolean, _files?: unknown, onLoad?: (() => void) | null, _onError?: unknown, _format?: unknown, _prefiltered?: boolean);
926
+ /** Babylon.js `BaseTexture.isReady()`. */
927
+ isReady(): boolean;
928
+ /** Babylon.js `CubeTexture.CreateFromPrefilteredData(url, scene)`. */
929
+ static CreateFromPrefilteredData(url: string, scene?: unknown): CubeTexture;
930
+ dispose(): void;
931
+ }
932
+
933
+ export declare class CubicEase extends EasingFunction {
934
+ easeInCore(gradient: number): number;
935
+ }
936
+
937
+ /** A 3D curve built from an ordered list of points. */
938
+ export declare class Curve3 {
939
+ private readonly _points;
940
+ constructor(_points: Vector3[]);
941
+ getPoints(): Vector3[];
942
+ /** Total polyline length along the curve points. */
943
+ length(): number;
944
+ /** Concatenate another curve (dropping the duplicated join point). */
945
+ continue(curve: Curve3): Curve3;
946
+ /** Quadratic Bézier from `v0` → `v2` with control `v1`, sampled `nbPoints` times. */
947
+ static CreateQuadraticBezier(v0: Vector3, v1: Vector3, v2: Vector3, nbPoints: number): Curve3;
948
+ /** Cubic Bézier from `v0` → `v3` with controls `v1`, `v2`, sampled `nbPoints` times. */
949
+ static CreateCubicBezier(v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3, nbPoints: number): Curve3;
950
+ }
951
+
952
+ /** A task whose work is provided as a plain async function (useful for custom assets and tests). */
953
+ export declare class CustomAssetTask<T> extends AbstractAssetTask {
954
+ private readonly _loader;
955
+ result: T | undefined;
956
+ constructor(name: string, _loader: () => Promise<T>);
957
+ runAsync(): Promise<void>;
958
+ }
959
+
960
+ declare interface CylinderOptions {
961
+ height?: number;
962
+ diameter?: number;
963
+ tessellation?: number;
964
+ }
965
+
966
+ declare interface DefaultEnvironmentOptions {
967
+ createSkybox?: boolean;
968
+ createGround?: boolean;
969
+ skyboxSize?: number;
970
+ /** Babylon.js EnvironmentHelper: set up tone mapping / exposure / contrast (default true). */
971
+ setupImageProcessing?: boolean;
972
+ /** Babylon.js EnvironmentHelper camera exposure (default 0.8). */
973
+ cameraExposure?: number;
974
+ /** Babylon.js EnvironmentHelper camera contrast (default 1.2). */
975
+ cameraContrast?: number;
976
+ /** Babylon.js EnvironmentHelper tone-mapping toggle (default true). */
977
+ toneMappingEnabled?: boolean;
978
+
979
+ export declare class DefaultRenderingPipeline {
980
+ constructor();
981
+ }
982
+
983
+ export declare const DepthOfFieldEffect: new () => never;
984
+
985
+ export declare class DepthRenderer {
986
+ constructor();
987
+ }
988
+
989
+ /** Babylon.js `DeviceOrientationCamera` — device-orientation input is not available in Babylon Lite. */
990
+ export declare class DeviceOrientationCamera {
991
+ constructor();
992
+ }
993
+
994
+ export declare class DirectionalLight extends Light {
23
995
  constructor(name: string, direction: Vector3, scene?: Scene);
996
+ getClassName(): string;
997
+ get intensity(): number;
998
+ set intensity(value: number);
999
+ get direction(): Vector3;
1000
+ set direction(value: Vector3);
1001
+ get position(): Vector3;
1002
+ set position(value: Vector3);
1003
+ get diffuse(): Color3;
1004
+ set diffuse(value: Color3);
1005
+ get specular(): Color3;
1006
+ set specular(value: Color3);
1007
+ }
1008
+
1009
+ /**
1010
+ * Babylon.js `DynamicTexture` — a canvas-backed texture. Draw into
1011
+ * `getContext()`, then call `update()` to upload the canvas pixels to the GPU.
1012
+ * Backed by Babylon Lite's pixel-texture path.
1013
+ */
1014
+ export declare class DynamicTexture extends BaseTexture {
1015
+ private readonly _scene;
1016
+ private readonly _canvas;
1017
+ private readonly _context;
1018
+ private readonly _width;
1019
+ private readonly _height;
1020
+ constructor(name: string, options: {
1021
+ width: number;
1022
+ height: number;
1023
+ }, scene: Scene);
1024
+ getClassName(): string;
1025
+ getContext(): CanvasRenderingContext2D;
1026
+ getSize(): {
1027
+ width: number;
1028
+ height: number;
1029
+ };
1030
+ /** Draw `text` and refresh the GPU texture. */
1031
+ drawText(text: string, x: number, y: number, font: string, color: string, clearColor: string | null): void;
1032
+ /** Upload the current canvas pixels to the GPU. */
1033
+ update(): void;
1034
+ whenReadyAsync(): Promise<void>;
1035
+ }
1036
+
1037
+ export declare abstract class EasingFunction {
1038
+ static readonly EASINGMODE_EASEIN = 0;
1039
+ static readonly EASINGMODE_EASEOUT = 1;
1040
+ static readonly EASINGMODE_EASEINOUT = 2;
1041
+ private _mode;
1042
+ setEasingMode(mode: number): void;
1043
+ getEasingMode(): number;
1044
+ /** The raw ease-in curve, implemented by each subclass over `gradient` in [0, 1]. */
1045
+ abstract easeInCore(gradient: number): number;
1046
+ ease(gradient: number): number;
1047
+ }
1048
+
1049
+ /**
1050
+ * Babylon.js-compatible easing functions (pure, no Babylon Lite dependency).
1051
+ *
1052
+ * These mirror Babylon.js's `EasingFunction` hierarchy and easing modes for use
1053
+ * with property animations. They are fully unit-testable.
1054
+ */
1055
+ export declare const EASINGMODE_EASEIN = 0;
1056
+
1057
+ export declare const EASINGMODE_EASEINOUT = 2;
1058
+
1059
+ export declare const EASINGMODE_EASEOUT = 1;
1060
+
1061
+ export declare class EdgesRenderer {
1062
+ constructor();
1063
+ }
1064
+
1065
+ export declare class EffectLayer {
1066
+ constructor();
1067
+ }
1068
+
1069
+ export declare class ElasticEase extends EasingFunction {
1070
+ private readonly oscillations;
1071
+ private readonly springiness;
1072
+ constructor(oscillations?: number, springiness?: number);
1073
+ easeInCore(gradient: number): number;
1074
+ }
1075
+
1076
+ /**
1077
+ * Babylon.js's full WebGL engine. In Babylon.js `Engine extends ThinEngine`
1078
+ * (sibling to {@link WebGPUEngine}, both rooted at {@link AbstractEngine}).
1079
+ * Babylon Lite is WebGPU-only, so a compat `Engine` is still backed by the same
1080
+ * Lite WebGPU context; this class exists to mirror Babylon.js's name + hierarchy.
1081
+ */
1082
+ export declare class Engine extends ThinEngine {
1083
+ }
1084
+
1085
+ /** Babylon.js-compatible scalar helpers and a small set of math constants. */
1086
+ export declare const Epsilon = 0.001;
1087
+
1088
+ /** Runs a user callback when triggered. */
1089
+ export declare class ExecuteCodeAction extends Action {
1090
+ private readonly _func;
1091
+ constructor(trigger: number, _func: (evt?: ActionEvent) => void, condition?: Condition);
1092
+ execute(evt?: ActionEvent): void;
1093
+ }
1094
+
1095
+ export declare class ExponentialEase extends EasingFunction {
1096
+ private readonly exponent;
1097
+ constructor(exponent?: number);
1098
+ easeInCore(gradient: number): number;
1099
+ }
1100
+
1101
+ /** A gradient value bound to a [0, 1] position (Babylon.js `FactorGradient`). */
1102
+ export declare class FactorGradient {
1103
+ gradient: number;
1104
+ factor1: number;
1105
+ factor2: number;
1106
+ constructor(gradient: number, factor1: number, factor2?: number);
1107
+ getFactor(): number;
1108
+ }
1109
+
1110
+ export declare class FBXFileLoader {
1111
+ constructor();
1112
+ }
1113
+
1114
+ /** Babylon.js `FlyCamera` — 6-DOF free-flight camera. */
1115
+ export declare class FlyCamera extends TargetCamera {
1116
+ getClassName(): string;
1117
+ }
1118
+
1119
+ /**
1120
+ * Babylon.js `FollowCamera` — follows a `lockedTarget` at a fixed radius /
1121
+ * height / rotation offset, updated each frame via the scene's before-render hook.
1122
+ */
1123
+ export declare class FollowCamera extends TargetCamera {
1124
+ lockedTarget: LockedTarget | null;
1125
+ radius: number;
1126
+ heightOffset: number;
1127
+ /** Rotation offset around the target, in degrees. */
1128
+ rotationOffset: number;
1129
+ constructor(name: string, position: Vector3, scene?: Scene, lockedTarget?: LockedTarget);
1130
+ getClassName(): string;
1131
+ private _follow;
1132
+ }
1133
+
1134
+ /** Frames an `ArcRotateCamera` on a target by setting its radius (no zoom tween). */
1135
+ export declare class FramingBehavior implements Behavior<ArcRotateCamera> {
1136
+ readonly name = "Framing";
1137
+ radius: number;
1138
+ private _camera;
1139
+ init(): void;
1140
+ attach(camera: ArcRotateCamera): void;
1141
+ detach(): void;
1142
+ /** Set the camera radius to frame a target of the given world-space radius. */
1143
+ zoomOnBoundingRadius(boundingRadius: number): void;
1144
+ }
1145
+
1146
+ /** Babylon.js `FreeCamera` — keyboard/mouse free camera. */
1147
+ export declare class FreeCamera extends TargetCamera {
1148
+ getClassName(): string;
1149
+
1150
+ export declare const Frustum: {
1151
+ /** Extract the 6 frustum planes from a view-projection `transform`. */
1152
+ GetPlanes(transform: Matrix): Plane[];
1153
+ /** Extract the 6 frustum planes from `transform` into the supplied `planes` array. */
1154
+ GetPlanesToRef(transform: Matrix, planes: Plane[]): void;
1155
+ };
1156
+
1157
+ export declare class FxaaPostProcess {
1158
+ constructor();
1159
+ }
1160
+
1161
+ /** Babylon.js `GamepadCamera` — gamepad-controlled free camera. */
1162
+ export declare class GamepadCamera extends UniversalCamera {
1163
+ getClassName(): string;
1164
+ }
1165
+
1166
+ /**
1167
+ * Babylon.js `GaussianSplattingMesh`. Derives from `TransformNode` so the loaded
1168
+ * cloud's `position` / `rotation` / `scaling` proxy onto the Lite splat node.
1169
+ */
1170
+ export declare class GaussianSplattingMesh extends TransformNode {
24
1171
  constructor(name: string, url?: string | null, scene?: Scene, _keepInRam?: boolean);
1172
+ getClassName(): string;
25
1173
  get position(): Vector3;
1174
+ set position(value: Vector3);
1175
+ get rotation(): Vector3;
1176
+ set rotation(value: Vector3);
1177
+ get scaling(): Vector3;
1178
+ set scaling(value: Vector3);
26
1179
  /**
1180
+ * Babylon.js `gs.loadFileAsync(url?)` — fetch + parse a splat asset and adopt
1181
+ * the resulting Lite node. With no argument, loads the constructor URL.
1182
+ */
1183
+ loadFileAsync(url?: string): Promise<GaussianSplattingMesh>;
27
1184
  /** Babylon.js `gs.splatsData` — the raw 32-byte/splat row buffer (for inspection / `updateData`). */
1185
+ get splatsData(): ArrayBuffer | null;
1186
+ /**
1187
+ * Babylon.js `gs.updateData(buffer, sh?, options?)` — replace the splat data in
1188
+ * place. Babylon Lite always applies its loader's Y convention on update; the
1189
+ * `sh` argument is accepted for signature parity and ignored.
1190
+ *
1191
+ * `options.flipY === false` is honoured: Babylon.js's `.splat` loader flips Y
1192
+ * on load by default, so `flipY:false` re-uploads the buffer **without** that
1193
+ * flip — i.e. mirrored relative to the default-loaded pose, which ported scenes
1194
+ * then correct with `scaling.y = -1`. Lite has no per-call flip flag and always
1195
+ * applies its (flip-on-load-equivalent) convention, so we mirror the row Y here
1196
+ * to reproduce the `flipY:false` pose before handing the buffer to Lite.
1197
+ */
1198
+ updateData(splatBuffer: ArrayBuffer, _sh?: unknown, options?: {
1199
+ flipY?: boolean;
1200
+ }): void;
1201
+ /** Babylon.js `gs.bakeCurrentTransformIntoVertices()` — fold the node transform into the splat data. */
1202
+ bakeCurrentTransformIntoVertices(): void;
1203
+
1204
+ export declare class GeometryBufferRenderer {
1205
+ constructor();
1206
+ }
1207
+
1208
+ /**
1209
+ * Babylon.js `GeospatialCamera` — globe-orbit camera anchored to a surface
1210
+ * `center` (ECEF), orbiting at `radius` with `yaw`/`pitch`. Wraps Babylon Lite's
1211
+ * `createGeospatialCamera` + `setGeospatialOrientation` (which clamps pitch
1212
+ * against the effective max for the current radius, so each orientation field is
1213
+ * applied through Lite with the others left at their current values).
1214
+ */
1215
+ export declare class GeospatialCamera extends Camera {
28
1216
  constructor(name: string, scene?: Scene, options?: {
1217
+ planetRadius: number;
1218
+ });
1219
+ getClassName(): string;
1220
+ /** Anchored surface point the camera orbits (ECEF coordinates). */
1221
+ get center(): Vector3;
1222
+ set center(value: Vector3);
1223
+ /** Distance from the camera to its centre point. */
1224
+ get radius(): number;
1225
+ set radius(value: number);
1226
+ /** Yaw about the geocentric up axis (0 = north, π/2 = east). */
1227
+ get yaw(): number;
1228
+ set yaw(value: number);
1229
+ /** Pitch from looking straight down (0) to the horizon (π/2). */
1230
+ get pitch(): number;
1231
+ set pitch(value: number);
1232
+ attachControl(canvas: HTMLCanvasElement, _noPreventDefault?: boolean): void;
1233
+ }
1234
+
1235
+ /** Shared base for compat gizmos (Babylon.js `Gizmo`). */
1236
+ declare abstract class GizmoBase {
29
1237
  protected constructor(layer: UtilityLayerRenderer);
1238
+ abstract get attachedMesh(): AbstractMesh | null;
1239
+ abstract set attachedMesh(value: AbstractMesh | null);
1240
+ abstract dispose(): void;
1241
+ }
1242
+
1243
+ /**
1244
+ * Babylon.js `GizmoManager` — coordinates the position/rotation/scale/bounding-box
1245
+ * gizmos over a shared utility layer and a single attached mesh.
1246
+ */
1247
+ export declare class GizmoManager {
1248
+ readonly gizmos: {
1249
+ positionGizmo: PositionGizmo | null;
1250
+ rotationGizmo: RotationGizmo | null;
1251
+ scaleGizmo: ScaleGizmo | null;
1252
+ boundingBoxGizmo: BoundingBoxGizmo | null;
1253
+ };
1254
+ private readonly _layer;
1255
+ private _attached;
1256
+ constructor(scene: Scene);
1257
+ set positionGizmoEnabled(enabled: boolean);
1258
+ set rotationGizmoEnabled(enabled: boolean);
1259
+ set scaleGizmoEnabled(enabled: boolean);
1260
+ set boundingBoxGizmoEnabled(enabled: boolean);
1261
+ attachToMesh(mesh: Mesh | null): void;
1262
+ dispose(): void;
1263
+ private _toggle;
1264
+ }
1265
+
1266
+ export declare class GlowLayer {
1267
+ constructor();
1268
+ }
1269
+
1270
+ export declare class GPUParticleSystem {
1271
+ constructor();
1272
+ }
1273
+
1274
+ export declare class GPUPicker {
1275
+ private _picker;
1276
+ private _scene;
1277
+ /** Maps Lite nodes (regular mesh or splat node) back to the compat meshes the caller supplied. */
1278
+ private readonly _liteToCompat;
1279
+ /** Regular Lite meshes that are pickable (drives the Lite `pickAsync` filter; GS meshes bypass it). */
1280
+ private _pickable;
1281
+ private _inProgress;
1282
+ /** True while an async pick is running (Babylon.js parity). */
1283
+ get pickingInProgress(): boolean;
1284
+ /** Replace the picking list. Passing `null` clears it. */
1285
+ setPickingList(list: PickListItem[] | null): void;
1286
+ /** Add meshes to the current picking list. */
1287
+ addPickingList(list: PickListItem[]): void;
1288
+ /** Clear the picking list and release its bookkeeping. */
1289
+ clearPickingList(): void;
1290
+ /** Pick the mesh at canvas coordinates `(x, y)`. Resolves to `null` on a miss. */
1291
+ pickAsync(x: number, y: number, disposeWhenDone?: boolean): Promise<IGPUPickingInfo | null>;
1292
+ /** Pick at several points. Always returns one entry per coordinate (mesh or `null`). */
1293
+ multiPickAsync(xy: Array<{
1294
+ x: number;
1295
+ y: number;
1296
+ }>, disposeWhenDone?: boolean): Promise<IGPUMultiPickingInfo | null>;
1297
+ /** Box picking is not implemented in Babylon Lite. */
1298
+ boxPickAsync(): never;
1299
+ /** Release GPU picking resources. */
1300
+ dispose(): void;
1301
+ }
1302
+
1303
+ export declare class GreasedLineMesh {
1304
+ constructor();
1305
+ }
1306
+
1307
+ export declare class GridMaterial {
1308
+ name: string;
1309
+ /** Background color between the lines (Babylon.js default black). */
1310
+ mainColor: Color3;
1311
+ /** Color of the grid lines (Babylon.js default teal). */
1312
+ lineColor: Color3;
1313
+ /** Spacing of the grid in object-space units. */
1314
+ gridRatio: number;
1315
+ /** Object-space offset added before computing the grid. */
1316
+ gridOffset: Vector3;
1317
+ /** Every Nth line is a major line. */
1318
+ majorUnitFrequency: number;
1319
+ /** Visibility of the minor (non-major) lines, `0..1`. */
1320
+ minorUnitVisibility: number;
1321
+ /** Opacity of the grid outside the lines; `<1` enables the transparent path. */
1322
+ opacity: number;
1323
+ /** Cosine-based antialiasing of the lines. */
1324
+ antialias: boolean;
1325
+ /** Combine axes with `max` instead of additive sum. */
1326
+ useMaxLine: boolean;
1327
+ /**
1328
+ * Babylon.js `@babylonjs/materials` 9.x `linesOnly` — show only the lines with
1329
+ * transparency between them. Babylon Lite expresses this via the opacity (`<1`)
1330
+ * transparent path, so enabling it forces that path.
1331
+ */
1332
+ linesOnly: boolean;
1333
+ /** Back-face culling toggle. */
1334
+ backFaceCulling: boolean;
1335
+ /** Babylon.js `Material.transparencyMode` (accepted for parity). */
1336
+ transparencyMode: number | null;
1337
+ /** Wireframe toggle (not honoured by the grid material). */
1338
+ wireframe: boolean;
30
1339
  constructor(name: string, _scene?: Scene);
1340
+ getClassName(): string;
31
1341
  dispose(): void;
1342
+ }
1343
+
1344
+ /** Babylon.js `GroundMesh` — a ground plane mesh. CPU height queries are not modelled. */
1345
+ export declare class GroundMesh extends Mesh {
1346
+ getClassName(): string;
1347
+ /** CPU height-at-coordinates query — needs a CPU heightmap accessor not present in Babylon Lite. */
1348
+ getHeightAtCoordinates(): never;
1349
+ }
1350
+
1351
+ declare interface GroundOptions {
1352
+ width?: number;
1353
+ height?: number;
1354
+ subdivisions?: number;
1355
+ }
1356
+
1357
+ export declare class HavokPlugin {
1358
+ constructor();
1359
+ }
1360
+
1361
+ /** Babylon.js `HDRCubeTexture` — see {@link CubeTexture}; use native `loadHdrEnvironment`. */
1362
+ export declare class HDRCubeTexture {
1363
+ constructor();
1364
+ }
1365
+
1366
+ export declare class HemisphericLight extends Light {
32
1367
  constructor(name: string, direction: Vector3, scene?: Scene);
1368
+ getClassName(): string;
1369
+ get intensity(): number;
1370
+ set intensity(value: number);
1371
+ get direction(): Vector3;
1372
+ set direction(value: Vector3);
1373
+ get diffuse(): Color3;
1374
+ set diffuse(value: Color3);
1375
+ get specular(): Color3;
1376
+ set specular(value: Color3);
1377
+ get groundColor(): Color3;
1378
+ set groundColor(value: Color3);
1379
+ }
1380
+
1381
+ export declare class HighlightLayer {
1382
+ constructor();
1383
+ }
1384
+
1385
+ export declare interface IAnimationKey {
1386
+ frame: number;
1387
+ value: number | number[];
1388
+ /** Babylon.js per-key interpolation hint (`AnimationKeyInterpolation`). */
1389
+ interpolation?: number;
1390
+ }
1391
+
1392
+ /** Result of a multi-point GPU pick. Mirrors Babylon.js `IGPUMultiPickingInfo`. */
1393
+ export declare interface IGPUMultiPickingInfo {
1394
+ meshes: Array<PickableMesh | null>;
1395
+ thinInstanceIndexes?: number[];
1396
+ }
1397
+
1398
+ /** Result of a single GPU pick. Mirrors Babylon.js `IGPUPickingInfo`. */
1399
+ export declare interface IGPUPickingInfo {
1400
+ mesh: PickableMesh;
1401
+ thinInstanceIndex?: number;
1402
+ }
1403
+
1404
+ /**
1405
+ * Babylon.js `ImageProcessingConfiguration` — only the tone-mapping constants are
1406
+ * surfaced (the live exposure/contrast/tone-mapping toggle is exposed through
1407
+ * `scene.imageProcessingConfiguration`).
1408
+ */
1409
+ export declare class ImageProcessingConfiguration {
1410
+ static readonly TONEMAPPING_STANDARD = 0;
1411
+ static readonly TONEMAPPING_ACES = 1;
1412
+ static readonly TONEMAPPING_KHR_PBR_NEUTRAL = 2;
1413
+ }
1414
+
1415
+ /** Babylon.js `ImportMeshAsync(source, scene, options?)` — imports an asset into the scene. */
1416
+ export declare function ImportMeshAsync(source: string, scene: Scene, _options?: unknown): Promise<ImportResult>;
1417
+
1418
+ declare interface ImportResult {
1419
+ meshes: Array<LoadedMesh | GaussianSplattingMesh>;
1420
+ particleSystems: unknown[];
1421
+ skeletons: unknown[];
1422
+ animationGroups: AnimationGroup_2[];
1423
+ transformNodes: unknown[];
1424
+ lights: unknown[];
1425
+ /** The underlying Lite asset container (compat extension; absent for splat assets). */
1426
+ container?: AssetContainer;
1427
+ }
1428
+
1429
+ /** Adds `value` to `target[propertyPath]` when triggered. */
1430
+ export declare class IncrementValueAction extends Action {
1431
+ private readonly _target;
1432
+ private readonly _propertyPath;
1433
+ private readonly _value;
1434
+ constructor(trigger: number, _target: Record<string, unknown>, _propertyPath: string, _value: number, condition?: Condition);
1435
+ execute(): void;
1436
+ }
1437
+
1438
+ /** Babylon.js `InitializeCSG2Async()` — load the Manifold runtime before any `CSG2` use. */
1439
+ export declare function InitializeCSG2Async(): Promise<void>;
1440
+
1441
+ /** Babylon.js `InstancedMesh` — hardware instances are not modelled; use thin instances. */
1442
+ export declare class InstancedMesh {
1443
+ constructor();
1444
+ }
1445
+
1446
+ /**
1447
+ * Babylon.js `KHR_materials_variants` extension helpers. Mirrors the static
1448
+ * surface ported code calls (`SelectVariant` / `GetAvailableVariants` / `Reset`)
1449
+ * over Babylon Lite's container-keyed variant API.
1450
+ */
1451
+ export declare const KHR_materials_variants: {
1452
+ /** Switch the loaded asset to the named material variant. */
1453
+ SelectVariant(rootMesh: unknown, variantName: string): void;
1454
+ /** The variant names available on the loaded asset (empty when it has none). */
1455
+ GetAvailableVariants(rootMesh: unknown): readonly string[];
1456
+ /** Restore the asset's default (variant-free) materials. */
1457
+ Reset(rootMesh: unknown): void;
1458
+ };
1459
+
1460
+ export declare class Layer {
1461
+ constructor();
1462
+ }
1463
+
1464
+ /** Babylon.js `Light` — base class for all lights (derives from `Node`). */
1465
+ export declare abstract class Light extends Node_2 {
33
1466
  protected constructor(name: string, scene?: Scene);
1467
+ getClassName(): string;
1468
+ abstract get intensity(): number;
1469
+ abstract set intensity(value: number);
1470
+ /** Detach this light's shadow generator (compat for `light.shadowEnabled = false`). */
1471
+ set shadowEnabled(enabled: boolean);
1472
+ dispose(): void;
1473
+ }
1474
+
1475
+ export declare class LightGizmo {
34
1476
  private _attached;
1477
+ constructor(layer: UtilityLayerRenderer);
1478
+ get light(): Light | null;
1479
+ set light(value: Light | null);
1480
+ /**
1481
+ * Babylon.js `LightGizmo.attachedMesh` — the gizmo's visual root. Babylon.js
1482
+ * code reads this to reposition the gizmo for lights without a position (e.g.
1483
+ * hemispheric). Returns a thin proxy over the Lite gizmo's `root` node whose
1484
+ * `position` writes through to it.
1485
+ */
1486
+ get attachedMesh(): {
1487
+ position: Vector3;
1488
+ };
1489
+ dispose(): void;
1490
+ }
1491
+
1492
+ export declare class LinesMesh {
1493
+ constructor();
1494
+ }
1495
+
1496
+ /**
1497
+ * Error thrown when Babylon.js code reaches an API surface that the Babylon Lite
1498
+ * compatibility layer cannot (or does not yet) support.
1499
+ *
1500
+ * The compat layer intentionally favours a loud, discoverable failure over a
1501
+ * silent wrong result: if a ported scene hits one of these, the porting gap is
1502
+ * surfaced immediately with a pointer to the reason and (where relevant) the
1503
+ * native Lite API to use instead.
1504
+ */
1505
+ export declare class LiteCompatError extends Error {
1506
+ constructor(api: string, detail?: string);
1507
+ }
1508
+
1509
+ /** Babylon.js `LoadAssetContainerAsync(source, scene, options?)` — loads into a container without adding. */
1510
+ export declare function LoadAssetContainerAsync(source: string, scene: Scene, _options?: unknown): Promise<AssetContainer>;
1511
+
1512
+ /**
1513
+ * A Babylon.js-shaped handle over a single loaded Babylon Lite mesh. Exposes the
1514
+ * subset used by model-framing scenes: local bounding info, vertex data, and name.
1515
+ */
1516
+ declare class LoadedMesh {
1517
+ readonly name: string;
1518
+ private readonly _mesh;
35
1519
  constructor(mesh: Mesh_2, container?: AssetContainer_2);
36
1520
  /** Babylon.js `refreshBoundingInfo()` — bounds are read on demand, so this is a no-op. */
1521
+ refreshBoundingInfo(_options?: unknown): LoadedMesh;
1522
+ /** Babylon.js `getBoundingInfo()` — local-space AABB of this mesh (see module note). */
1523
+ getBoundingInfo(): BoundingInfo;
1524
+ /** Babylon.js `getVerticesData(kind)` — CPU position buffer (positions only). */
1525
+ getVerticesData(kind: string): Float32Array | null;
1526
+ /** Babylon.js `getTotalVertices()`. */
1527
+ getTotalVertices(): number;
1528
+ }
1529
+
1530
+ declare interface LockedTarget {
1531
+ position: {
1532
+ x: number;
1533
+ y: number;
1534
+ z: number;
1535
+ };
1536
+ }
1537
+
1538
+ /** Babylon.js `Logger` — level-gated console logging. */
1539
+ export declare const Logger: {
1540
+ NoneLogLevel: number;
1541
+ MessageLogLevel: number;
1542
+ WarningLogLevel: number;
1543
+ ErrorLogLevel: number;
1544
+ AllLogLevel: number;
1545
+ /** Current log-level bitmask. */
1546
+ LogLevels: number;
1547
+ Log(message: string): void;
1548
+ Warn(message: string): void;
1549
+ Error(message: string): void;
1550
+ };
1551
+
1552
+ /** Babylon.js `Material` — base class for all materials. */
1553
+ export declare abstract class Material {
1554
+ name: string;
1555
+ /** Common transparency mode flag (Babylon.js `Material.transparencyMode`). */
1556
+ transparencyMode: number | null;
1557
+ /** Back-face culling toggle (Babylon.js `Material.backFaceCulling`). */
1558
+ private _backFaceCulling;
1559
+ get backFaceCulling(): boolean;
1560
+ set backFaceCulling(value: boolean);
37
1561
  /** Wireframe rendering toggle (not honoured by all Lite materials). */
1562
+ wireframe: boolean;
38
1563
  protected constructor(name: string, scene?: Scene);
1564
+ getClassName(): string;
1565
+ protected _markDirty(): void;
39
1566
  dispose(): void;
1567
+ }
1568
+
1569
+ export declare class Matrix {
1570
+ readonly m: Float32Array;
1571
+ constructor();
1572
+ set(index: number, value: number): this;
1573
+ copyFrom(source: Matrix): this;
1574
+ clone(): Matrix;
1575
+ asArray(): Float32Array;
1576
+ toArray(): number[];
1577
+ /** Babylon.js `Matrix.copyToArray` — copy the 16 elements into `array` at `offset`. */
1578
+ copyToArray(array: Float32Array | number[], offset?: number): this;
1579
+ equals(other: Matrix): boolean;
1580
+ multiply(other: Matrix): Matrix;
1581
+ multiplyToRef(other: Matrix, result: Matrix): Matrix;
1582
+ transpose(): Matrix;
1583
+ determinant(): number;
1584
+ invert(): Matrix;
1585
+ invertToRef(result: Matrix): Matrix;
1586
+ getTranslation(): Vector3;
1587
+ static FromValues(m0: number, m1: number, m2: number, m3: number, m4: number, m5: number, m6: number, m7: number, m8: number, m9: number, m10: number, m11: number, m12: number, m13: number, m14: number, m15: number): Matrix;
1588
+ static FromArray(array: ArrayLike<number>, offset?: number): Matrix;
1589
+ static Identity(): Matrix;
1590
+ static Zero(): Matrix;
1591
+ static Translation(x: number, y: number, z: number): Matrix;
1592
+ static Scaling(x: number, y: number, z: number): Matrix;
1593
+ static RotationX(angle: number): Matrix;
1594
+ static RotationY(angle: number): Matrix;
1595
+ static RotationZ(angle: number): Matrix;
1596
+ /** Babylon.js `Matrix.LookAtLH(eye, target, up)` — left-handed view matrix. */
1597
+ static LookAtLH(eye: Vector3, target: Vector3, up: Vector3): Matrix;
1598
+ /** Babylon.js `Matrix.OrthoOffCenterLH(left, right, bottom, top, znear, zfar, halfZRange?)` — LH ortho projection. */
1599
+ static OrthoOffCenterLH(left: number, right: number, bottom: number, top: number, znear: number, zfar: number, _halfZRange?: boolean): Matrix;
1600
+ /**
1601
+ * Babylon.js `Matrix.Compose(scale, rotation, translation)` — build a TRS matrix
1602
+ * from a scale vector, a rotation quaternion, and a translation vector (row-vector
1603
+ * convention, translation in elements 12/13/14).
1604
+ */
1605
+ static Compose(scale: Vector3, rotation: {
1606
+ x: number;
1607
+ y: number;
1608
+ z: number;
1609
+ w: number;
1610
+ }, translation: Vector3): Matrix;
1611
+ /** Babylon.js `Matrix.markAsUpdated()` — Lite has no per-matrix dirty flag; no-op for parity. */
1612
+ markAsUpdated(): this;
1613
+ }
1614
+
1615
+ /** Babylon.js `Mesh` — a concrete renderable mesh with geometry. */
1616
+ export declare class Mesh extends AbstractMesh {
1617
+ constructor(name: string, sceneOrLite?: Scene | Mesh_2, scene?: Scene);
1618
+ getClassName(): string;
1619
+ private _morphTargetManager;
1620
+ /**
1621
+ * Babylon.js `mesh.morphTargetManager`. Babylon Lite builds morph GPU data via
1622
+ * `createMorphTargets` and stores it on the Lite mesh; the compat manager is
1623
+ * registered with the scene so the engine builds it at start (once the base
1624
+ * CPU geometry exists) and assigns it onto the Lite mesh before registration.
1625
+ */
1626
+ get morphTargetManager(): MorphTargetManager | null;
1627
+ set morphTargetManager(value: MorphTargetManager | null);
1628
+ /** Legacy `Mesh.CreateSphere(name, segments, diameter, scene)`. */
1629
+ static CreateSphere(name: string, segments: number, diameter: number, scene: Scene): Mesh;
1630
+ /** Legacy `Mesh.CreateBox(name, size, scene)`. */
1631
+ static CreateBox(name: string, size: number, scene: Scene): Mesh;
1632
+ /** Legacy `Mesh.CreateGround(name, width, height, subdivisions, scene)`. */
1633
+ static CreateGround(name: string, width: number, height: number, subdivisions: number, scene: Scene): Mesh;
1634
+ /** Legacy `Mesh.CreatePlane(name, size, scene)`. */
1635
+ static CreatePlane(name: string, size: number, scene: Scene): Mesh;
1636
+ /** Legacy `Mesh.CreateCylinder(name, height, diameterTop, diameterBottom, tessellation, _subdivisions, scene)`. */
1637
+ static CreateCylinder(name: string, height: number, diameterTop: number, diameterBottom: number, tessellation: number, _subdivisions: number, scene: Scene): Mesh;
1638
+ /** Legacy `Mesh.CreateTorus(name, diameter, thickness, tessellation, scene)`. */
1639
+ static CreateTorus(name: string, diameter: number, thickness: number, tessellation: number, scene: Scene): Mesh;
1640
+ /** Hardware-instanced copy — unsupported. Use native thin instances instead. */
1641
+ createInstance(): never;
1642
+ /**
1643
+ * Babylon.js `mesh.thinInstanceSetBuffer(kind, buffer, stride)`. Maps the
1644
+ * `"matrix"` and `"color"` instance buffers onto Babylon Lite's thin-instance
1645
+ * API. Applied immediately to the Lite mesh (before the scene builds).
1646
+ */
1647
+ thinInstanceSetBuffer(kind: string, buffer: Float32Array | null, _stride?: number): void;
1648
+ /** Deep mesh clone — not yet wrapped. */
1649
+ clone(): never;
1650
+ /** Level-of-detail — unsupported (no LOD system in Babylon Lite). */
1651
+ addLODLevel(): never;
1652
+ }
1653
+
1654
+ /** Babylon.js `MeshBuilder` — factory namespace for primitive meshes. */
1655
+ export declare const MeshBuilder: {
1656
+ CreateBox(name: string, options: BoxOptions, scene: Scene): Mesh;
1657
+ CreateSphere(name: string, options: SphereOptions, scene: Scene): Mesh;
1658
+ CreateGround(name: string, options: GroundOptions, scene: Scene): Mesh;
1659
+ /**
1660
+ * Babylon.js `MeshBuilder.CreateGroundFromHeightMap(name, url, options, scene)`.
1661
+ * Babylon.js returns the mesh synchronously and fills its geometry once the
1662
+ * heightmap image loads; we mirror that by returning a placeholder `GroundMesh`
1663
+ * immediately and swapping in the real geometry (via `resizeMeshGeometry`) when
1664
+ * the async Lite `createGroundFromHeightMap` resolves. The load is tracked so
1665
+ * the engine awaits it before the scene is registered.
1666
+ */
1667
+ CreateGroundFromHeightMap(name: string, url: string, options: object, scene: Scene): Mesh;
1668
+ CreatePlane(name: string, options: PlaneOptions, scene: Scene): Mesh;
1669
+ CreateCylinder(name: string, options: CylinderOptions, scene: Scene): Mesh;
1670
+ CreateTorus(name: string, options: object, scene: Scene): Mesh;
1671
+ CreateTorusKnot(name: string, options: object, scene: Scene): Mesh;
1672
+ CreateDisc(name: string, options: object, scene: Scene): Mesh;
1673
+ CreatePolyhedron(name: string, options: object, scene: Scene): Mesh;
1674
+ CreateRibbon(name: string, options: object, scene: Scene): Mesh;
1675
+ CreateTube(name: string, options: object, scene: Scene): Mesh;
1676
+ ExtrudeShape(name: string, options: object, scene: Scene): Mesh;
1677
+ CreateLines(): never;
1678
+ CreateLineSystem(): never;
1679
+ CreateDashedLines(): never;
1680
+ CreateDecal(): never;
1681
+ CreateText(): never;
1682
+ };
1683
+
1684
+ /** A compat mesh exposes its backing Lite mesh as `_lite`. */
1685
+ declare interface MeshLike {
1686
+ _lite: Mesh_2;
1687
+ }
1688
+
1689
+ /**
1690
+ * Babylon.js `MeshoptCompression` (`@babylonjs/core/Meshes/Compression/meshoptCompression`).
1691
+ *
1692
+ * In Babylon.js this singleton owns the meshopt decoder used by the glTF
1693
+ * `EXT_meshopt_compression` loader extension, and apps configure its decoder URL
1694
+ * via the static `Configuration`. Babylon Lite decodes meshopt-compressed buffers
1695
+ * itself inside its glTF loader feature (`gltf-feature-meshopt`), so no external
1696
+ * decoder needs wiring. This compat shim therefore accepts the `Configuration`
1697
+ * assignment ported code performs (a no-op here) so the import resolves and the
1698
+ * asset still loads — the actual decode happens in Lite.
1699
+ */
1700
+ export declare class MeshoptCompression {
1701
+ /**
1702
+ * Babylon.js `MeshoptCompression.Configuration` — the decoder location. Stored
1703
+ * for API parity but unused: Babylon Lite's glTF loader carries its own meshopt
1704
+ * decoder, so setting this has no effect on decoding.
1705
+ */
1706
+ static Configuration: {
1707
+ decoder: {
1708
+ url: string;
1709
+ };
1710
+ };
1711
+ private static _default;
1712
+ /** Babylon.js `MeshoptCompression.Default` — the lazily-created shared instance. */
1713
+ static get Default(): MeshoptCompression;
1714
+ }
1715
+
1716
+ export declare class MirrorTexture {
1717
+ constructor();
1718
+ }
1719
+
1720
+ /** Babylon.js `MorphTarget` — a single named morph influence with absolute target geometry. */
1721
+ export declare class MorphTarget {
1722
+ name: string;
40
1723
  private _influence;
1724
+ constructor(name: string, influence?: number, _scene?: Scene);
1725
+ get influence(): number;
1726
+ set influence(value: number);
1727
+ /** Babylon.js `MorphTarget.setPositions(data)` — absolute target positions. */
1728
+ setPositions(data: Float32Array | number[] | null): void;
1729
+ /** Babylon.js `MorphTarget.getPositions()`. */
1730
+ getPositions(): Float32Array | null;
1731
+ /** Babylon.js `MorphTarget.setNormals(data)` — absolute target normals. */
1732
+ setNormals(data: Float32Array | number[] | null): void;
1733
+ /** Babylon.js `MorphTarget.getNormals()`. */
1734
+ getNormals(): Float32Array | null;
1735
+ }
1736
+
1737
+ /** Babylon.js `MorphTargetManager` — owns a mesh's morph targets (Babylon Lite supports up to 4). */
1738
+ export declare class MorphTargetManager {
41
1739
  private readonly _targets;
1740
+ constructor(_scene?: Scene);
1741
+ get numTargets(): number;
1742
+ getTarget(index: number): MorphTarget;
1743
+ /** Babylon.js `MorphTargetManager.addTarget(target)`. */
1744
+ addTarget(target: MorphTarget): void;
1745
+
1746
+ /**
1747
+ * Stubs for Babylon.js core/loader APIs that are **known but not supported** by
1748
+ * Babylon Lite.
1749
+ *
1750
+ * Every entry here throws {@link LiteCompatError} on use (construction or call),
1751
+ * so a ported scene fails loudly with a clear pointer instead of either a
1752
+ * confusing "X is not exported from the compat package" error or, worse, a
1753
+ * silently-wrong render. These mirror the `❌ Not supported` /
1754
+ * `⛔ Out of scope` rows in `COMPAT-STATUS.md`.
1755
+ *
1756
+ * As Babylon Lite gains a capability, the corresponding stub here should be
1757
+ * replaced by a real wrapper (and its `COMPAT-STATUS.md` row upgraded).
1758
+ */
1759
+ export declare class MultiMaterial {
1760
+ constructor();
1761
+ }
1762
+
1763
+ declare abstract class Node_2 {
1764
+ name: string;
1765
+ /** String id. Defaults to the name (Babylon.js parity). */
1766
+ id: string;
1767
+ /** Process-unique numeric id, assigned at construction. */
1768
+ readonly uniqueId: number;
1769
+ /** Free-form user data slot (Babylon.js `Node.metadata`). */
1770
+ metadata: unknown;
42
1771
  protected constructor(name: string, scene?: Scene);
1772
+ /** The runtime class name (overridden by each subclass). */
1773
+ getClassName(): string;
1774
+ /** The scene this node belongs to, if any. */
1775
+ getScene(): Scene | undefined;
1776
+ /** The engine backing this node's scene, if any. */
1777
+ getEngine(): WebGPUEngine | undefined;
1778
+ get parent(): Node_2 | null;
1779
+ set parent(value: Node_2 | null);
43
1780
  /**
1781
+ * Babylon.js `node.getDescendants(directDescendantsOnly?, predicate?)` — the
1782
+ * nodes parented (directly or transitively) under this one, optionally filtered.
1783
+ */
1784
+ getDescendants(directDescendantsOnly?: boolean, predicate?: (node: Node_2) => boolean): Node_2[];
1785
+ /**
1786
+ * Babylon.js `node.getChildren(predicate?, directDescendantsOnly?)` — descendant
1787
+ * nodes (direct children by default), optionally filtered by a predicate.
1788
+ */
1789
+ getChildren(predicate?: (node: Node_2) => boolean, directDescendantsOnly?: boolean): Node_2[];
1790
+ /**
1791
+ * Babylon.js `node.getChildMeshes(directDescendantsOnly?, predicate?)` — the
1792
+ * descendant nodes that are meshes (all descendants by default).
1793
+ */
1794
+ getChildMeshes(directDescendantsOnly?: boolean, predicate?: (node: Node_2) => boolean): Node_2[];
1795
+ isEnabled(): boolean;
1796
+ setEnabled(value: boolean): void;
1797
+ isDisposed(): boolean;
1798
+ dispose(): void;
1799
+ export { Node_2 as Node }
1800
+
1801
+ export declare class NodeMaterial {
1802
+ name: string;
1803
+ backFaceCulling: boolean;
44
1804
  private readonly _json;
1805
+ private readonly _textureOverrides;
1806
+ constructor(name: string, _scene: Scene, json?: object | string);
1807
+ getClassName(): string;
1808
+ /** Babylon.js `getBlockByName(name)` — returns a proxy that captures texture overrides. */
1809
+ getBlockByName(name: string): NodeMaterialBlockProxy;
45
1810
  /** Babylon.js `NodeMaterial.build()` — Lite builds during parse, so this is a no-op. */
1811
+ build(_verbose?: boolean): void;
46
1812
  dispose(): void;
47
1813
  /**
1814
+ * Babylon.js `NodeMaterial.Parse(source, scene, rootUrl?)` — parse an NME graph
1815
+ * from inline JSON. Returns synchronously; the actual GPU compile runs async and
1816
+ * is driven by the engine (after shadow generators are built) before the scene
1817
+ * builds, so NME shadow-receiver blocks can sample the scene's shadow generators.
1818
+ */
1819
+ static Parse(source: object | string, scene: Scene, _rootUrl?: string): NodeMaterial;
1820
+ }
1821
+
1822
+ /** A thin proxy for a Babylon.js NME block, capturing texture assignments. */
1823
+ declare class NodeMaterialBlockProxy {
1824
+ private readonly _owner;
1825
+ private readonly _name;
1826
+ constructor(_owner: NodeMaterial, _name: string);
1827
+ set texture(value: TextureLike | null);
1828
+ get texture(): TextureLike | null;
1829
+ }
1830
+
1831
+ /**
1832
+ * Babylon.js's `NullEngine` — a headless engine with no GPU device, used to run
1833
+ * scene logic (animations, observables, frame timing) without rendering. Babylon
1834
+ * Lite has no headless context, so the compat `NullEngine` builds nothing on the
1835
+ * GPU: it drives a pure-JS `requestAnimationFrame` loop that advances each scene's
1836
+ * CPU animations and fires its before/after-render observables. Scenes constructed
1837
+ * against it skip the Lite scene-context build (see `Scene`'s headless branch), so
1838
+ * only the deviceless surface (CPU animations, manual 2D-canvas drawing, etc.)
1839
+ * works — there is no WebGPU rendering. Extends {@link WebGPUEngine} so it is
1840
+ * accepted everywhere a compat engine is (e.g. `new Scene(engine)`).
1841
+ */
1842
+ export declare class NullEngine extends WebGPUEngine {
1843
+ constructor();
1844
+ /** No GPU device to acquire. */
1845
+ initAsync(): Promise<void>;
1846
+ /**
1847
+ * Drive a pure-JS frame loop: each tick advances every registered scene's CPU
1848
+ * animations + render observables, then runs the user callback(s). No GPU work.
1849
+ */
1850
+ runRenderLoop(callback: () => void): void;
1851
+
1852
+ export declare class OBJFileLoader {
1853
+ constructor();
1854
+ }
1855
+
1856
+ export declare class Observable<T> {
1857
+ private _observers;
1858
+ add(callback: ObserverCallback<T>): ObserverCallback<T>;
1859
+ addOnce(callback: ObserverCallback<T>): ObserverCallback<T>;
1860
+ remove(callback: ObserverCallback<T> | null | undefined): boolean;
1861
+ removeCallback(callback: ObserverCallback<T>): boolean;
1862
+ notifyObservers(eventData?: T): void;
1863
+ hasObservers(): boolean;
1864
+ clear(): void;
1865
+ }
1866
+
1867
+ /**
1868
+ * Minimal Babylon.js-compatible `Observable`.
1869
+ *
1870
+ * Supports the common surface used by ported scenes: `add`, `addOnce`, `remove`,
1871
+ * `removeCallback`, `notifyObservers`, `hasObservers`, and `clear`. This is pure
1872
+ * JS with no Babylon Lite dependency and is fully unit-testable.
1873
+ */
1874
+ declare type ObserverCallback<T> = (eventData: T) => void;
1875
+
1876
+ export declare class OutlineRenderer {
1877
+ constructor();
1878
+ }
1879
+
1880
+ export declare class ParticleHelper {
1881
+ constructor();
1882
+ }
1883
+
1884
+ export declare class ParticleSystem {
1885
+ constructor();
1886
+ }
1887
+
1888
+ export declare class ParticleSystemSet {
1889
+ constructor();
1890
+ }
1891
+
1892
+ /** A 3D path with cumulative-distance queries over its points. */
1893
+ export declare class Path3D {
1894
+ private readonly _curve;
1895
+ private readonly _distances;
1896
+ private _length;
1897
+ constructor(points: Vector3[]);
1898
+ getCurve(): Vector3[];
1899
+ getPoints(): Vector3[];
1900
+ length(): number;
1901
+ /** Distances of each point from the path start, normalized to [0, 1] when `length > 0`. */
1902
+ getDistances(): number[];
1903
+ }
1904
+
1905
+ /** Babylon.js `PBRAnisotropicConfiguration` — the `pbr.anisotropy` sub-object over Lite `AnisotropyProps`. */
1906
+ export declare class PBRAnisotropicConfiguration {
1907
+ private readonly _props;
1908
+ private readonly _markDirty;
1909
+ constructor(_props: AnisotropyProps, _markDirty: () => void);
1910
+ get isEnabled(): boolean;
1911
+ set isEnabled(value: boolean);
1912
+ get intensity(): number;
1913
+ set intensity(value: number);
1914
+ get direction(): {
1915
+ x: number;
1916
+ y: number;
1917
+ };
1918
+ set direction(value: {
1919
+ x: number;
1920
+ y: number;
1921
+ });
1922
+ }
1923
+
1924
+ /**
1925
+ * Babylon.js `PBRClearCoatConfiguration` — the `pbr.clearCoat` sub-object.
1926
+ * Proxies the common clearcoat fields onto a Babylon Lite `ClearCoatProps`.
1927
+ */
1928
+ export declare class PBRClearCoatConfiguration {
1929
+ private readonly _props;
1930
+ private readonly _markDirty;
1931
+ constructor(_props: ClearCoatProps, _markDirty: () => void);
1932
+ get isEnabled(): boolean;
1933
+ set isEnabled(value: boolean);
1934
+ get intensity(): number;
1935
+ set intensity(value: number);
1936
+ get roughness(): number;
1937
+ set roughness(value: number);
1938
+ get indexOfRefraction(): number;
1939
+ set indexOfRefraction(value: number);
1940
+ }
1941
+
1942
+ /** Babylon.js `PBRIridescenceConfiguration` — the `pbr.iridescence` sub-object over Lite `IridescenceProps`. */
1943
+ export declare class PBRIridescenceConfiguration {
1944
+ private readonly _props;
1945
+ private readonly _markDirty;
1946
+ constructor(_props: IridescenceProps, _markDirty: () => void);
1947
+ get isEnabled(): boolean;
1948
+ set isEnabled(value: boolean);
1949
+ get intensity(): number;
1950
+ set intensity(value: number);
1951
+ get indexOfRefraction(): number;
1952
+ set indexOfRefraction(value: number);
1953
+ get minimumThickness(): number;
1954
+ set minimumThickness(value: number);
1955
+ get maximumThickness(): number;
1956
+ set maximumThickness(value: number);
1957
+ }
1958
+
1959
+ export declare class PBRMaterial extends PushMaterial {
48
1960
  constructor(name: string, scene?: Scene);
1961
+ getClassName(): string;
1962
+ get albedoColor(): Color3;
1963
+ set albedoColor(value: Color3);
1964
+ /**
1965
+ * Babylon.js `pbr.albedoTexture` (glTF base-color map). The texture loads
1966
+ * asynchronously, so the resolved Lite handle (+ sRGB flag) is bound in
1967
+ * {@link _ensureRenderable} at engine start rather than here.
1968
+ */
1969
+ get albedoTexture(): BaseTexture | null;
1970
+ set albedoTexture(texture: BaseTexture | null);
1971
+ private _albedoTexture;
1972
+ get metallic(): number;
1973
+ set metallic(value: number);
1974
+ get roughness(): number;
1975
+ set roughness(value: number);
1976
+ get emissiveColor(): Color3;
1977
+ set emissiveColor(value: Color3);
1978
+ /**
1979
+ * Babylon.js `pbr.usePhysicalLightFalloff`. When false, point/spot lights use
1980
+ * Standard-style linear range falloff instead of physical inverse-square.
1981
+ * Default true (matches Babylon.js PBRMaterial).
1982
+ */
1983
+ get usePhysicalLightFalloff(): boolean;
1984
+ set usePhysicalLightFalloff(value: boolean);
1985
+ get alpha(): number;
1986
+ set alpha(value: number);
1987
+ /**
1988
+ * Babylon.js `material.forceIrradianceInFragment`. Babylon Lite computes
1989
+ * irradiance in the fragment stage already, so this is accepted for parity.
1990
+ */
1991
+ forceIrradianceInFragment: boolean;
1992
+ protected _applyBackFaceCulling(value: boolean): void;
1993
+ /**
1994
+ * Babylon.js `pbr.clearCoat` sub-configuration. Lazily allocates the Lite
1995
+ * `clearCoat` props on first access and proxies the common fields
1996
+ * (`isEnabled`, `intensity`, `roughness`, `indexOfRefraction`) onto them.
1997
+ */
1998
+ get clearCoat(): PBRClearCoatConfiguration;
1999
+ private _clearCoat?;
2000
+ /** Babylon.js `pbr.sheen` sub-configuration (Lite `SheenProps`). */
2001
+ get sheen(): PBRSheenConfiguration;
2002
+ private _sheen?;
2003
+ /** Babylon.js `pbr.anisotropy` sub-configuration (Lite `AnisotropyProps`). */
2004
+ get anisotropy(): PBRAnisotropicConfiguration;
2005
+ private _anisotropy?;
2006
+ /** Babylon.js `pbr.iridescence` sub-configuration (Lite `IridescenceProps`). */
2007
+ get iridescence(): PBRIridescenceConfiguration;
2008
+ private _iridescence?;
2009
+ /**
2010
+ * Babylon.js `material.environmentTexture` / `reflectionTexture`. Babylon Lite
2011
+ * applies image-based lighting scene-wide rather than per-material, so a cube
2012
+ * environment assigned to a material is routed to the owning scene's
2013
+ * environment (the dominant single-IBL case Babylon.js scenes use).
2014
+ */
2015
+ get environmentTexture(): CubeTexture | null;
2016
+ set environmentTexture(value: CubeTexture | null);
2017
+ get reflectionTexture(): CubeTexture | null;
2018
+ set reflectionTexture(value: CubeTexture | null);
2019
+
2020
+ /**
2021
+ * Babylon.js `PBRMetallicRoughnessMaterial` — a simplified façade over
2022
+ * {@link PBRMaterial} exposing the metallic-roughness workflow directly.
2023
+ */
2024
+ export declare class PBRMetallicRoughnessMaterial extends PBRMaterial {
2025
+ getClassName(): string;
2026
+ /** Alias of `albedoColor` (glTF "base color"). */
2027
+ get baseColor(): Color3;
2028
+ set baseColor(value: Color3);
2029
+ }
2030
+
2031
+ /** Babylon.js `PBRSheenConfiguration` — the `pbr.sheen` sub-object over Lite `SheenProps`. */
2032
+ export declare class PBRSheenConfiguration {
2033
+ private readonly _props;
2034
+ private readonly _markDirty;
2035
+ constructor(_props: SheenProps, _markDirty: () => void);
2036
+ get isEnabled(): boolean;
2037
+ set isEnabled(value: boolean);
2038
+ get intensity(): number;
2039
+ set intensity(value: number);
2040
+ get roughness(): number;
2041
+ set roughness(value: number);
2042
+ get color(): Color3;
2043
+ set color(value: Color3);
2044
+ /** Babylon.js `sheen.texture`. Binds the Lite handle if the texture has resolved. */
2045
+ set texture(value: {
2046
+ _lite?: Texture2D;
2047
+ } | null);
2048
+ }
2049
+
2050
+ /**
2051
+ * Babylon.js `PBRSpecularGlossinessMaterial` — the spec/gloss workflow is
2052
+ * supported when loaded from glTF (`KHR_materials_pbrSpecularGlossiness`), but a
2053
+ * standalone manual spec/gloss material is not mapped onto Lite's metallic-roughness
2054
+ * PBR. The constructor builds a metallic-roughness PBR material and exposes a
2055
+ * `diffuseColor`/`glossiness` façade; results will not match BJS spec/gloss exactly.
2056
+ */
2057
+ export declare class PBRSpecularGlossinessMaterial extends PBRMaterial {
2058
+ getClassName(): string;
2059
+ get diffuseColor(): Color3;
2060
+ set diffuseColor(value: Color3);
2061
+ /** Maps glossiness → (1 - roughness). */
2062
+ get glossiness(): number;
2063
+ set glossiness(value: number);
2064
+ }
2065
+
2066
+ /** Rolling FPS/frame-time monitor (Babylon.js `PerformanceMonitor`). */
2067
+ export declare class PerformanceMonitor {
2068
+ private _samples;
2069
+ private _max;
2070
+ private _lastTime;
2071
+ private _enabled;
2072
+ constructor(frameSampleSize?: number);
2073
+ sampleFrame(timeMs?: number): void;
2074
+ get averageFrameTime(): number;
2075
+ get averageFPS(): number;
2076
+ get isSaturated(): boolean;
2077
+ enable(): void;
2078
+ disable(): void;
2079
+ reset(): void;
2080
+ }
2081
+
2082
+ export declare class PhysicsAggregate {
2083
+ constructor();
2084
+ }
2085
+
2086
+ export declare class PhysicsBody {
2087
+ constructor();
2088
+ }
2089
+
2090
+ export declare class PhysicsShape {
2091
+ constructor();
2092
+ }
2093
+
2094
+ /** A pickable compat mesh: a regular `Mesh` or a `GaussianSplattingMesh`. */
2095
+ declare type PickableMesh = Mesh | GaussianSplattingMesh;
2096
+
2097
+ declare type PickListItem = PickableMesh | {
2098
+ mesh: PickableMesh;
2099
+ material?: unknown;
2100
+ };
2101
+
2102
+ export declare class Plane {
2103
+ /** Normal x/y/z and signed distance `d` from the origin (`normal · p + d = 0`). */
2104
+ normal: Vector3;
2105
+ d: number;
2106
+ constructor(a: number, b: number, c: number, d: number);
2107
+ asArray(): [number, number, number, number];
2108
+ clone(): Plane;
2109
+ normalize(): this;
2110
+ /** Signed distance from `point` to this plane. */
2111
+ signedDistanceTo(point: Vector3): number;
2112
+ dotCoordinate(point: Vector3): number;
2113
+ static FromArray(array: ArrayLike<number>): Plane;
2114
+ static FromPositionAndNormal(origin: Vector3, normal: Vector3): Plane;
2115
+ static FromPoints(point1: Vector3, point2: Vector3, point3: Vector3): Plane;
2116
+ /** Transform a copy of this plane by the transpose of the inverse of `transformation`. */
2117
+ transform(transformation: Matrix): Plane;
2118
+ }
2119
+
2120
+ /** Babylon.js `PlaneDragGizmo` — drags the attached node within a plane. */
2121
+ export declare class PlaneDragGizmo extends GizmoBase {
49
2122
  private _attached;
2123
+ constructor(dragPlaneNormal: Vector3, color: Color3, layer: UtilityLayerRenderer);
2124
+ get attachedMesh(): AbstractMesh | null;
2125
+ set attachedMesh(value: AbstractMesh | null);
2126
+ get attachedNode(): Node_2 | null;
2127
+ set attachedNode(value: Node_2 | null);
2128
+ dispose(): void;
2129
+ }
2130
+
2131
+ declare interface PlaneOptions {
2132
+ size?: number;
2133
+ width?: number;
2134
+ height?: number;
2135
+ }
2136
+
2137
+ /** Babylon.js `PlaneRotationGizmo` — rotates the attached node about a plane normal. */
2138
+ export declare class PlaneRotationGizmo extends GizmoBase {
50
2139
  private _attached;
2140
+ constructor(planeNormal: Vector3, color: Color3, layer: UtilityLayerRenderer);
2141
+ get attachedMesh(): AbstractMesh | null;
2142
+ set attachedMesh(value: AbstractMesh | null);
2143
+ get attachedNode(): Node_2 | null;
2144
+ set attachedNode(value: Node_2 | null);
2145
+ dispose(): void;
2146
+ }
2147
+
2148
+ export declare class PointLight extends Light {
51
2149
  constructor(name: string, position: Vector3, scene?: Scene);
2150
+ getClassName(): string;
2151
+ get intensity(): number;
2152
+ set intensity(value: number);
2153
+ get range(): number;
2154
+ set range(value: number);
2155
+ get position(): Vector3;
2156
+ set position(value: Vector3);
2157
+ get diffuse(): Color3;
2158
+ set diffuse(value: Color3);
2159
+ get specular(): Color3;
2160
+ set specular(value: Color3);
2161
+ }
2162
+
2163
+ export declare class PointsCloudSystem {
2164
+ constructor();
2165
+ }
2166
+
2167
+ export declare class PositionGizmo extends GizmoBase {
52
2168
  private _attached;
2169
+ constructor(layer: UtilityLayerRenderer);
2170
+ /** Babylon.js `Gizmo.updateGizmoRotationToMatchAttachedMesh` — orient widgets to the node's local axes. */
2171
+ set updateGizmoRotationToMatchAttachedMesh(value: boolean);
2172
+ get attachedMesh(): AbstractMesh | null;
2173
+ set attachedMesh(value: AbstractMesh | null);
2174
+ get attachedNode(): AbstractMesh | null;
2175
+ set attachedNode(value: AbstractMesh | null);
2176
+ dispose(): void;
2177
+ }
2178
+
2179
+ export declare class PostProcess {
2180
+ constructor();
2181
+ }
2182
+
2183
+ /** Babylon.js `PrecisionDate` — high-resolution timestamp source. */
2184
+ export declare const PrecisionDate: {
2185
+ readonly Now: number;
2186
+ };
2187
+
2188
+ /** Evaluates a user predicate. */
2189
+ export declare class PredicateCondition extends Condition {
2190
+ private readonly _predicate;
2191
+ constructor(_predicate: () => boolean);
2192
+ isValid(): boolean;
2193
+ }
2194
+
2195
+ /** Babylon.js `PushMaterial` — intermediate base; behaves like {@link Material} here. */
2196
+ export declare abstract class PushMaterial extends Material {
2197
+ getClassName(): string;
2198
+ }
2199
+
2200
+ export declare class QuadraticEase extends EasingFunction {
2201
+ easeInCore(gradient: number): number;
2202
+ }
2203
+
2204
+ export declare class QuarticEase extends EasingFunction {
2205
+ easeInCore(gradient: number): number;
2206
+ }
2207
+
2208
+ export declare class Quaternion {
2209
+ x: number;
2210
+ y: number;
2211
+ z: number;
2212
+ w: number;
2213
+ constructor(x?: number, y?: number, z?: number, w?: number);
2214
+ set(x: number, y: number, z: number, w: number): this;
2215
+ copyFrom(source: Quaternion): this;
2216
+ multiply(other: Quaternion): Quaternion;
2217
+ length(): number;
2218
+ normalize(): this;
2219
+ conjugate(): Quaternion;
2220
+ clone(): Quaternion;
2221
+ equals(other: Quaternion): boolean;
2222
+ asArray(): [number, number, number, number];
2223
+ toEulerAngles(): Vector3;
2224
+ static Identity(): Quaternion;
2225
+ static FromEulerAngles(x: number, y: number, z: number): Quaternion;
2226
+ static RotationYawPitchRoll(yaw: number, pitch: number, roll: number): Quaternion;
2227
+ static RotationAxis(axis: Vector3, angle: number): Quaternion;
2228
+ static Slerp(left: Quaternion, right: Quaternion, amount: number): Quaternion;
2229
+ }
2230
+
2231
+ export declare class QuinticEase extends EasingFunction {
2232
+ easeInCore(gradient: number): number;
2233
+ }
2234
+
2235
+ /**
2236
+ * Babylon.js `RawTexture` — a texture created from raw pixel bytes. Backed by
2237
+ * Babylon Lite's `createTexture2DFromPixels`; the GPU handle is available
2238
+ * synchronously after construction.
2239
+ */
2240
+ export declare class RawTexture extends BaseTexture {
2241
+ private readonly _scene;
2242
+ constructor(data: Uint8Array, width: number, height: number, scene: Scene);
2243
+ getClassName(): string;
2244
+ /** Replace the texture's pixel contents. */
2245
+ update(data: Uint8Array): void;
2246
+ whenReadyAsync(): Promise<void>;
2247
+ static CreateRGBATexture(data: Uint8Array, width: number, height: number, scene: Scene): RawTexture;
2248
+ }
2249
+
2250
+ export declare class Ray {
2251
+ origin: Vector3;
2252
+ direction: Vector3;
2253
+ length: number;
2254
+ constructor(origin: Vector3, direction: Vector3, length?: number);
2255
+ clone(): Ray;
2256
+ /** Distance at which this ray crosses `plane`, or `null` if parallel / behind. */
2257
+ intersectsPlane(plane: Plane): number | null;
2258
+ /** True if this ray passes within `sphereRadius` of `spherePosition`. */
2259
+ intersectsSphere(spherePosition: Vector3, sphereRadius: number): boolean;
2260
+ static Zero(): Ray;
2261
+ static CreateNew(x: number, y: number, z: number, dx: number, dy: number, dz: number, length?: number): Ray;
2262
+ }
2263
+
2264
+ export declare class RecastJSPlugin {
2265
+ constructor();
2266
+ }
2267
+
2268
+ export declare class RectAreaLight {
2269
+ constructor();
2270
+ }
2271
+
2272
+ export declare class ReflectionProbe {
2273
+ constructor();
2274
+ }
2275
+
2276
+ /** Babylon.js `RenderTargetTexture` — offscreen render target. Use the native frame-graph RTT APIs. */
2277
+ export declare class RenderTargetTexture {
2278
+ constructor();
2279
+ }
2280
+
2281
+ export declare class RotationGizmo extends GizmoBase {
53
2282
  private _attached;
2283
+ constructor(layer: UtilityLayerRenderer);
2284
+ /** Babylon.js `Gizmo.updateGizmoRotationToMatchAttachedMesh` — orient widgets to the node's local axes. */
2285
+ set updateGizmoRotationToMatchAttachedMesh(value: boolean);
2286
+ get attachedMesh(): AbstractMesh | null;
2287
+ set attachedMesh(value: AbstractMesh | null);
2288
+ get attachedNode(): AbstractMesh | null;
2289
+ set attachedNode(value: AbstractMesh | null);
2290
+ dispose(): void;
2291
+ }
2292
+
2293
+ /** Babylon.js `Scalar` namespace — common scalar utilities. */
2294
+ export declare const Scalar: {
2295
+ Clamp(value: number, min?: number, max?: number): number;
2296
+ Lerp(start: number, end: number, amount: number): number;
2297
+ InverseLerp(a: number, b: number, value: number): number;
2298
+ DegreesToRadians(degrees: number): number;
2299
+ RadiansToDegrees(radians: number): number;
2300
+ WithinEpsilon(a: number, b: number, epsilon?: number): boolean;
2301
+ Normalize(value: number, min: number, max: number): number;
2302
+ Denormalize(normalized: number, min: number, max: number): number;
2303
+ };
2304
+
2305
+ export declare class ScaleGizmo extends GizmoBase {
54
2306
  private _attached;
2307
+ constructor(layer: UtilityLayerRenderer);
2308
+ /** Babylon.js `Gizmo.updateGizmoRotationToMatchAttachedMesh` — orient widgets to the node's local axes. */
2309
+ set updateGizmoRotationToMatchAttachedMesh(value: boolean);
2310
+ get attachedMesh(): AbstractMesh | null;
2311
+ set attachedMesh(value: AbstractMesh | null);
2312
+ get attachedNode(): AbstractMesh | null;
2313
+ set attachedNode(value: AbstractMesh | null);
2314
+ dispose(): void;
2315
+ }
2316
+
2317
+ export declare class Scene extends AbstractScene {
55
2318
  /** Babylon.js fog-mode constants. */
2319
+ static readonly FOGMODE_NONE = 0;
2320
+ static readonly FOGMODE_EXP = 1;
2321
+ static readonly FOGMODE_EXP2 = 2;
2322
+ static readonly FOGMODE_LINEAR = 3;
2323
+ /** Fires before each scene render (wired to Lite's before-render hook). */
2324
+ readonly onBeforeRenderObservable: Observable<Scene>;
2325
+ /** Fires before animations are evaluated each frame (used by ported cross-fade drivers). */
2326
+ readonly onBeforeAnimationsObservable: Observable<Scene>;
2327
+ /** Fires after each scene render. */
2328
+ readonly onAfterRenderObservable: Observable<Scene>;
2329
+ /** Fires once when the scene is disposed. */
2330
+ readonly onDisposeObservable: Observable<Scene>;
2331
+ /**
2332
+ * Babylon.js `scene.animationGroups` / `scene.animatables`. Loaded glTF /
2333
+ * `.babylon` animation clips live on the Lite scene; `animationGroups` returns
2334
+ * BJS-shaped `AnimationGroup`s over them (so scenes can `goToFrame`/`pause`/`stop`
2335
+ * to freeze a model at a deterministic frame). `animatables` surfaces the running
2336
+ * CPU `Animatable`s started via `beginDirectAnimation`.
2337
+ */
2338
+ get animationGroups(): AnimationGroup[];
2339
+ /** Babylon.js `scene.getAnimationGroupByName(name)` — first loaded animation group with a matching name, else `null`. */
2340
+ getAnimationGroupByName(name: string): AnimationGroup | null;
2341
+ get animatables(): Animatable_2[];
2342
+ private readonly _engine;
2343
+ private _activeCamera;
2344
+ private _defaultMaterial;
2345
+ private _fogMode;
2346
+ private _fogStart;
2347
+ private _fogEnd;
2348
+ private _fogDensity;
2349
+ private _fogColor;
56
2350
  private _started;
2351
+ private _envTexture;
2352
+ private _defaultEnvOptions;
2353
+ private readonly _shadowGenerators;
2354
+ private readonly _pendingTextures;
2355
+ private readonly _pendingGroundBakes;
2356
+ private readonly _pendingMorphBuilds;
2357
+ private readonly _runningAnimatables;
2358
+ private readonly _animationGroupCache;
57
2359
  private _ambientColor;
2360
+ private _environmentIntensity;
58
2361
  /** Babylon.js `scene.uniqueId` — a process-unique numeric id. */
2362
+ readonly uniqueId: number;
2363
+ constructor(engine: WebGPUEngine);
59
2364
  getEngine(): WebGPUEngine;
2365
+ /** Babylon.js `scene.getClassName()`. */
2366
+ getClassName(): string;
2367
+ /** Babylon.js `scene.getUniqueId()` — the process-unique scene id. */
2368
+ getUniqueId(): number;
60
2369
  /**
2370
+ * Babylon.js `scene.defaultMaterial` — a shared `StandardMaterial` applied to
2371
+ * meshes that have no material assigned. Babylon Lite requires every mesh to
2372
+ * carry a material to render, so the mesh wrappers assign this lazily-created
2373
+ * default; reading it (or assigning a replacement) matches Babylon.js.
2374
+ */
2375
+ get defaultMaterial(): StandardMaterial;
2376
+ set defaultMaterial(value: StandardMaterial);
2377
+ get clearColor(): Color4;
2378
+ set clearColor(value: Color4);
2379
+ get activeCamera(): Camera | null;
2380
+ set activeCamera(camera: Camera | null);
61
2381
  /** Image-processing exposure proxy (Babylon.js `imageProcessingConfiguration.exposure`). */
2382
+ get imageProcessingConfiguration(): {
2383
+ exposure: number;
2384
+ contrast: number;
2385
+ toneMappingEnabled: boolean;
2386
+ };
2387
+ /** Babylon.js `scene.performancePriority` — accepted for parity; Babylon Lite tunes its own pipeline. */
2388
+ performancePriority: number;
2389
+ /**
2390
+ * Babylon.js `scene.ambientColor` — the scene-wide ambient term multiplied into
2391
+ * each material's ambient contribution. Babylon Lite bakes ambient at the
2392
+ * material level (the `.babylon` loader folds `scene.ambientColor` into each
2393
+ * material), so this is stored for parity; the BJS default `(0,0,0)` is a no-op.
2394
+ */
2395
+ get ambientColor(): Color3;
2396
+ set ambientColor(value: Color3);
2397
+ /**
2398
+ * Babylon.js `scene.environmentIntensity` — a global multiplier on IBL
2399
+ * contribution. Babylon Lite applies environment intensity per PBR material;
2400
+ * this is stored for parity (the BJS default `1` is a no-op).
2401
+ */
2402
+ get environmentIntensity(): number;
2403
+ set environmentIntensity(value: number);
2404
+ /**
2405
+ * Babylon.js `scene.useRightHandedSystem`. Babylon Lite's coordinate system is
2406
+ * fixed; this is stored for parity (the BJS WebGPU default is left-handed —
2407
+ * `false` — so the common case is a no-op).
2408
+ */
2409
+ useRightHandedSystem: boolean;
2410
+ /** Babylon.js `scene.registerBeforeRender(cb)` — convenience over `onBeforeRenderObservable`. */
2411
+ registerBeforeRender(callback: () => void): void;
2412
+ /** Babylon.js `scene.unregisterBeforeRender(cb)`. */
2413
+ unregisterBeforeRender(callback: () => void): void;
2414
+ /** Babylon.js `scene.registerAfterRender(cb)` — convenience over `onAfterRenderObservable`. */
2415
+ registerAfterRender(callback: () => void): void;
2416
+ /** Babylon.js `scene.unregisterAfterRender(cb)`. */
2417
+ unregisterAfterRender(callback: () => void): void;
2418
+ /** Babylon.js `scene.attachControl` — camera input is attached per-camera in the compat layer; no-op. */
2419
+ attachControl(_attachUp?: boolean, _attachDown?: boolean, _attachMove?: boolean): void;
2420
+ /** Babylon.js `scene.detachControl` — no-op (see {@link attachControl}). */
2421
+ detachControl(): void;
2422
+ get fogMode(): number;
2423
+ set fogMode(value: number);
2424
+ get fogStart(): number;
2425
+ set fogStart(value: number);
2426
+ get fogEnd(): number;
2427
+ set fogEnd(value: number);
2428
+ get fogDensity(): number;
2429
+ set fogDensity(value: number);
2430
+ get fogColor(): Color3;
2431
+ set fogColor(value: Color3);
62
2432
  private _clipPlane;
2433
+ /**
2434
+ * Babylon.js `scene.clipPlane` — a single world-space clip plane
2435
+ * (`normal · p + d = 0`); fragments on the negative side are discarded.
2436
+ * Routed to Babylon Lite's opt-in `setClipPlane`.
2437
+ */
2438
+ get clipPlane(): Plane | null;
2439
+ set clipPlane(value: Plane | null);
2440
+ get environmentTexture(): CubeTexture | null;
2441
+ set environmentTexture(value: CubeTexture | null);
2442
+ /**
2443
+ * Babylon.js `scene.createDefaultEnvironment` — adds an IBL skybox and ground.
2444
+ * Babylon Lite performs this through `loadEnvironment` (deferred to engine start),
2445
+ * combining the environment URL recorded via `scene.environmentTexture` with
2446
+ * Babylon.js's default skybox/ground assets.
2447
+ */
2448
+ createDefaultEnvironment(options?: DefaultEnvironmentOptions): {
2449
+ dispose(): void;
2450
+ };
2451
+ /**
2452
+ * Babylon.js `scene.createDefaultSkybox(texture, pbr?, scale?, blur?, setGlobalEnv?)` —
2453
+ * adds a skybox built from the given environment texture. Babylon Lite reuses the
2454
+ * loaded `.env` specular cubemap as an HDR skybox, so this records the env URL (if
2455
+ * not already set) and flags a skybox-from-environment load at engine start.
2456
+ */
2457
+ createDefaultSkybox(texture?: CubeTexture, _pbr?: boolean, scale?: number, _blur?: number, _setGlobalEnv?: boolean): {
2458
+ dispose(): void;
2459
+ };
63
2460
  /** Create and activate a default arc-rotate camera framing the scene. */
2461
+ createDefaultCamera(_createArcRotateCamera?: boolean, _replace?: boolean, _attachControl?: boolean): Camera;
2462
+ /** Babylon.js `createDefaultCameraOrLight` — default framing camera plus a default hemispheric light. */
2463
+ createDefaultCameraOrLight(createArcRotateCamera?: boolean, replace?: boolean, attachControl?: boolean): void;
2464
+ /** Babylon.js render hook. No-op under Babylon Lite's engine-driven loop. */
2465
+ render(): void;
2466
+ /**
2467
+ * Babylon.js readiness gate. Babylon Lite builds its scene synchronously and
2468
+ * defers GPU work into `registerScene`/`startEngine` (driven by the engine's
2469
+ * render loop), so there is nothing to await here — resolve immediately.
2470
+ */
2471
+ whenReadyAsync(): Promise<void>;
2472
+ /** Babylon.js synchronous readiness check — always ready in the compat layer. */
2473
+ isReady(): boolean;
2474
+ /** Synchronous CPU picking — unsupported. Babylon Lite uses async GPU picking. */
2475
+ pick(): never;
2476
+ /** Synchronous ray picking — unsupported. */
2477
+ pickWithRay(): never;
2478
+ /**
2479
+ * Babylon.js `scene.beginDirectAnimation(target, animations, from, to, loop, speedRatio?)`.
2480
+ * Drives the given `Animation`s on the CPU each frame, writing onto the target's
2481
+ * (dotted) property path. Returns an `Animatable` with `goToFrame`/`pause`/`stop`.
2482
+ */
2483
+ beginDirectAnimation(target: unknown, animations: Animation_2[], from: number, to: number, loop?: boolean, speedRatio?: number): Animatable_2;
64
2484
  /**
2485
+ * Babylon.js `scene.beginAnimation(target, from, to, loop, speedRatio?)`. Runs
2486
+ * the animations already attached to `target.animations`.
2487
+ */
2488
+ beginAnimation(target: {
2489
+ animations?: Animation_2[];
2490
+ }, from: number, to: number, loop?: boolean, speedRatio?: number): Animatable_2;
2491
+ dispose(): void;
2492
+ }
2493
+
2494
+ /** Babylon.js `SceneLoader` — async glTF/.babylon loading into a compat scene. */
2495
+ export declare const SceneLoader: {
2496
+ /** Import meshes (and the rest of the asset) into the scene. */
2497
+ ImportMeshAsync(_meshNames: unknown, rootUrl: string, sceneFilename: string, scene: Scene): Promise<ImportResult>;
2498
+ /** Append an asset's contents to the scene. */
2499
+ AppendAsync(rootUrl: string, sceneFilename: string, scene: Scene): Promise<Scene>;
2500
+ /** Load an asset into a container without adding it to the scene. */
2501
+ LoadAssetContainerAsync(rootUrl: string, sceneFilename: string, scene: Scene): Promise<AssetContainer>;
2502
+ /** Plugin registration — out of scope (side-effectful global registry). */
2503
+ RegisterPlugin(): never;
2504
+ };
2505
+
2506
+ export declare class SceneOptimizer {
2507
+ constructor();
2508
+ }
2509
+
2510
+ /**
2511
+ * Babylon.js engine-level enums and constant bags that scenes import for their
2512
+ * numeric values. These carry no behaviour in the compat layer — they exist so
2513
+ * that code reading `ScenePerformancePriority.Aggressive`,
2514
+ * `ImageProcessingConfiguration.TONEMAPPING_ACES`, or
2515
+ * `Constants.MATERIAL_CounterClockWiseSideOrientation` resolves to the same
2516
+ * numbers Babylon.js uses.
2517
+ */
2518
+ /** Babylon.js `ScenePerformancePriority`. */
2519
+ export declare enum ScenePerformancePriority {
2520
+ BackwardCompatible = 0,
2521
+ Intermediate = 1,
2522
+ Aggressive = 2
2523
+ }
2524
+
2525
+ /** Babylon.js scene serializer. Babylon Lite uses different data structures and does not round-trip `.babylon`. */
2526
+ export declare const SceneSerializer: {
2527
+ Serialize(): never;
2528
+ SerializeMesh(): never;
2529
+ };
2530
+
2531
+ /** Sets `target[propertyPath] = value` when triggered. */
2532
+ export declare class SetValueAction extends Action {
2533
+ private readonly _target;
2534
+ private readonly _propertyPath;
2535
+ private readonly _value;
2536
+ constructor(trigger: number, _target: Record<string, unknown>, _propertyPath: string, _value: unknown, condition?: Condition);
2537
+ execute(): void;
2538
+ }
2539
+
2540
+ /**
2541
+ * Babylon.js `ShaderLanguage` — the shader-source language selector. Babylon Lite
2542
+ * is WGSL-only, but the enum is surfaced (with Babylon.js's numeric values) so
2543
+ * scenes that import it to author `WGSL` shaders resolve the symbol; a `GLSL`
2544
+ * `ShaderMaterial`/`EffectWrapper` still fails loudly at construction.
2545
+ */
2546
+ export declare enum ShaderLanguage {
2547
+ GLSL = 0,
2548
+ WGSL = 1
2549
+ }
2550
+
2551
+ export declare class ShaderMaterial {
2552
+ constructor();
2553
+ }
2554
+
2555
+ export declare class ShadowGenerator {
2556
+ private readonly _mapSize;
2557
+ private readonly _light;
2558
+ private readonly _casters;
65
2559
  getClassName(): string;
2560
+ /** Percentage-closer filtering. */
2561
+ usePercentageCloserFiltering: boolean;
2562
+ /** Contact-hardening (treated as PCF here). */
2563
+ useContactHardeningShadow: boolean;
2564
+ /** Blurred exponential shadow map (the Babylon.js default soft-shadow path for directional lights). */
2565
+ useBlurExponentialShadowMap: boolean;
2566
+ useExponentialShadowMap: boolean;
2567
+ useBlurCloseExponentialShadowMap: boolean;
2568
+ useCloseExponentialShadowMap: boolean;
2569
+ usePoissonSampling: boolean;
2570
+ useKernelBlur: boolean;
2571
+ blurKernel: number;
2572
+ blurScale: number;
2573
+ bias: number;
2574
+ normalBias: number;
2575
+ darkness: number;
2576
+ depthScale: number;
2577
+ frustumEdgeFalloff: number;
2578
+ forceBackFacesOnly: boolean;
2579
+ /** Babylon.js ortho projection bounds (directional). */
2580
+ orthoMinZ: number | undefined;
2581
+ orthoMaxZ: number | undefined;
2582
+ constructor(mapSize: number, light: Light);
2583
+ /** Babylon.js `addShadowCaster(mesh, includeDescendants?)`. */
2584
+ addShadowCaster(mesh: AbstractMesh, _includeDescendants?: boolean): ShadowGenerator;
2585
+ /** Babylon.js `removeShadowCaster(mesh)`. */
2586
+ removeShadowCaster(mesh: AbstractMesh): ShadowGenerator;
2587
+ /** Babylon.js `getShadowMap()` — returns a minimal render-list holder for parity. */
2588
+ getShadowMap(): {
2589
+ renderList: AbstractMesh[];
2590
+ };
2591
+ getDarkness(): number;
2592
+ setDarkness(value: number): ShadowGenerator;
2593
+ getLight(): Light;
2594
+ dispose(): void;
2595
+
2596
+ export declare class SineEase extends EasingFunction {
2597
+ easeInCore(gradient: number): number;
2598
+ }
2599
+
2600
+ /** Babylon.js-compatible `Size` and `Viewport` (pure JS). */
2601
+ export declare class Size {
2602
+ width: number;
2603
+ height: number;
2604
+ constructor(width?: number, height?: number);
2605
+ get surface(): number;
2606
+ clone(): Size;
2607
+ equals(other: Size): boolean;
2608
+ add(other: Size): Size;
2609
+ static Zero(): Size;
2610
+ }
2611
+
2612
+ /**
2613
+ * Throwing stubs for additional Babylon.js core/loaders symbols that Babylon
2614
+ * Lite either does not implement, or exposes only through a different native API
2615
+ * that the compat layer does not wrap 1:1.
2616
+ *
2617
+ * Every stub throws {@link LiteCompatError} on use with a pointer to the native
2618
+ * Babylon Lite alternative where one exists. This keeps the completeness
2619
+ * invariant — every core/loaders symbol resolves to an import and fails loudly
2620
+ * rather than silently.
2621
+ */
2622
+ export declare class Skeleton {
2623
+ constructor();
2624
+ }
2625
+
2626
+ /**
2627
+ * Babylon.js-compatible Misc utilities — the pure-JS subset that has no Babylon
2628
+ * Lite or GPU dependency: `SmartArray`, `StringDictionary`, `Tags`,
2629
+ * `PerformanceMonitor`, and `ColorGradient`/`FactorGradient`.
2630
+ */
2631
+ /** A pre-sized, reusable array that tracks a logical `length` separately from capacity. */
2632
+ export declare class SmartArray<T> {
2633
+ data: Array<T | undefined>;
2634
+ length: number;
2635
+ constructor(capacity: number);
2636
+ push(value: T): void;
2637
+ reset(): void;
2638
+ concat(array: {
2639
+ length: number;
2640
+ data: Array<T | undefined>;
2641
+ }): void;
2642
+ dispose(): void;
2643
+ }
2644
+
2645
+ export declare class SolidParticleSystem {
2646
+ constructor();
2647
+ }
2648
+
2649
+ export declare class Sound {
2650
+ constructor();
2651
+ }
2652
+
2653
+ export declare enum Space {
2654
+ LOCAL = 0,
2655
+ WORLD = 1,
2656
+ BONE = 2
2657
+ }
2658
+
2659
+ declare interface SphereOptions {
2660
+ diameter?: number;
2661
+ segments?: number;
2662
+ }
2663
+
2664
+ export declare class SpotLight extends Light {
66
2665
  constructor(name: string, position: Vector3, direction: Vector3, angle: number, exponent: number, scene?: Scene);
2666
+ getClassName(): string;
2667
+ get intensity(): number;
2668
+ set intensity(value: number);
2669
+ get angle(): number;
2670
+ set angle(value: number);
2671
+ get exponent(): number;
2672
+ set exponent(value: number);
2673
+ get range(): number;
2674
+ set range(value: number);
2675
+ get position(): Vector3;
2676
+ set position(value: Vector3);
2677
+ get direction(): Vector3;
2678
+ set direction(value: Vector3);
2679
+ get diffuse(): Color3;
2680
+ set diffuse(value: Color3);
2681
+ get specular(): Color3;
2682
+ set specular(value: Color3);
2683
+ }
2684
+
2685
+ /**
2686
+ * Babylon.js `Sprite` — a single camera-facing billboard in a `SpriteManager`'s
2687
+ * atlas. World-space position + size; cell index selects the atlas frame.
2688
+ *
2689
+ * Properties are **live**: once the manager has built its Lite billboard system
2690
+ * (at engine start), mutating a sprite property pushes an
2691
+ * `updateBillboardSpriteIndex` patch so per-frame animation (e.g. advancing
2692
+ * `cellIndex` or toggling `isVisible`) is reflected on the GPU. Before the
2693
+ * system is built, property writes are buffered and flushed once in `_applyTo`.
2694
+ *
2695
+ * Note: `position`/`color` are object values; reassigning them
2696
+ * (`sprite.position = new Vector3(...)`) pushes a patch, but mutating a
2697
+ * component in place (`sprite.position.x = …`) does not — call the setter (or
2698
+ * reassign) to push a live update.
2699
+ */
2700
+ export declare class Sprite {
2701
+ name: string;
2702
+ private _position;
2703
+ private _width;
2704
+ private _height;
2705
+ private _cellIndex;
2706
+ private _angle;
2707
+ private _color;
2708
+ private _invertU;
2709
+ private _invertV;
2710
+ private _visible;
67
2711
  constructor(name: string, manager: SpriteManager);
2712
+ get position(): Vector3;
2713
+ set position(value: Vector3);
2714
+ get width(): number;
2715
+ set width(value: number);
2716
+ get height(): number;
2717
+ set height(value: number);
2718
+ get cellIndex(): number;
2719
+ set cellIndex(value: number);
2720
+ get angle(): number;
2721
+ set angle(value: number);
2722
+ get color(): Color4;
2723
+ set color(value: Color4);
2724
+ get invertU(): boolean;
2725
+ set invertU(value: boolean);
2726
+ get invertV(): boolean;
2727
+ set invertV(value: boolean);
2728
+ get isVisible(): boolean;
2729
+ set isVisible(value: boolean);
2730
+
2731
+ /**
2732
+ * Babylon.js `SpriteManager` — owns a sprite atlas and a pool of `Sprite`s that
2733
+ * render as camera-facing billboards. Backed by a Lite facing-billboard system.
2734
+ */
2735
+ export declare class SpriteManager {
2736
+ name: string;
2737
+ /** Babylon.js `manager.disableDepthWrite`. Accepted for parity (Lite billboards self-manage depth). */
2738
+ disableDepthWrite: boolean;
2739
+ /** Babylon.js `manager.blendMode` (`Constants.ALPHA_*`). Mapped to a Lite billboard blend at build. */
2740
+ blendMode: number;
68
2741
  private _atlas?;
2742
+ constructor(name: string, url: string, capacity: number, cellSize: CellSize, scene: Scene, _epsilon?: number, samplingMode?: number);
2743
+
2744
+ export declare class SpriteMap {
2745
+ constructor();
2746
+ }
2747
+
2748
+ export declare class SpritePackedManager {
2749
+ constructor();
2750
+ }
2751
+
2752
+ /**
2753
+ * Babylon.js `SpriteRenderer` — the low-level, scene-less pixel-space sprite
2754
+ * pass. Babylon.js scenes build an array of {@link ThinSprite}s and call
2755
+ * `renderer.render(sprites, dt, view, projection)` from their own render loop
2756
+ * with an orthographic pixel projection.
2757
+ *
2758
+ * Babylon Lite's equivalent is `createSpriteRenderer` + a pixel-space
2759
+ * `Sprite2DLayer`. The atlas image loads asynchronously, so the renderer
2760
+ * registers the atlas load as engine startup work (evaluated once `cellWidth`/
2761
+ * `cellHeight` are set), then builds + registers a self-drawing Lite sprite
2762
+ * renderer on the first `render(...)` call (the engine invokes the loop callback
2763
+ * once after startup for scene-less loops). Subsequent `render(...)` calls push
2764
+ * live per-sprite updates so animated scenes stay in sync.
2765
+ *
2766
+ * Coordinate mapping: BJS sprite positions are bottom-left-origin pixels (the
2767
+ * scenes use `OrthoOffCenterLH(0, w, 0, h)` and set `y = canvas.height - topY`),
2768
+ * whereas Lite `Sprite2DLayer` uses top-left-origin pixels — so the Y axis is
2769
+ * flipped (`positionPx.y = canvasHeight - sprite.position.y`) and the rotation
2770
+ * sign is negated to match.
2771
+ */
2772
+ export declare class SpriteRenderer {
2773
+ texture: {
2774
+ name: string;
2775
+ samplingMode?: number;
2776
+ } | null;
2777
+ cellWidth: number;
2778
+ cellHeight: number;
2779
+ disableDepthWrite: boolean;
2780
+ /** Babylon.js `Constants.ALPHA_*` blend mode. `ALPHA_PREMULTIPLIED` maps to Lite's premultiplied path. */
2781
+ blendMode: number;
69
2782
  private readonly _engine;
2783
+ private readonly _capacity;
2784
+ private _atlas?;
2785
+ private _layer?;
2786
+ private _built;
2787
+ private readonly _indices;
2788
+ private _sprites;
2789
+ constructor(engine: WebGPUEngine, capacity?: number, _epsilon?: number, _scene?: unknown);
70
2790
  /**
2791
+ * Babylon.js `renderer.render(sprites, deltaTime, viewMatrix, projectionMatrix)`.
2792
+ * The matrices are owned by Babylon Lite's pixel-space sprite pass, so they are
2793
+ * accepted for API parity but not consumed. First call builds + registers the
2794
+ * Lite sprite renderer; later calls push per-sprite updates.
2795
+ */
2796
+ render(sprites: readonly ThinSpriteLike[], _deltaTime?: number, _view?: unknown, _projection?: unknown): void;
2797
+
2798
+ export declare class SSAO2RenderingPipeline {
2799
+ constructor();
2800
+ }
2801
+
2802
+ export declare class StandardMaterial extends PushMaterial {
71
2803
  constructor(name: string, scene?: Scene);
2804
+ getClassName(): string;
2805
+ get diffuseColor(): Color3;
2806
+ set diffuseColor(value: Color3);
2807
+ get specularColor(): Color3;
2808
+ set specularColor(value: Color3);
2809
+ get emissiveColor(): Color3;
2810
+ set emissiveColor(value: Color3);
2811
+ get ambientColor(): Color3;
2812
+ set ambientColor(value: Color3);
2813
+ get disableLighting(): boolean;
2814
+ set disableLighting(value: boolean);
2815
+ protected _applyBackFaceCulling(value: boolean): void;
2816
+ get alpha(): number;
2817
+ set alpha(value: number);
2818
+ get diffuseTexture(): BaseTexture | null;
2819
+ set diffuseTexture(texture: BaseTexture | null);
2820
+ /**
2821
+ * Babylon.js `StandardMaterial.alphaCutOff` — alpha-test threshold. Fragments
2822
+ * whose diffuse-texture alpha is below this value are discarded. Babylon Lite's
2823
+ * Standard pipeline alpha-tests against the diffuse texture's alpha when
2824
+ * `alphaCutOff > 0`, so this is wired directly.
2825
+ */
2826
+ get alphaCutOff(): number;
2827
+ set alphaCutOff(value: number);
2828
+ /**
2829
+ * Babylon.js `StandardMaterial.useAlphaFromDiffuseTexture`. Babylon Lite's
2830
+ * alpha test already samples the diffuse texture's alpha (enabled via
2831
+ * `alphaCutOff`), so this is accepted for parity.
2832
+ */
2833
+ useAlphaFromDiffuseTexture: boolean;
2834
+ get bumpTexture(): BaseTexture | null;
2835
+ set bumpTexture(texture: BaseTexture | null);
2836
+ get emissiveTexture(): BaseTexture | null;
2837
+ set emissiveTexture(texture: BaseTexture | null);
2838
+ private _diffuseTexture;
2839
+ private _bumpTexture;
2840
+ private _emissiveTexture;
2841
+
2842
+ export declare class STLFileLoader {
2843
+ constructor();
2844
+ }
2845
+
2846
+ /** A string-keyed dictionary with the Babylon.js `StringDictionary` surface. */
2847
+ export declare class StringDictionary<T> {
2848
+ private _store;
2849
+ get count(): number;
2850
+ add(key: string, value: T): boolean;
2851
+ set(key: string, value: T): boolean;
2852
+ get(key: string): T | undefined;
2853
+ getOrAddWithFactory(key: string, factory: (key: string) => T): T;
2854
+ contains(key: string): boolean;
2855
+ remove(key: string): boolean;
2856
+ clear(): void;
2857
+ forEach(callback: (key: string, value: T) => void): void;
2858
+ }
2859
+
2860
+ declare interface Taggable {
2861
+ _tags?: Record<string, true>;
2862
+ }
2863
+
2864
+ /** Babylon.js `Tags` — space-separated tag strings attached to arbitrary objects. */
2865
+ export declare const Tags: {
2866
+ EnableFor(obj: Taggable): void;
2867
+ HasTags(obj: Taggable): boolean;
2868
+ AddTagsTo(obj: Taggable, tags: string): void;
2869
+ RemoveTagsFrom(obj: Taggable, tags: string): void;
2870
+ MatchesQuery(obj: Taggable, tag: string): boolean;
2871
+ GetTags(obj: Taggable): string[];
2872
+ };
2873
+
2874
+ /**
2875
+ * Babylon.js `TargetCamera` — a free-moving camera with a look-at target. Base
2876
+ * for `FreeCamera`/`UniversalCamera`/`TouchCamera`/`FlyCamera`/`FollowCamera`.
2877
+ */
2878
+ export declare class TargetCamera extends Camera {
72
2879
  constructor(name: string, position: Vector3, scene?: Scene);
73
2880
  getClassName(): string;
2881
+ get position(): Vector3;
2882
+ set position(value: Vector3);
2883
+ get speed(): number;
2884
+ set speed(value: number);
2885
+ /** Babylon.js `setTarget` — aim the camera at a world-space point. */
2886
+ setTarget(target: Vector3): void;
2887
+ attachControl(canvas: HTMLCanvasElement, _noPreventDefault?: boolean): void;
2888
+ }
2889
+
2890
+ declare type TaskState = "init" | "running" | "done" | "error";
2891
+
2892
+ export declare class Texture extends BaseTexture {
2893
+ private readonly _ready;
2894
+ /** Babylon.js sampling-mode constants (numeric parity). */
2895
+ static readonly NEAREST_SAMPLINGMODE = 1;
2896
+ static readonly BILINEAR_SAMPLINGMODE = 2;
2897
+ static readonly TRILINEAR_SAMPLINGMODE = 3;
2898
+ static readonly NEAREST_NEAREST = 8;
2899
+ static readonly LINEAR_LINEAR = 11;
2900
+ /** Babylon.js coordinate-mode constants (numeric parity). */
2901
+ static readonly CLAMP_ADDRESSMODE = 0;
2902
+ static readonly WRAP_ADDRESSMODE = 1;
2903
+ static readonly MIRROR_ADDRESSMODE = 2;
2904
+ /** Babylon.js texture UV tiling (applied to the Lite material at bind time). */
2905
+ uScale: number;
2906
+ vScale: number;
2907
+ uOffset: number;
2908
+ vOffset: number;
2909
+ hasAlpha: boolean;
2910
+ coordinatesIndex: number;
2911
+ /** Babylon.js sampling mode passed at construction (`NEAREST_SAMPLINGMODE` = 1, etc.). */
2912
+ readonly samplingMode: number;
74
2913
  constructor(url: string, sceneOrEngine: Scene | {
2914
+ _lite: EngineContext;
2915
+ }, noMipmapOrOptions?: unknown, invertY?: boolean, _samplingMode?: number, onLoad?: (() => void) | null);
75
2916
  private readonly _noMipmap;
2917
+ getClassName(): string;
2918
+ /**
2919
+ * Babylon.js `texture.clone()` — a new `Texture` over the same source URL.
2920
+ * UV tiling/offset and sampling are copied; the clone re-resolves the GPU
2921
+ * handle (tracked against the same scene so it is ready at build).
2922
+ */
2923
+ clone(): Texture;
2924
+ whenReadyAsync(): Promise<void>;
2925
+ /** Babylon.js `BaseTexture.isReady()` — true once the GPU handle has resolved. */
2926
+ isReady(): boolean;
2927
+ /** Load a texture and resolve once its GPU handle is available. */
2928
+ static LoadAsync(url: string, scene: Scene): Promise<Texture>;
2929
+ }
2930
+
2931
+ declare interface TextureLike {
2932
+ _lite?: Texture2D;
2933
+ whenReadyAsync?(): Promise<void>;
2934
+ }
2935
+
2936
+ /**
2937
+ * Babylon.js's headless/abstract WebGL engine layer. In Babylon.js
2938
+ * `ThinEngine extends AbstractEngine` and is the lightweight (no scene-graph)
2939
+ * engine; the compat layer carries no extra behaviour over {@link AbstractEngine}
2940
+ * (everything is WebGPU-backed), so this exists purely to reproduce the class
2941
+ * name and inheritance chain.
2942
+ */
2943
+ export declare class ThinEngine extends AbstractEngine {
2944
+ }
2945
+
2946
+ /**
2947
+ * Babylon.js `ThinSprite` — a lightweight pixel-space sprite drawn by a
2948
+ * {@link SpriteRenderer}. Position is in screen pixels (origin bottom-left, +Y
2949
+ * up, matching the orthographic projection BJS sprite scenes set up); size is in
2950
+ * pixels; `cellIndex` selects the atlas frame.
2951
+ */
2952
+ export declare class ThinSprite {
2953
+ position: Vector3;
2954
+ width: number;
2955
+ height: number;
2956
+ cellIndex: number;
2957
+ angle: number;
2958
+ color: Color4;
2959
+ invertU: boolean;
2960
+ invertV: boolean;
2961
+ isVisible: boolean;
2962
+ }
2963
+
2964
+ declare interface ThinSpriteLike {
2965
+ position: {
2966
+ x: number;
2967
+ y: number;
2968
+ };
2969
+ width: number;
2970
+ height: number;
2971
+ cellIndex: number;
2972
+ angle: number;
2973
+ color: {
2974
+ r: number;
2975
+ g: number;
2976
+ b: number;
2977
+ a: number;
2978
+ };
2979
+ invertU: boolean;
2980
+ invertV: boolean;
2981
+ isVisible: boolean;
2982
+ }
2983
+
2984
+ export declare const ToDegrees: number;
2985
+
2986
+ /** Babylon.js-compatible `Tools` helpers (the small, pure subset). */
2987
+ export declare const Tools: {
2988
+ /** High-resolution timestamp in milliseconds. */
2989
+ Now(): number;
2990
+ ToRadians(degrees: number): number;
2991
+ ToDegrees(radians: number): number;
2992
+ /** Clamp `value` into the inclusive `[min, max]` range. */
2993
+ Clamp(value: number, min?: number, max?: number): number;
2994
+ /** Generate an RFC4122 v4 UUID (used by Babylon.js for unique ids). */
2995
+ RandomId(): string;
2996
+ };
2997
+
2998
+ export declare const ToRadians: number;
2999
+
3000
+ /** Babylon.js `TouchCamera` — touch-controlled free camera. */
3001
+ export declare class TouchCamera extends FreeCamera {
3002
+ getClassName(): string;
3003
+ }
3004
+
3005
+ /**
3006
+ * Babylon.js-compatible vector × matrix transforms (static helpers that live on
3007
+ * `Vector3` in Babylon.js). Kept here to avoid a circular import between the
3008
+ * vector and matrix modules.
3009
+ */
3010
+ export declare function transformCoordinates(vector: Vector3, transformation: Matrix): Vector3;
3011
+
3012
+ /**
3013
+ * Babylon.js `TransformNode` — a positioned, rotated, scaled scene-graph node.
3014
+ * Wraps a Lite scene node (`_node`): either a standalone Lite transform node, or
3015
+ * (for meshes) the Lite mesh itself, which also carries the transform.
3016
+ */
3017
+ export declare class TransformNode extends Node_2 {
76
3018
  constructor(name: string, scene?: Scene, liteNode?: SceneNode);
3019
+ getClassName(): string;
3020
+ get position(): Vector3;
3021
+ set position(value: Vector3);
3022
+ get rotation(): Vector3;
3023
+ set rotation(value: Vector3);
3024
+ get scaling(): Vector3;
3025
+ set scaling(value: Vector3);
77
3026
  /**
3027
+ * Babylon.js `rotationQuaternion`. Babylon Lite always drives a node's world
3028
+ * matrix from a quaternion (its euler `rotation` is a proxy over the same
3029
+ * quaternion), so this reads/writes that quaternion. Returns `null` until
3030
+ * explicitly assigned, matching Babylon.js's euler-by-default convention.
3031
+ */
3032
+ get rotationQuaternion(): Quaternion | null;
3033
+ set rotationQuaternion(value: Quaternion | null);
3034
+ /**
3035
+ * Babylon.js `setParent(node)` — reparent while **preserving world position**
3036
+ * (the child's local transform is recomputed). Distinct from the `parent`
3037
+ * setter, which keeps the local transform and lets the world move.
3038
+ */
3039
+ setParent(parent: Node_2 | null): TransformNode;
3040
+ protected _applyParent(parent: Node_2 | null): void;
3041
+ }
3042
+
3043
+ export declare function transformNormal(vector: Vector3, transformation: Matrix): Vector3;
3044
+
3045
+ /** Babylon.js `UniversalCamera` — touch-friendly free camera. */
3046
+ export declare class UniversalCamera extends FreeCamera {
3047
+ getClassName(): string;
3048
+ }
3049
+
3050
+ /** Throw a {@link LiteCompatError} for an unsupported API. */
3051
+ export declare function unsupported(api: string, detail?: string): never;
3052
+
3053
+ /** Babylon.js `UtilityLayerRenderer` — the overlay scene gizmos render into. */
3054
+ export declare class UtilityLayerRenderer {
78
3055
  private _registered;
3056
+ constructor(scene: Scene);
79
3057
  dispose(): void;
3058
+ }
3059
+
3060
+ /** Compares `target[propertyPath]` against a value with an operator. */
3061
+ export declare class ValueCondition extends Condition {
3062
+ private readonly _target;
3063
+ private readonly _propertyPath;
3064
+ private readonly _value;
3065
+ private readonly _operator;
3066
+ constructor(_target: Record<string, unknown>, _propertyPath: string, _value: number, _operator?: number);
3067
+ isValid(): boolean;
3068
+ }
3069
+
3070
+ export declare const ValueConditionOperators: {
3071
+ readonly IsEqual: 0;
3072
+ readonly IsDifferent: 1;
3073
+ readonly IsGreater: 2;
3074
+ readonly IsLesser: 3;
3075
+ };
3076
+
3077
+ export declare class Vector2 {
3078
+ x: number;
3079
+ y: number;
3080
+ constructor(x?: number, y?: number);
3081
+ set(x: number, y: number): this;
3082
+ copyFrom(source: Vector2): this;
3083
+ copyFromFloats(x: number, y: number): this;
3084
+ add(other: Vector2): Vector2;
3085
+ addInPlace(other: Vector2): this;
3086
+ subtract(other: Vector2): Vector2;
3087
+ scale(scale: number): Vector2;
3088
+ scaleInPlace(scale: number): this;
3089
+ length(): number;
3090
+ lengthSquared(): number;
3091
+ normalize(): this;
3092
+ clone(): Vector2;
3093
+ equals(other: Vector2): boolean;
3094
+ asArray(): [number, number];
3095
+ static Zero(): Vector2;
3096
+ static One(): Vector2;
3097
+ static Dot(a: Vector2, b: Vector2): number;
3098
+ }
3099
+
3100
+ export declare class Vector3 {
3101
+ x: number;
3102
+ y: number;
3103
+ z: number;
3104
+ constructor(x?: number, y?: number, z?: number);
3105
+ set(x: number, y: number, z: number): this;
3106
+ setAll(value: number): this;
3107
+ copyFrom(source: Vector3): this;
3108
+ copyFromFloats(x: number, y: number, z: number): this;
3109
+ add(other: Vector3): Vector3;
3110
+ addInPlace(other: Vector3): this;
3111
+ addInPlaceFromFloats(x: number, y: number, z: number): this;
3112
+ subtract(other: Vector3): Vector3;
3113
+ subtractInPlace(other: Vector3): this;
3114
+ multiply(other: Vector3): Vector3;
3115
+ scale(scale: number): Vector3;
3116
+ scaleInPlace(scale: number): this;
3117
+ negate(): Vector3;
3118
+ length(): number;
3119
+ lengthSquared(): number;
3120
+ normalize(): this;
3121
+ clone(): Vector3;
3122
+ equals(other: Vector3): boolean;
3123
+ equalsWithEpsilon(other: Vector3, epsilon?: number): boolean;
3124
+ asArray(): [number, number, number];
3125
+ toArray(array: number[], index?: number): this;
3126
+ static Zero(): Vector3;
3127
+ static One(): Vector3;
3128
+ static Up(): Vector3;
3129
+ static Down(): Vector3;
3130
+ static Forward(): Vector3;
3131
+ static Backward(): Vector3;
3132
+ static Right(): Vector3;
3133
+ static Left(): Vector3;
3134
+ static FromArray(array: ArrayLike<number>, offset?: number): Vector3;
3135
+ static Dot(a: Vector3, b: Vector3): number;
3136
+ static Cross(a: Vector3, b: Vector3): Vector3;
3137
+ static Distance(a: Vector3, b: Vector3): number;
3138
+ static DistanceSquared(a: Vector3, b: Vector3): number;
3139
+ static Lerp(start: Vector3, end: Vector3, amount: number): Vector3;
3140
+ /** Midpoint between two vectors. */
3141
+ static Center(a: Vector3, b: Vector3): Vector3;
3142
+ /** Midpoint between two vectors, written into `ref`. */
3143
+ static CenterToRef(a: Vector3, b: Vector3, ref: Vector3): Vector3;
3144
+ static Normalize(vector: Vector3): Vector3;
3145
+ static Minimize(a: Vector3, b: Vector3): Vector3;
3146
+ static Maximize(a: Vector3, b: Vector3): Vector3;
3147
+ /** Transform a coordinate (point) by a matrix using the row-vector convention. */
3148
+ static TransformCoordinates(vector: Vector3, transformation: Matrix): Vector3;
3149
+ /** Transform a direction (normal) by a matrix, ignoring translation. */
3150
+ static TransformNormal(vector: Vector3, transformation: Matrix): Vector3;
3151
+ }
3152
+
3153
+ export declare class Vector4 {
3154
+ x: number;
3155
+ y: number;
3156
+ z: number;
3157
+ w: number;
3158
+ constructor(x?: number, y?: number, z?: number, w?: number);
3159
+ set(x: number, y: number, z: number, w: number): this;
3160
+ copyFrom(source: Vector4): this;
3161
+ add(other: Vector4): Vector4;
3162
+ scale(scale: number): Vector4;
3163
+ length(): number;
3164
+ clone(): Vector4;
3165
+ equals(other: Vector4): boolean;
3166
+ asArray(): [number, number, number, number];
3167
+ static Zero(): Vector4;
3168
+ }
3169
+
3170
+ /**
3171
+ * Babylon.js `VertexBuffer` — the per-attribute geometry buffer. Only the `kind`
3172
+ * string constants are surfaced (used with `mesh.getVerticesData` /
3173
+ * `setVerticesData`); the buffer-object API itself is not wrapped.
3174
+ */
3175
+ export declare const VertexBuffer: {
3176
+ readonly PositionKind: "position";
3177
+ readonly NormalKind: "normal";
3178
+ readonly TangentKind: "tangent";
3179
+ readonly UVKind: "uv";
3180
+ readonly UV2Kind: "uv2";
3181
+ readonly ColorKind: "color";
3182
+ readonly MatricesIndicesKind: "matricesIndices";
3183
+ readonly MatricesWeightsKind: "matricesWeights";
3184
+ };
3185
+
3186
+ /**
3187
+ * Babylon.js `VertexData` — CPU vertex attribute container. Pure data; apply it
3188
+ * to a Lite mesh via the native geometry-update APIs when needed.
3189
+ */
3190
+ export declare class VertexData {
3191
+ positions: number[] | Float32Array | null;
3192
+ normals: number[] | Float32Array | null;
3193
+ uvs: number[] | Float32Array | null;
3194
+ colors: number[] | Float32Array | null;
3195
+ indices: number[] | Uint32Array | Uint16Array | null;
3196
+ /**
3197
+ * Babylon.js `VertexData.applyToMesh(mesh)` — upload this CPU geometry onto a
3198
+ * mesh (typically one created via `new Mesh(name, scene)`). Replaces the Lite
3199
+ * mesh's geometry in place via `resizeMeshGeometry`. Normals are computed flat
3200
+ * if omitted (Babylon Lite requires a normals buffer).
3201
+ */
3202
+ applyToMesh(mesh: Mesh): void;
3203
+ /** Merge another `VertexData` into this one (concatenating attributes + reindexing). */
3204
+ merge(other: VertexData): VertexData;
3205
+ }
3206
+
3207
+ export declare class Viewport {
3208
+ x: number;
3209
+ y: number;
3210
+ width: number;
3211
+ height: number;
3212
+ constructor(x: number, y: number, width: number, height: number);
3213
+ /** Resolve this normalized viewport to pixel coordinates for a render target. */
3214
+ toGlobal(renderWidth: number, renderHeight: number): Viewport;
3215
+ clone(): Viewport;
3216
+ }
3217
+
3218
+ export declare class VirtualJoystick {
3219
+ constructor();
3220
+ }
3221
+
3222
+ /**
3223
+ * Babylon.js's WebGPU engine. In Babylon.js `WebGPUEngine extends AbstractEngine`
3224
+ * (sibling to {@link Engine}). This is the natural engine for the compat layer
3225
+ * since Babylon Lite is WebGPU-only.
3226
+ */
3227
+ export declare class WebGPUEngine extends AbstractEngine {
3228
+ }
3229
+
3230
+ /** Babylon.js `WebXRCamera` — WebXR is not part of Babylon Lite. */
3231
+ export declare class WebXRCamera {
3232
+ constructor();
3233
+ }
3234
+
3235
+ export declare class WeightedSound {
3236
+ constructor();
3237
+ }
3238
+
3239
+ export { }