@miris-inc/core 0.0.8-ed481dc → 0.0.8-ee3cad8

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,26 @@ 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 */
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 */
442
491
  /* Excluded from this release type: _setTargetFrameRate */
443
492
  /* Excluded from this release type: _setXRModeActive */
444
493
  /* Excluded from this release type: _setSplatCountBudgetOverride */
445
494
  /* Excluded from this release type: _update */
446
495
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
447
496
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
448
- update(): boolean;
497
+ /* Excluded from this release type: _updateForScene */
449
498
  applyChanges(_entries: Change[]): void;
450
499
  _computeAdditionalRenderNeeded(): boolean;
451
500
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -482,6 +531,7 @@ declare interface RuntimeSettings extends EmbindObject {
482
531
  targetFramesPerSecond: number;
483
532
  xrModeActive: boolean;
484
533
  splatCountBudget: number;
534
+ splatCountBudgetCap: number;
485
535
  }
486
536
 
487
537
  export declare class Scene extends EventTarget {
@@ -493,6 +543,7 @@ export declare class Scene extends EventTarget {
493
543
  readonly id: number;
494
544
  get key(): unknown;
495
545
  set key(key: unknown);
546
+ /* Excluded from this release type: _assetFormat */
496
547
  get viewerKey(): string | null;
497
548
  set viewerKey(viewerKey: string | null);
498
549
  get streams(): Set<Stream>;
@@ -502,19 +553,30 @@ export declare class Scene extends EventTarget {
502
553
  readonly client: Client;
503
554
  readonly handle?: number;
504
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;
505
568
  dispose(): void;
506
- /* Excluded from this release type: _getViewingVolumeBounds */
507
569
  fetchAssets(tags?: string | Iterable<string>): Promise<{
508
570
  name: string;
509
571
  thumbnailUrl: string;
510
572
  uuid: string;
511
573
  tags: string[];
512
574
  }[]>;
513
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
514
575
  add(stream: Stream): void;
515
576
  getStreamForId(streamObjectId: number): Stream | undefined;
516
577
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
517
578
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
579
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
518
580
  /* Excluded from this release type: _getFeatureMesh */
519
581
  /* Excluded from this release type: _getDrMap */
520
582
  /* Excluded from this release type: _onFeatureData */
@@ -529,6 +591,7 @@ declare interface SceneChangeIds extends EmbindObject {
529
591
  readonly modifiedObjectsCount: number;
530
592
  readonly deactivatedObjectsCount: number;
531
593
  readonly deletedObjectsCount: number;
594
+ readonly remaskedObjectsCount: number;
532
595
  }
533
596
 
534
597
  export declare type SceneInit = {
@@ -540,6 +603,13 @@ declare interface SceneMetadata extends EmbindObject {
540
603
  readonly inputColorSpace: string;
541
604
  }
542
605
 
606
+ declare type SparkAttributeInfo = {
607
+ elementsPerSplat: number;
608
+ discard: boolean;
609
+ };
610
+
611
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
612
+
543
613
  declare interface SpatialFormat extends EmbindObject {
544
614
  metersPerUnit: number;
545
615
  upAxis: number;
@@ -567,6 +637,8 @@ export declare class Stream extends EventTarget {
567
637
  set key(key: unknown);
568
638
  get matrix(): Matrix4x4Tuple;
569
639
  set matrix(matrix: Matrix4x4Tuple);
640
+ get opacity(): number;
641
+ set opacity(opacity: number);
570
642
  get boundingBox(): {
571
643
  min: {
572
644
  x: number;
@@ -597,6 +669,8 @@ export declare class Stream extends EventTarget {
597
669
  constructor(options: StreamInit);
598
670
  _initStream({ uuid }: StreamInit): void;
599
671
  /* Excluded from this release type: _onStreamLoaded */
672
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
673
+ /* Excluded from this release type: _getViewingVolumeObb */
600
674
  /* Excluded from this release type: _onRootLoaded */
601
675
  add(modelRoot: ModelRoot): void;
602
676
  end(): void;