@miris-inc/core 0.0.8-ddf9440 → 0.0.8-e5ca02c

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/dist/AquaApi.wasm CHANGED
Binary file
Binary file
package/dist/core.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ export declare const AssetFormat: {
2
+ readonly GaussianSplats: 1;
3
+ readonly GES: 2;
4
+ };
5
+
1
6
  declare interface AttributeInfo extends EmbindObject {
2
7
  readonly dataType: number;
3
8
  readonly componentCount: number;
@@ -7,10 +12,36 @@ declare interface AttributeInfo extends EmbindObject {
7
12
  readonly maxValue: { x: number; y: number; z: number };
8
13
  }
9
14
 
15
+ export declare class AttributeNames {
16
+ static readonly SPARK_PACKED_SPLAT: string;
17
+ static readonly SPARK_EXTENDED_SPLAT_LOW: string;
18
+ static readonly SPARK_EXTENDED_SPLAT_HIGH: string;
19
+ static readonly SPARK_PACKED_SH1: string;
20
+ static readonly SPARK_PACKED_SH2: string;
21
+ static readonly SPARK_PACKED_SH3: string;
22
+ static readonly SPARK_EXTENDED_SH1: string;
23
+ static readonly SPARK_EXTENDED_SH2: string;
24
+ static readonly SPARK_EXTENDED_SH3_A: string;
25
+ static readonly SPARK_EXTENDED_SH3_B: string;
26
+ static readonly UNUSED: string;
27
+ static readonly SHARK_ELLIPSOIDS: string;
28
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
29
+ static readonly SHARK_SPHERICAL_HARMONICS: string;
30
+ static readonly COLOR: string;
31
+ static readonly OCTANT_OFFSETS: string;
32
+ }
33
+
34
+ declare type CachedAttribute = {
35
+ paddedData: Uint32Array<ArrayBuffer>;
36
+ originalSizeInUints: number;
37
+ };
38
+
10
39
  export declare class Camera {
11
40
  #private;
12
41
  readonly id: number;
13
42
  update(): void;
43
+ get viewportHeight(): number;
44
+ set viewportHeight(viewportHeight: number);
14
45
  get aspect(): number;
15
46
  set aspect(aspect: number);
16
47
  get fov(): number;
@@ -24,7 +55,7 @@ export declare class Camera {
24
55
  readonly engine: Engine;
25
56
  readonly miris: Miris;
26
57
  readonly scene: Scene;
27
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
58
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
28
59
  }
29
60
 
30
61
  export declare type CameraInit = {
@@ -34,6 +65,7 @@ export declare type CameraInit = {
34
65
  far: number;
35
66
  matrix: Matrix4x4Tuple;
36
67
  scene: Scene;
68
+ viewportHeight?: number;
37
69
  };
38
70
 
39
71
  export declare class Change {
@@ -43,7 +75,7 @@ export declare class Change {
43
75
  }
44
76
 
45
77
  export declare type ChangeInit = {
46
- type: "created" | "activated" | "modified" | "deactivated" | "deleted";
78
+ type: "created" | "activated" | "modified" | "deactivated" | "deleted" | "remasked";
47
79
  lod: Lod;
48
80
  };
49
81
 
@@ -56,7 +88,6 @@ declare class Client {
56
88
  constructor({ engine, context }: ClientInit);
57
89
  dispose(): void;
58
90
  addStreamById(...args: ClientMethodParameters["addStreamById"]): number;
59
- addPrefetchStreamById(...args: ClientMethodParameters["addPrefetchStreamById"]): number;
60
91
  destroyClient(...args: ClientMethodParameters["destroyClient"]): AquaStatus;
61
92
  getAssetsAsync(...args: ClientMethodParameters["getAssetsAsync"]): AssetInfo[];
62
93
  getAttribute(...args: ClientMethodParameters["getAttribute"]): AquaStatus;
@@ -70,6 +101,7 @@ declare class Client {
70
101
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
71
102
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
72
103
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
104
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
73
105
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
74
106
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
75
107
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -85,6 +117,7 @@ declare class Client {
85
117
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
86
118
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
87
119
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
120
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
88
121
  getName(...args: ClientMethodParameters["getName"]): string;
89
122
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
90
123
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -92,7 +125,6 @@ declare class Client {
92
125
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
93
126
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
94
127
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
95
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
96
128
  }
97
129
 
98
130
  declare type ClientInit = {
@@ -183,13 +215,6 @@ declare class Engine {
183
215
  assetId: string,
184
216
  doNotRefine: boolean
185
217
  ]): number;
186
- addPrefetchStreamById(...args: [
187
- handle: AquaClientHandle,
188
- streamName: string,
189
- assetId: string,
190
- maxPrefetchDepth: number,
191
- keepPrefetch: boolean
192
- ]): number;
193
218
  allocateSceneChangesArrays(...args: [sceneChangeIds: SceneChangeIds]): void;
194
219
  createContext(...args: []): AquaContextHandle;
195
220
  destroyContext(...args: [handle: AquaContextHandle]): AquaStatus;
@@ -198,6 +223,8 @@ declare class Engine {
198
223
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
199
224
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
200
225
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
226
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
227
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
201
228
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
202
229
  free(...args: [size: number]): number;
203
230
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -207,8 +234,8 @@ declare class Engine {
207
234
  attributeName: string,
208
235
  attributeInfo: AttributeInfo
209
236
  ]): AquaStatus;
210
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
211
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
237
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
238
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
212
239
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
213
240
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
214
241
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -264,9 +291,11 @@ declare class Engine {
264
291
  aspectRatio: number,
265
292
  verticalFov: number,
266
293
  nearPlane: number,
267
- farPlane: number
294
+ farPlane: number,
295
+ viewportHeightPixels: number
268
296
  ]): AquaStatus;
269
297
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
298
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
270
299
  setSceneObjectTransform(...args: [
271
300
  handle: AquaClientHandle,
272
301
  sceneObjectId: number,
@@ -275,6 +304,7 @@ declare class Engine {
275
304
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
276
305
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
277
306
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
307
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
278
308
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
279
309
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
280
310
  takeAttribute(...args: [
@@ -287,8 +317,15 @@ declare class Engine {
287
317
  getActiveClientSideIdsCheckSum(): number;
288
318
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
289
319
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
290
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
291
320
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
321
+ /**
322
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
323
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
324
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
325
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
326
+ * one.
327
+ */
328
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
292
329
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
293
330
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
294
331
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -306,25 +343,9 @@ export declare class Lod {
306
343
  #private;
307
344
  readonly id: LodInit["id"];
308
345
  readonly store: LodStore;
309
- useExtSplats: boolean;
310
- splatsExtendedData: Uint32Array<ArrayBuffer> | null;
311
- sh1Data: Uint32Array<ArrayBuffer> | null;
312
- sh1Max: number;
313
- sh2Data: Uint32Array<ArrayBuffer> | null;
314
- sh2Max: number;
315
- sh3Data: Uint32Array<ArrayBuffer> | null;
316
- sh3Max: number;
317
- sh3ExtendedData: Uint32Array<ArrayBuffer> | null;
318
346
  get key(): unknown;
319
347
  set key(key: unknown);
320
348
  readonly modelRoot: ModelRoot;
321
- set splats(splats: Uint32Array<ArrayBuffer> | null);
322
- get splats(): Uint32Array<ArrayBuffer> | null;
323
- /**
324
- * Sets the cached world bounds of this object
325
- *
326
- * @deprecated set the local bounds and transform as needed
327
- */
328
349
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
329
350
  /**
330
351
  * Retrieves the cached world bounds of this object
@@ -342,21 +363,26 @@ export declare class Lod {
342
363
  get localBounds(): Float32Array<ArrayBuffer> | null;
343
364
  set lodIndex(index: number);
344
365
  get lodIndex(): number | null;
345
- set paddingCount(count: number);
346
- get paddingCount(): number;
366
+ set paddingSplatsCount(count: number);
367
+ get paddingSplatsCount(): number;
347
368
  set transform(transform: Float32Array<ArrayBuffer> | null);
348
369
  get transform(): Float32Array<ArrayBuffer> | null;
349
- setSh1(sh1Data: Uint32Array<ArrayBuffer>, sh1Max: number): void;
350
- setSh2(sh2Data: Uint32Array<ArrayBuffer>, sh2Max: number): void;
351
- setSh3(sh3Data: Uint32Array<ArrayBuffer>, sh3Max: number): void;
370
+ get _drawnOctantMask(): number;
371
+ set _drawnOctantMask(mask: number);
372
+ get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
373
+ get _hasOctantOffsets(): boolean;
374
+ _readOctantOffsets(engine: Engine): void;
375
+ hasAttribute(attributeName: string): boolean;
376
+ getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
352
377
  dispose(): void;
353
- constructor({ id, modelRoot, lodStore }: LodInit);
378
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
354
379
  }
355
380
 
356
381
  export declare type LodInit = {
357
382
  id: number;
358
383
  modelRoot: ModelRoot;
359
384
  lodStore: LodStore;
385
+ client: Client;
360
386
  };
361
387
 
362
388
  export declare class LodStore {
@@ -397,7 +423,9 @@ declare interface MainModule {
397
423
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
398
424
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
399
425
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
426
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
400
427
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
428
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
401
429
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
402
430
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
403
431
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -406,13 +434,16 @@ declare interface MainModule {
406
434
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
407
435
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
408
436
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
437
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
409
438
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
410
439
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
411
440
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
412
441
  GetActiveClientSideIdsCheckSum(): number;
413
442
  TakeRenderRequired(handle: number): boolean;
443
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
414
444
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
415
445
  setMaxCacheSize(maxSizeBytes: number): void;
446
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
416
447
  }
417
448
 
418
449
  /**
@@ -425,6 +456,7 @@ declare interface MainModule {
425
456
  */
426
457
  export declare class Miris {
427
458
  #private;
459
+ static tryUseShark: boolean;
428
460
  static _instance: Miris;
429
461
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
430
462
  readonly engine: Engine;
@@ -443,17 +475,26 @@ export declare class Miris {
443
475
  protected _xrSession: XRSession | null;
444
476
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
445
477
  signalResumeFromIdle(): void;
478
+ get _splatCountBudget(): number;
446
479
  /**
447
480
  * Why 43? Because the AVP throttles down to 45Hz :(
448
481
  */
449
482
  static readonly _XR_TARGET_FRAME_RATE = 43;
483
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
484
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
485
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP = 3000000;
486
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
487
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2500000;
488
+ /* Excluded from this release type: _isMobileDevice */
489
+ /* Excluded from this release type: _sharkSplatCapacity */
490
+ /* Excluded from this release type: _sharkSplatBudgetCap */
450
491
  /* Excluded from this release type: _setTargetFrameRate */
451
492
  /* Excluded from this release type: _setXRModeActive */
452
493
  /* Excluded from this release type: _setSplatCountBudgetOverride */
453
494
  /* Excluded from this release type: _update */
454
495
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
455
496
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
456
- update(): boolean;
497
+ /* Excluded from this release type: _updateForScene */
457
498
  applyChanges(_entries: Change[]): void;
458
499
  _computeAdditionalRenderNeeded(): boolean;
459
500
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -490,6 +531,7 @@ declare interface RuntimeSettings extends EmbindObject {
490
531
  targetFramesPerSecond: number;
491
532
  xrModeActive: boolean;
492
533
  splatCountBudget: number;
534
+ splatCountBudgetCap: number;
493
535
  }
494
536
 
495
537
  export declare class Scene extends EventTarget {
@@ -501,6 +543,7 @@ export declare class Scene extends EventTarget {
501
543
  readonly id: number;
502
544
  get key(): unknown;
503
545
  set key(key: unknown);
546
+ /* Excluded from this release type: _assetFormat */
504
547
  get viewerKey(): string | null;
505
548
  set viewerKey(viewerKey: string | null);
506
549
  get streams(): Set<Stream>;
@@ -510,19 +553,30 @@ export declare class Scene extends EventTarget {
510
553
  readonly client: Client;
511
554
  readonly handle?: number;
512
555
  constructor({ miris, viewerKey }: SceneInit);
556
+ /**
557
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
558
+ * displayed frame from the host's animation loop, and render when it returns true.
559
+ *
560
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
561
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
562
+ *
563
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
564
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
565
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
566
+ */
567
+ update(ts?: DOMHighResTimeStamp): boolean;
513
568
  dispose(): void;
514
- /* Excluded from this release type: _getViewingVolumeBounds */
515
569
  fetchAssets(tags?: string | Iterable<string>): Promise<{
516
570
  name: string;
517
571
  thumbnailUrl: string;
518
572
  uuid: string;
519
573
  tags: string[];
520
574
  }[]>;
521
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
522
575
  add(stream: Stream): void;
523
576
  getStreamForId(streamObjectId: number): Stream | undefined;
524
577
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
525
578
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
579
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
526
580
  /* Excluded from this release type: _getFeatureMesh */
527
581
  /* Excluded from this release type: _getDrMap */
528
582
  /* Excluded from this release type: _onFeatureData */
@@ -537,6 +591,7 @@ declare interface SceneChangeIds extends EmbindObject {
537
591
  readonly modifiedObjectsCount: number;
538
592
  readonly deactivatedObjectsCount: number;
539
593
  readonly deletedObjectsCount: number;
594
+ readonly remaskedObjectsCount: number;
540
595
  }
541
596
 
542
597
  export declare type SceneInit = {
@@ -548,6 +603,13 @@ declare interface SceneMetadata extends EmbindObject {
548
603
  readonly inputColorSpace: string;
549
604
  }
550
605
 
606
+ declare type SparkAttributeInfo = {
607
+ elementsPerSplat: number;
608
+ discard: boolean;
609
+ };
610
+
611
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
612
+
551
613
  declare interface SpatialFormat extends EmbindObject {
552
614
  metersPerUnit: number;
553
615
  upAxis: number;
@@ -575,6 +637,8 @@ export declare class Stream extends EventTarget {
575
637
  set key(key: unknown);
576
638
  get matrix(): Matrix4x4Tuple;
577
639
  set matrix(matrix: Matrix4x4Tuple);
640
+ get opacity(): number;
641
+ set opacity(opacity: number);
578
642
  get boundingBox(): {
579
643
  min: {
580
644
  x: number;
@@ -603,8 +667,10 @@ export declare class Stream extends EventTarget {
603
667
  */
604
668
  get chunks(): Set<ModelRoot>;
605
669
  constructor(options: StreamInit);
606
- _initStream({ uuid, prefetch, prefetchMaxDepth, keepPrefetch }: StreamInit): void;
670
+ _initStream({ uuid }: StreamInit): void;
607
671
  /* Excluded from this release type: _onStreamLoaded */
672
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
673
+ /* Excluded from this release type: _getViewingVolumeObb */
608
674
  /* Excluded from this release type: _onRootLoaded */
609
675
  add(modelRoot: ModelRoot): void;
610
676
  end(): void;
@@ -615,13 +681,6 @@ export declare type StreamInit = {
615
681
  scene: Scene;
616
682
  authToken?: string;
617
683
  drmKey?: string;
618
- /** When true the stream runs in prefetch-only mode: it downloads and caches
619
- * octree node data up to `prefetchMaxDepth` without rendering anything. */
620
- prefetch?: boolean;
621
- /** Maximum octree depth to prefetch. Set to -1 to disable prefetching. If omitted, defaults to 3 */
622
- prefetchMaxDepth?: number;
623
- /** Retain all prefetched data by the stream (make it non evictable) */
624
- keepPrefetch?: boolean;
625
684
  };
626
685
 
627
686
  declare type StringVector = EmbindVector<string>;