@miris-inc/core 0.0.8-8b7e56b → 0.0.8-8ba6231

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
 
@@ -69,6 +101,7 @@ declare class Client {
69
101
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
70
102
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
71
103
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
104
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
72
105
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
73
106
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
74
107
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -84,6 +117,7 @@ declare class Client {
84
117
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
85
118
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
86
119
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
120
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
87
121
  getName(...args: ClientMethodParameters["getName"]): string;
88
122
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
89
123
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -91,7 +125,6 @@ declare class Client {
91
125
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
92
126
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
93
127
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
94
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
95
128
  }
96
129
 
97
130
  declare type ClientInit = {
@@ -190,6 +223,8 @@ declare class Engine {
190
223
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
191
224
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
192
225
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
226
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
227
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
193
228
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
194
229
  free(...args: [size: number]): number;
195
230
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -199,8 +234,8 @@ declare class Engine {
199
234
  attributeName: string,
200
235
  attributeInfo: AttributeInfo
201
236
  ]): AquaStatus;
202
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
203
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
237
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
238
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
204
239
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
205
240
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
206
241
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -256,9 +291,11 @@ declare class Engine {
256
291
  aspectRatio: number,
257
292
  verticalFov: number,
258
293
  nearPlane: number,
259
- farPlane: number
294
+ farPlane: number,
295
+ viewportHeightPixels: number
260
296
  ]): AquaStatus;
261
297
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
298
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
262
299
  setSceneObjectTransform(...args: [
263
300
  handle: AquaClientHandle,
264
301
  sceneObjectId: number,
@@ -267,6 +304,7 @@ declare class Engine {
267
304
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
268
305
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
269
306
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
307
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
270
308
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
271
309
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
272
310
  takeAttribute(...args: [
@@ -279,8 +317,15 @@ declare class Engine {
279
317
  getActiveClientSideIdsCheckSum(): number;
280
318
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
281
319
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
282
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
283
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;
284
329
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
285
330
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
286
331
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -298,25 +343,9 @@ export declare class Lod {
298
343
  #private;
299
344
  readonly id: LodInit["id"];
300
345
  readonly store: LodStore;
301
- useExtSplats: boolean;
302
- splatsExtendedData: Uint32Array<ArrayBuffer> | null;
303
- sh1Data: Uint32Array<ArrayBuffer> | null;
304
- sh1Max: number;
305
- sh2Data: Uint32Array<ArrayBuffer> | null;
306
- sh2Max: number;
307
- sh3Data: Uint32Array<ArrayBuffer> | null;
308
- sh3Max: number;
309
- sh3ExtendedData: Uint32Array<ArrayBuffer> | null;
310
346
  get key(): unknown;
311
347
  set key(key: unknown);
312
348
  readonly modelRoot: ModelRoot;
313
- set splats(splats: Uint32Array<ArrayBuffer> | null);
314
- get splats(): Uint32Array<ArrayBuffer> | null;
315
- /**
316
- * Sets the cached world bounds of this object
317
- *
318
- * @deprecated set the local bounds and transform as needed
319
- */
320
349
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
321
350
  /**
322
351
  * Retrieves the cached world bounds of this object
@@ -334,21 +363,26 @@ export declare class Lod {
334
363
  get localBounds(): Float32Array<ArrayBuffer> | null;
335
364
  set lodIndex(index: number);
336
365
  get lodIndex(): number | null;
337
- set paddingCount(count: number);
338
- get paddingCount(): number;
366
+ set paddingSplatsCount(count: number);
367
+ get paddingSplatsCount(): number;
339
368
  set transform(transform: Float32Array<ArrayBuffer> | null);
340
369
  get transform(): Float32Array<ArrayBuffer> | null;
341
- setSh1(sh1Data: Uint32Array<ArrayBuffer>, sh1Max: number): void;
342
- setSh2(sh2Data: Uint32Array<ArrayBuffer>, sh2Max: number): void;
343
- 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;
344
377
  dispose(): void;
345
- constructor({ id, modelRoot, lodStore }: LodInit);
378
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
346
379
  }
347
380
 
348
381
  export declare type LodInit = {
349
382
  id: number;
350
383
  modelRoot: ModelRoot;
351
384
  lodStore: LodStore;
385
+ client: Client;
352
386
  };
353
387
 
354
388
  export declare class LodStore {
@@ -389,7 +423,9 @@ declare interface MainModule {
389
423
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
390
424
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
391
425
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
426
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
392
427
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
428
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
393
429
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
394
430
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
395
431
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -398,13 +434,16 @@ declare interface MainModule {
398
434
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
399
435
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
400
436
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
437
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
401
438
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
402
439
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
403
440
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
404
441
  GetActiveClientSideIdsCheckSum(): number;
405
442
  TakeRenderRequired(handle: number): boolean;
443
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
406
444
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
407
445
  setMaxCacheSize(maxSizeBytes: number): void;
446
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
408
447
  }
409
448
 
410
449
  /**
@@ -417,6 +456,7 @@ declare interface MainModule {
417
456
  */
418
457
  export declare class Miris {
419
458
  #private;
459
+ static tryUseShark: boolean;
420
460
  static _instance: Miris;
421
461
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
422
462
  readonly engine: Engine;
@@ -435,17 +475,19 @@ export declare class Miris {
435
475
  protected _xrSession: XRSession | null;
436
476
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
437
477
  signalResumeFromIdle(): void;
478
+ get _splatCountBudget(): number;
438
479
  /**
439
480
  * Why 43? Because the AVP throttles down to 45Hz :(
440
481
  */
441
482
  static readonly _XR_TARGET_FRAME_RATE = 43;
483
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
442
484
  /* Excluded from this release type: _setTargetFrameRate */
443
485
  /* Excluded from this release type: _setXRModeActive */
444
486
  /* Excluded from this release type: _setSplatCountBudgetOverride */
445
487
  /* Excluded from this release type: _update */
446
488
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
447
489
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
448
- update(): boolean;
490
+ /* Excluded from this release type: _updateForScene */
449
491
  applyChanges(_entries: Change[]): void;
450
492
  _computeAdditionalRenderNeeded(): boolean;
451
493
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -493,6 +535,7 @@ export declare class Scene extends EventTarget {
493
535
  readonly id: number;
494
536
  get key(): unknown;
495
537
  set key(key: unknown);
538
+ /* Excluded from this release type: _assetFormat */
496
539
  get viewerKey(): string | null;
497
540
  set viewerKey(viewerKey: string | null);
498
541
  get streams(): Set<Stream>;
@@ -502,19 +545,30 @@ export declare class Scene extends EventTarget {
502
545
  readonly client: Client;
503
546
  readonly handle?: number;
504
547
  constructor({ miris, viewerKey }: SceneInit);
548
+ /**
549
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
550
+ * displayed frame from the host's animation loop, and render when it returns true.
551
+ *
552
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
553
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
554
+ *
555
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
556
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
557
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
558
+ */
559
+ update(ts?: DOMHighResTimeStamp): boolean;
505
560
  dispose(): void;
506
- /* Excluded from this release type: _getViewingVolumeBounds */
507
561
  fetchAssets(tags?: string | Iterable<string>): Promise<{
508
562
  name: string;
509
563
  thumbnailUrl: string;
510
564
  uuid: string;
511
565
  tags: string[];
512
566
  }[]>;
513
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
514
567
  add(stream: Stream): void;
515
568
  getStreamForId(streamObjectId: number): Stream | undefined;
516
569
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
517
570
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
571
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
518
572
  /* Excluded from this release type: _getFeatureMesh */
519
573
  /* Excluded from this release type: _getDrMap */
520
574
  /* Excluded from this release type: _onFeatureData */
@@ -529,6 +583,7 @@ declare interface SceneChangeIds extends EmbindObject {
529
583
  readonly modifiedObjectsCount: number;
530
584
  readonly deactivatedObjectsCount: number;
531
585
  readonly deletedObjectsCount: number;
586
+ readonly remaskedObjectsCount: number;
532
587
  }
533
588
 
534
589
  export declare type SceneInit = {
@@ -540,6 +595,13 @@ declare interface SceneMetadata extends EmbindObject {
540
595
  readonly inputColorSpace: string;
541
596
  }
542
597
 
598
+ declare type SparkAttributeInfo = {
599
+ elementsPerSplat: number;
600
+ discard: boolean;
601
+ };
602
+
603
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
604
+
543
605
  declare interface SpatialFormat extends EmbindObject {
544
606
  metersPerUnit: number;
545
607
  upAxis: number;
@@ -567,6 +629,8 @@ export declare class Stream extends EventTarget {
567
629
  set key(key: unknown);
568
630
  get matrix(): Matrix4x4Tuple;
569
631
  set matrix(matrix: Matrix4x4Tuple);
632
+ get opacity(): number;
633
+ set opacity(opacity: number);
570
634
  get boundingBox(): {
571
635
  min: {
572
636
  x: number;
@@ -597,6 +661,8 @@ export declare class Stream extends EventTarget {
597
661
  constructor(options: StreamInit);
598
662
  _initStream({ uuid }: StreamInit): void;
599
663
  /* Excluded from this release type: _onStreamLoaded */
664
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
665
+ /* Excluded from this release type: _getViewingVolumeObb */
600
666
  /* Excluded from this release type: _onRootLoaded */
601
667
  add(modelRoot: ModelRoot): void;
602
668
  end(): void;