@miris-inc/core 0.0.8-e78c32c → 0.0.8-e98f3e1

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,9 +1,17 @@
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
+ // An embind CompressionType value, compared by identity against MainModule.CompressionType
13
+ readonly compressionType: unknown;
14
+ readonly minValue: { x: number; y: number; z: number; w: number };
7
15
  readonly maxValue: { x: number; y: number; z: number };
8
16
  }
9
17
 
@@ -20,8 +28,19 @@ export declare class AttributeNames {
20
28
  static readonly SPARK_EXTENDED_SH3_B: string;
21
29
  static readonly UNUSED: string;
22
30
  static readonly SHARK_ELLIPSOIDS: string;
31
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
23
32
  static readonly SHARK_SPHERICAL_HARMONICS: string;
33
+ static readonly COLOR: string;
24
34
  static readonly OCTANT_OFFSETS: string;
35
+ static readonly SURFEL_OCTANT_OFFSETS: string;
36
+ static readonly SURFEL_COUNT: string;
37
+ static readonly SURFEL_OWNER_GROUPS: string;
38
+ static readonly OCTANT_CELL: string;
39
+ static readonly REFLECTANCE_DATA_V1: string;
40
+ static readonly REFLECTANCE_DATA_V2: string;
41
+ static readonly GLASS_MESH_GEOMETRY: string;
42
+ static readonly GLASS_MESH_PANELS: string;
43
+ static readonly MOD_DEPTH: string;
25
44
  }
26
45
 
