@miris-inc/core 0.0.8-b0e16e6 → 0.0.8-b146f61

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,16 +1,50 @@
1
+ export declare const AssetFormat: {
2
+ readonly GaussianSplats: 1;
3
+ readonly GES: 2;
4
+ };
5
+
1
6
  declare interface AttributeInfo extends EmbindObject {
2
- readonly dataType: number;
3
- readonly componentCount: number;
4
- readonly dataPtr: number;
5
- readonly dataByteLength: number;
7
+ // Logical elements from the drop metadata: splats for a per-splat attribute, records for a
8
+ // per-surfel one. Not necessarily dataSizeBytes / bytesPerElement.
9
+ readonly elementCount: number;
10
+ readonly dataSizeBytes: number;
6
11
  readonly clientSideId: bigint;
12
+ readonly minValue: { x: number; y: number; z: number };
7
13
  readonly maxValue: { x: number; y: number; z: number };
8
14
  }
9
15
 
16
+ export declare class AttributeNames {
17
+ static readonly SPARK_PACKED_SPLAT: string;
18
+ static readonly SPARK_EXTENDED_SPLAT_LOW: string;
19
+ static readonly SPARK_EXTENDED_SPLAT_HIGH: string;
20
+ static readonly SPARK_PACKED_SH1: string;
21
+ static readonly SPARK_PACKED_SH2: string;
22
+ static readonly SPARK_PACKED_SH3: string;
23
+ static readonly SPARK_EXTENDED_SH1: string;
24
+ static readonly SPARK_EXTENDED_SH2: string;
25
+ static readonly SPARK_EXTENDED_SH3_A: string;
26
+ static readonly SPARK_EXTENDED_SH3_B: string;
27
+ static readonly UNUSED: string;
28
+ static readonly SHARK_ELLIPSOIDS: string;
29
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
30
+ static readonly SHARK_SPHERICAL_HARMONICS: string;
31
+ static readonly COLOR: string;
32
+ static readonly OCTANT_OFFSETS: string;
33
+ static readonly REFLECTANCE_DATA_V1: string;
34
+ static readonly MOD_DEPTH: string;
35
+ }
36
+
37
+ declare type CachedAttribute = {
38
+ paddedData: Uint32Array<ArrayBuffer>;
39
+ originalSizeInUints: number;
40
+ };
41
+
10
42
  export declare class Camera {
11
43
  #private;
12
44
  readonly id: number;
13
45
  update(): void;
46
+ get viewportHeight(): number;
47
+ set viewportHeight(viewportHeight: number);
14
48
  get aspect(): number;
15
49
  set aspect(aspect: number);
16
50
  get fov(): number;
@@ -24,7 +58,7 @@ export declare class Camera {
24
58
  readonly engine: Engine;
25
59
  readonly miris: Miris;
26
60
  readonly scene: Scene;
27
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
61
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
28
62
  }
29
63
 
30
64
  export declare type CameraInit = {
@@ -34,6 +68,7 @@ export declare type CameraInit = {
34
68
  far: number;
35
69
  matrix: Matrix4x4Tuple;
36
70
  scene: Scene;
71
+ viewportHeight?: number;
37
72
  };
38
73
 
39
74
  export declare class Change {
@@ -43,7 +78,7 @@ export declare class Change {
43
78
  }
44
79
 
45
80
  export declare type ChangeInit = {
46
- type: "created" | "activated" | "modified" | "deactivated" | "deleted";
81
+ type: "created" | "activated" | "modified" | "deactivated" | "deleted" | "remasked";
47
82
  lod: Lod;
48
83
  };
49
84
 
@@ -69,6 +104,7 @@ declare class Client {
69
104
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
70
105
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
71
106
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
107
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
72
108
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
73
109
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
74
110
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -84,6 +120,8 @@ declare class Client {
84
120
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
85
121
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
86
122
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
123
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
124
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
87
125
  getName(...args: ClientMethodParameters["getName"]): string;
88
126
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
89
127
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -91,7 +129,6 @@ declare class Client {
91
129
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
92
130
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
93
131
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
94
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
95
132
  }
96
133
 
97
134
  declare type ClientInit = {
@@ -190,6 +227,8 @@ declare class Engine {
190
227
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
191
228
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
192
229
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
230
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
231
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
193
232
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
194
233
  free(...args: [size: number]): number;
195
234
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -199,8 +238,8 @@ declare class Engine {
199
238
  attributeName: string,
200
239
  attributeInfo: AttributeInfo
201
240
  ]): AquaStatus;
202
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
203
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
241
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
242
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
204
243
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
205
244
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
206
245
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -256,9 +295,11 @@ declare class Engine {
256
295
  aspectRatio: number,
257
296
  verticalFov: number,
258
297
  nearPlane: number,
259
- farPlane: number
298
+ farPlane: number,
299
+ viewportHeightPixels: number
260
300
  ]): AquaStatus;
261
301
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
302
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
262
303
  setSceneObjectTransform(...args: [
263
304
  handle: AquaClientHandle,
264
305
  sceneObjectId: number,
@@ -267,6 +308,8 @@ declare class Engine {
267
308
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
268
309
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
269
310
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
311
+ getDrMapLadderRoughnessLevels(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
312
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
270
313
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
271
314
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
272
315
  takeAttribute(...args: [
@@ -279,8 +322,15 @@ declare class Engine {
279
322
  getActiveClientSideIdsCheckSum(): number;
280
323
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
281
324
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
282
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
283
325
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
326
+ /**
327
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
328
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
329
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
330
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
331
+ * one.
332
+ */
333
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
284
334
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
285
335
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
286
336
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -298,25 +348,9 @@ export declare class Lod {
298
348
  #private;
299
349
  readonly id: LodInit["id"];
300
350
  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
351
  get key(): unknown;
311
352
  set key(key: unknown);
312
353
  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
354
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
321
355
  /**
322
356
  * Retrieves the cached world bounds of this object
@@ -334,21 +368,27 @@ export declare class Lod {
334
368
  get localBounds(): Float32Array<ArrayBuffer> | null;
335
369
  set lodIndex(index: number);
336
370
  get lodIndex(): number | null;
337
- set paddingCount(count: number);
338
- get paddingCount(): number;
371
+ set paddingSplatsCount(count: number);
372
+ get paddingSplatsCount(): number;
339
373
  set transform(transform: Float32Array<ArrayBuffer> | null);
340
374
  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;
375
+ get _drawnOctantMask(): number;
376
+ set _drawnOctantMask(mask: number);
377
+ get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
378
+ get _hasOctantOffsets(): boolean;
379
+ _readOctantOffsets(engine: Engine): void;
380
+ hasAttribute(attributeName: string): boolean;
381
+ getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
382
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
344
383
  dispose(): void;
345
- constructor({ id, modelRoot, lodStore }: LodInit);
384
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
346
385
  }
347
386
 
348
387
  export declare type LodInit = {
349
388
  id: number;
350
389
  modelRoot: ModelRoot;
351
390
  lodStore: LodStore;
391
+ client: Client;
352
392
  };
353
393
 
354
394
  export declare class LodStore {
@@ -389,7 +429,9 @@ declare interface MainModule {
389
429
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
390
430
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
391
431
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
432
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
392
433
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
434
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
393
435
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
394
436
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
395
437
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -398,13 +440,17 @@ declare interface MainModule {
398
440
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
399
441
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
400
442
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
443
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
444
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
401
445
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
402
446
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
403
447
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
404
448
  GetActiveClientSideIdsCheckSum(): number;
405
449
  TakeRenderRequired(handle: number): boolean;
450
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
406
451
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
407
452
  setMaxCacheSize(maxSizeBytes: number): void;
453
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
408
454
  }
409
455
 
410
456
  /**
@@ -417,6 +463,7 @@ declare interface MainModule {
417
463
  */
418
464
  export declare class Miris {
419
465
  #private;
466
+ static tryUseShark: boolean;
420
467
  static _instance: Miris;
421
468
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
422
469
  readonly engine: Engine;
@@ -435,17 +482,26 @@ export declare class Miris {
435
482
  protected _xrSession: XRSession | null;
436
483
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
437
484
  signalResumeFromIdle(): void;
485
+ get _splatCountBudget(): number;
438
486
  /**
439
487
  * Why 43? Because the AVP throttles down to 45Hz :(
440
488
  */
441
489
  static readonly _XR_TARGET_FRAME_RATE = 43;
490
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
491
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
492
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP = 3000000;
493
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
494
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2500000;
495
+ /* Excluded from this release type: _isMobileDevice */
496
+ /* Excluded from this release type: _sharkSplatCapacity */
497
+ /* Excluded from this release type: _sharkSplatBudgetCap */
442
498
  /* Excluded from this release type: _setTargetFrameRate */
443
499
  /* Excluded from this release type: _setXRModeActive */
444
500
  /* Excluded from this release type: _setSplatCountBudgetOverride */
445
501
  /* Excluded from this release type: _update */
446
502
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
447
503
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
448
- update(): boolean;
504
+ /* Excluded from this release type: _updateForScene */
449
505
  applyChanges(_entries: Change[]): void;
450
506
  _computeAdditionalRenderNeeded(): boolean;
451
507
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -482,6 +538,7 @@ declare interface RuntimeSettings extends EmbindObject {
482
538
  targetFramesPerSecond: number;
483
539
  xrModeActive: boolean;
484
540
  splatCountBudget: number;
541
+ splatCountBudgetCap: number;
485
542
  }
486
543
 
487
544
  export declare class Scene extends EventTarget {
@@ -493,6 +550,7 @@ export declare class Scene extends EventTarget {
493
550
  readonly id: number;
494
551
  get key(): unknown;
495
552
  set key(key: unknown);
553
+ /* Excluded from this release type: _assetFormat */
496
554
  get viewerKey(): string | null;
497
555
  set viewerKey(viewerKey: string | null);
498
556
  get streams(): Set<Stream>;
@@ -502,21 +560,33 @@ export declare class Scene extends EventTarget {
502
560
  readonly client: Client;
503
561
  readonly handle?: number;
504
562
  constructor({ miris, viewerKey }: SceneInit);
563
+ /**
564
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
565
+ * displayed frame from the host's animation loop, and render when it returns true.
566
+ *
567
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
568
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
569
+ *
570
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
571
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
572
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
573
+ */
574
+ update(ts?: DOMHighResTimeStamp): boolean;
505
575
  dispose(): void;
506
- /* Excluded from this release type: _getViewingVolumeBounds */
507
576
  fetchAssets(tags?: string | Iterable<string>): Promise<{
508
577
  name: string;
509
578
  thumbnailUrl: string;
510
579
  uuid: string;
511
580
  tags: string[];
512
581
  }[]>;
513
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
514
582
  add(stream: Stream): void;
515
583
  getStreamForId(streamObjectId: number): Stream | undefined;
516
584
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
517
585
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
586
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
518
587
  /* Excluded from this release type: _getFeatureMesh */
519
588
  /* Excluded from this release type: _getDrMap */
589
+ /* Excluded from this release type: _onDrMapLadder */
520
590
  /* Excluded from this release type: _onFeatureData */
521
591
  /* Excluded from this release type: _onSceneLoaded */
522
592
  delete(stream: Stream): void;
@@ -529,6 +599,7 @@ declare interface SceneChangeIds extends EmbindObject {
529
599
  readonly modifiedObjectsCount: number;
530
600
  readonly deactivatedObjectsCount: number;
531
601
  readonly deletedObjectsCount: number;
602
+ readonly remaskedObjectsCount: number;
532
603
  }
533
604
 
534
605
  export declare type SceneInit = {
@@ -540,6 +611,13 @@ declare interface SceneMetadata extends EmbindObject {
540
611
  readonly inputColorSpace: string;
541
612
  }
542
613
 
614
+ declare type SparkAttributeInfo = {
615
+ elementsPerSplat: number;
616
+ discard: boolean;
617
+ };
618
+
619
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
620
+
543
621
  declare interface SpatialFormat extends EmbindObject {
544
622
  metersPerUnit: number;
545
623
  upAxis: number;
@@ -567,6 +645,8 @@ export declare class Stream extends EventTarget {
567
645
  set key(key: unknown);
568
646
  get matrix(): Matrix4x4Tuple;
569
647
  set matrix(matrix: Matrix4x4Tuple);
648
+ get opacity(): number;
649
+ set opacity(opacity: number);
570
650
  get boundingBox(): {
571
651
  min: {
572
652
  x: number;
@@ -597,6 +677,8 @@ export declare class Stream extends EventTarget {
597
677
  constructor(options: StreamInit);
598
678
  _initStream({ uuid }: StreamInit): void;
599
679
  /* Excluded from this release type: _onStreamLoaded */
680
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
681
+ /* Excluded from this release type: _getViewingVolumeObb */
600
682
  /* Excluded from this release type: _onRootLoaded */
601
683
  add(modelRoot: ModelRoot): void;
602
684
  end(): void;