27
46
  declare type CachedAttribute = {
@@ -33,6 +52,8 @@ export declare class Camera {
33
52
  #private;
34
53
  readonly id: number;
35
54
  update(): void;
55
+ get viewportHeight(): number;
56
+ set viewportHeight(viewportHeight: number);
36
57
  get aspect(): number;
37
58
  set aspect(aspect: number);
38
59
  get fov(): number;
@@ -46,7 +67,7 @@ export declare class Camera {
46
67
  readonly engine: Engine;
47
68
  readonly miris: Miris;
48
69
  readonly scene: Scene;
49
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
70
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
50
71
  }
51
72
 
52
73
  export declare type CameraInit = {
@@ -56,6 +77,7 @@ export declare type CameraInit = {
56
77
  far: number;
57
78
  matrix: Matrix4x4Tuple;
58
79
  scene: Scene;
80
+ viewportHeight?: number;
59
81
  };
60
82
 
61
83
  export declare class Change {
@@ -91,6 +113,7 @@ declare class Client {
91
113
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
92
114
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
93
115
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
116
+ getStreamStatus(...args: ClientMethodParameters["getStreamStatus"]): StreamStatus;
94
117
  getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
95
118
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
96
119
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
@@ -107,6 +130,8 @@ declare class Client {
107
130
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
108
131
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
109
132
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
133
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
134
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
110
135
  getName(...args: ClientMethodParameters["getName"]): string;
111
136
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
112
137
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -114,7 +139,6 @@ declare class Client {
114
139
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
115
140
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
116
141
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
117
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
118
142
  }
119
143
 
120
144
  declare type ClientInit = {
@@ -173,11 +197,23 @@ declare class Engine {
173
197
  readonly Loaded: 2;
174
198
  readonly Failed: 3;
175
199
  };
200
+ static StreamStatus: {
201
+ readonly Unknown: 0;
202
+ readonly Resolving: 1;
203
+ readonly Loading: 2;
204
+ readonly Ready: 3;
205
+ readonly Failed: 4;
206
+ };
176
207
  readonly ready: Promise<this>;
177
208
  readonly pending: boolean;
178
209
  get module(): MainModule;
179
210
  constructor(moduleOptions?: Record<string, unknown>);
180
211
  get AttributeInfo(): new () => AttributeInfo;
212
+ get CompressionType(): {
213
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
214
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
215
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
216
+ };
181
217
  get Handedness(): {
182
218
  Right: number;
183
219
  Left: number;
@@ -224,8 +260,8 @@ declare class Engine {
224
260
  attributeName: string,
225
261
  attributeInfo: AttributeInfo
226
262
  ]): AquaStatus;
227
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
228
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
263
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
264
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
229
265
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
230
266
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
231
267
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -233,6 +269,7 @@ declare class Engine {
233
269
  getSceneChangesCounts(...args: [handle: AquaClientHandle, sceneChangeIds: SceneChangeIds]): void;
234
270
  getSceneMetadata(...args: [handle: AquaClientHandle, metadata: SceneMetadata]): number;
235
271
  getSceneObjectParent(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
272
+ getStreamStatus(...args: [handle: AquaClientHandle, streamObjectId: number]): StreamStatus;
236
273
  getSceneObjectType(...args: [handle: AquaClientHandle, sceneObjectId: number]): SceneObjectType;
237
274
  getLocalTransform(...args: [
238
275
  handle: AquaClientHandle,
@@ -281,9 +318,11 @@ declare class Engine {
281
318
  aspectRatio: number,
282
319
  verticalFov: number,
283
320
  nearPlane: number,
284
- farPlane: number
321
+ farPlane: number,
322
+ viewportHeightPixels: number
285
323
  ]): AquaStatus;
286
324
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
325
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
287
326
  setSceneObjectTransform(...args: [
288
327
  handle: AquaClientHandle,
289
328
  sceneObjectId: number,
@@ -292,6 +331,8 @@ declare class Engine {
292
331
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
293
332
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
294
333
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
334
+ getDrMapLadderRoughnessLevels(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
335
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
295
336
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
296
337
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
297
338
  takeAttribute(...args: [
@@ -304,8 +345,15 @@ declare class Engine {
304
345
  getActiveClientSideIdsCheckSum(): number;
305
346
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
306
347
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
307
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
308
348
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
349
+ /**
350
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
351
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
352
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
353
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
354
+ * one.
355
+ */
356
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
309
357
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
310
358
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
311
359
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -319,6 +367,12 @@ declare type EngineMethodParameters<E extends Engine = Engine> = {
319
367
  [Key in keyof E]: E[Key] extends (...args: any[]) => any ? Parameters<E[Key]> : never;
320
368
  };
321
369
 
370
+ export declare const HaveData = 2;
371
+
372
+ export declare const HaveMetadata = 1;
373
+
374
+ export declare const HaveNothing = 0;
375
+
322
376
  export declare class Lod {
323
377
  #private;
324
378
  readonly id: LodInit["id"];
@@ -351,9 +405,15 @@ export declare class Lod {
351
405
  set _drawnOctantMask(mask: number);
352
406
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
353
407
  get _hasOctantOffsets(): boolean;
408
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
409
+ get _surfelCount(): number;
410
+ get _surfelOwnerGroups(): Uint32Array<ArrayBuffer> | null;
411
+ get _octantCell(): Uint32Array<ArrayBuffer> | null;
354
412
  _readOctantOffsets(engine: Engine): void;
355
413
  hasAttribute(attributeName: string): boolean;
356
414
  getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
415
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
416
+ _getRawByteAttributeWithBounds(engine: Engine, attributeName: string): RawByteAttributeWithBounds | null;
357
417
  dispose(): void;
358
418
  constructor({ id, modelRoot, lodStore, client }: LodInit);
359
419
  }
@@ -378,6 +438,11 @@ export declare class LodStore {
378
438
 
379
439
  declare interface MainModule {
380
440
  AttributeInfo: new () => AttributeInfo;
441
+ CompressionType: {
442
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
443
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
444
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
445
+ };
381
446
  Handedness: { Right: number; Left: number };
382
447
  HEAPF32: Float32Array<ArrayBuffer>;
383
448
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -414,13 +479,17 @@ declare interface MainModule {
414
479
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
415
480
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
416
481
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
482
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
483
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
417
484
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
418
485
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
419
486
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
420
487
  GetActiveClientSideIdsCheckSum(): number;
421
488
  TakeRenderRequired(handle: number): boolean;
489
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
422
490
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
423
491
  setMaxCacheSize(maxSizeBytes: number): void;
492
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
424
493
  }
425
494
 
426
495
  /**
@@ -452,17 +521,27 @@ export declare class Miris {
452
521
  protected _xrSession: XRSession | null;
453
522
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
454
523
  signalResumeFromIdle(): void;
524
+ get _splatCountBudget(): number;
455
525
  /**
456
526
  * Why 43? Because the AVP throttles down to 45Hz :(
457
527
  */
458
528
  static readonly _XR_TARGET_FRAME_RATE = 43;
529
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
530
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
531
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP = 3000000;
532
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
533
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2500000;
534
+ /* Excluded from this release type: _isMobileDevice */
535
+ /* Excluded from this release type: _sharkSplatCapacity */
536
+ /* Excluded from this release type: _limitSharkSplatCapacity */
537
+ /* Excluded from this release type: _sharkSplatBudgetCap */
459
538
  /* Excluded from this release type: _setTargetFrameRate */
460
539
  /* Excluded from this release type: _setXRModeActive */
461
540
  /* Excluded from this release type: _setSplatCountBudgetOverride */
462
541
  /* Excluded from this release type: _update */
463
542
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
464
543
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
465
- update(): boolean;
544
+ /* Excluded from this release type: _updateForScene */
466
545
  applyChanges(_entries: Change[]): void;
467
546
  _computeAdditionalRenderNeeded(): boolean;
468
547
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -491,6 +570,31 @@ export declare type ModelRootInit = {
491
570
  stream: Stream;
492
571
  };
493
572
 
573
+ /**
574
+ * The byte-exact counterpart of getRawUint32Attribute above: same no-padding, no-takeAttribute
575
+ * contract, returning bytes rather than words.
576
+ *
577
+ * Use this rather than that one wherever the stride is not a whole number of words: the
578
+ * reflectance records' 18- and 26-byte strides are not, and an odd record count would lose that
579
+ * record's last field to dataPtrView's truncation.
580
+ */
581
+ export declare type RawByteAttributeWithBounds = {
582
+ bytes: Uint8Array<ArrayBuffer>;
583
+ minValue: {
584
+ x: number;
585
+ y: number;
586
+ z: number;
587
+ };
588
+ maxValue: {
589
+ x: number;
590
+ y: number;
591
+ z: number;
592
+ };
593
+ };
594
+
595
+ declare type ReadyState_2 = typeof HaveNothing | typeof HaveMetadata | typeof HaveData;
596
+ export { ReadyState_2 as ReadyState }
597
+
494
598
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
495
599
 
496
600
  declare interface RuntimeSettings extends EmbindObject {
@@ -499,6 +603,7 @@ declare interface RuntimeSettings extends EmbindObject {
499
603
  targetFramesPerSecond: number;
500
604
  xrModeActive: boolean;
501
605
  splatCountBudget: number;
606
+ splatCountBudgetCap: number;
502
607
  }
503
608
 
504
609
  export declare class Scene extends EventTarget {
@@ -510,6 +615,7 @@ export declare class Scene extends EventTarget {
510
615
  readonly id: number;
511
616
  get key(): unknown;
512
617
  set key(key: unknown);
618
+ /* Excluded from this release type: _assetFormat */
513
619
  get viewerKey(): string | null;
514
620
  set viewerKey(viewerKey: string | null);
515
621
  get streams(): Set<Stream>;
@@ -519,22 +625,35 @@ export declare class Scene extends EventTarget {
519
625
  readonly client: Client;
520
626
  readonly handle?: number;
521
627
  constructor({ miris, viewerKey }: SceneInit);
628
+ /**
629
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
630
+ * displayed frame from the host's animation loop, and render when it returns true.
631
+ *
632
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
633
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
634
+ *
635
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
636
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
637
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
638
+ */
639
+ update(ts?: DOMHighResTimeStamp): boolean;
522
640
  dispose(): void;
523
- /* Excluded from this release type: _getViewingVolumeBounds */
524
641
  fetchAssets(tags?: string | Iterable<string>): Promise<{
525
642
  name: string;
526
643
  thumbnailUrl: string;
527
644
  uuid: string;
528
645
  tags: string[];
529
646
  }[]>;
530
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
531
647
  add(stream: Stream): void;
532
648
  getStreamForId(streamObjectId: number): Stream | undefined;
533
649
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
534
650
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
651
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
535
652
  /* Excluded from this release type: _getFeatureMesh */
536
653
  /* Excluded from this release type: _getDrMap */
654
+ /* Excluded from this release type: _onDrMapLadder */
537
655
  /* Excluded from this release type: _onFeatureData */
656
+ /* Excluded from this release type: _updateStreamStatuses */
538
657
  /* Excluded from this release type: _onSceneLoaded */
539
658
  delete(stream: Stream): void;
540
659
  close(): void;
@@ -624,6 +743,11 @@ export declare class Stream extends EventTarget {
624
743
  constructor(options: StreamInit);
625
744
  _initStream({ uuid }: StreamInit): void;
626
745
  /* Excluded from this release type: _onStreamLoaded */
746
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
747
+ /* Excluded from this release type: _getViewingVolumeObb */
748
+ /** How much of the stream has loaded, as of the last frame. */
749
+ get readyState(): ReadyState_2;
750
+ /* Excluded from this release type: _updateStatus */
627
751
  /* Excluded from this release type: _onRootLoaded */
628
752
  add(modelRoot: ModelRoot): void;
629
753
  end(): void;