@miris-inc/core 0.0.8-27dabce → 0.0.8-2871d65

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,7 +113,9 @@ 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;
118
+ getOctantLocalBoundingBoxes(...args: ClientMethodParameters["getOctantLocalBoundingBoxes"]): number[];
95
119
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
96
120
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
97
121
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -107,6 +131,8 @@ declare class Client {
107
131
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
108
132
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
109
133
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
134
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
135
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
110
136
  getName(...args: ClientMethodParameters["getName"]): string;
111
137
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
112
138
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -114,7 +140,6 @@ declare class Client {
114
140
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
115
141
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
116
142
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
117
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
118
143
  }
119
144
 
120
145
  declare type ClientInit = {
@@ -173,11 +198,23 @@ declare class Engine {
173
198
  readonly Loaded: 2;
174
199
  readonly Failed: 3;
175
200
  };
201
+ static StreamStatus: {
202
+ readonly Unknown: 0;
203
+ readonly Resolving: 1;
204
+ readonly Loading: 2;
205
+ readonly Ready: 3;
206
+ readonly Failed: 4;
207
+ };
176
208
  readonly ready: Promise<this>;
177
209
  readonly pending: boolean;
178
210
  get module(): MainModule;
179
211
  constructor(moduleOptions?: Record<string, unknown>);
180
212
  get AttributeInfo(): new () => AttributeInfo;
213
+ get CompressionType(): {
214
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
215
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
216
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
217
+ };
181
218
  get Handedness(): {
182
219
  Right: number;
183
220
  Left: number;
@@ -215,6 +252,7 @@ declare class Engine {
215
252
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
216
253
  remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
217
254
  getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
255
+ getOctantLocalBoundingBoxes(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
218
256
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
219
257
  free(...args: [size: number]): number;
220
258
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -224,8 +262,8 @@ declare class Engine {
224
262
  attributeName: string,
225
263
  attributeInfo: AttributeInfo
226
264
  ]): AquaStatus;
227
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
228
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
265
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
266
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
229
267
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
230
268
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
231
269
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -233,6 +271,7 @@ declare class Engine {
233
271
  getSceneChangesCounts(...args: [handle: AquaClientHandle, sceneChangeIds: SceneChangeIds]): void;
234
272
  getSceneMetadata(...args: [handle: AquaClientHandle, metadata: SceneMetadata]): number;
235
273
  getSceneObjectParent(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
274
+ getStreamStatus(...args: [handle: AquaClientHandle, streamObjectId: number]): StreamStatus;
236
275
  getSceneObjectType(...args: [handle: AquaClientHandle, sceneObjectId: number]): SceneObjectType;
237
276
  getLocalTransform(...args: [
238
277
  handle: AquaClientHandle,
@@ -281,9 +320,11 @@ declare class Engine {
281
320
  aspectRatio: number,
282
321
  verticalFov: number,
283
322
  nearPlane: number,
284
- farPlane: number
323
+ farPlane: number,
324
+ viewportHeightPixels: number
285
325
  ]): AquaStatus;
286
326
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
327
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
287
328
  setSceneObjectTransform(...args: [
288
329
  handle: AquaClientHandle,
289
330
  sceneObjectId: number,
@@ -292,6 +333,8 @@ declare class Engine {
292
333
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
293
334
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
294
335
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
336
+ getDrMapLadderRoughnessLevels(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
337
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
295
338
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
296
339
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
297
340
  takeAttribute(...args: [
@@ -304,8 +347,22 @@ declare class Engine {
304
347
  getActiveClientSideIdsCheckSum(): number;
305
348
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
306
349
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
307
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
308
350
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
351
+ /**
352
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
353
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
354
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
355
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
356
+ * `primsResident` is what the renderer held at the end of the previous frame, fading
357
+ * prims included, and `primCapacity` what it can hold; activations that would not fit are
358
+ * deferred, where primCapacity 0 means deferral is disabled.
359
+ */
360
+ beginFrame(...args: [
361
+ contextHandle: AquaContextHandle,
362
+ previousFrameTimeMs: number,
363
+ primsResident: number,
364
+ primCapacity: number
365
+ ]): AquaStatus;
309
366
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
310
367
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
311
368
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -319,6 +376,12 @@ declare type EngineMethodParameters<E extends Engine = Engine> = {
319
376
  [Key in keyof E]: E[Key] extends (...args: any[]) => any ? Parameters<E[Key]> : never;
320
377
  };
321
378
 
379
+ export declare const HaveData = 2;
380
+
381
+ export declare const HaveMetadata = 1;
382
+
383
+ export declare const HaveNothing = 0;
384
+
322
385
  export declare class Lod {
323
386
  #private;
324
387
  readonly id: LodInit["id"];
@@ -349,11 +412,19 @@ export declare class Lod {
349
412
  get transform(): Float32Array<ArrayBuffer> | null;
350
413
  get _drawnOctantMask(): number;
351
414
  set _drawnOctantMask(mask: number);
415
+ get _octantLocalBounds(): Float32Array<ArrayBuffer> | null;
416
+ set _octantLocalBounds(bounds: Float32Array<ArrayBuffer> | null);
352
417
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
353
418
  get _hasOctantOffsets(): boolean;
419
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
420
+ get _surfelCount(): number;
421
+ get _surfelOwnerGroups(): Uint32Array<ArrayBuffer> | null;
422
+ get _octantCell(): Uint32Array<ArrayBuffer> | null;
354
423
  _readOctantOffsets(engine: Engine): void;
355
424
  hasAttribute(attributeName: string): boolean;
356
425
  getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
426
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
427
+ _getRawByteAttributeWithBounds(engine: Engine, attributeName: string): RawByteAttributeWithBounds | null;
357
428
  dispose(): void;
358
429
  constructor({ id, modelRoot, lodStore, client }: LodInit);
359
430
  }
@@ -378,6 +449,11 @@ export declare class LodStore {
378
449
 
379
450
  declare interface MainModule {
380
451
  AttributeInfo: new () => AttributeInfo;
452
+ CompressionType: {
453
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
454
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
455
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
456
+ };
381
457
  Handedness: { Right: number; Left: number };
382
458
  HEAPF32: Float32Array<ArrayBuffer>;
383
459
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -406,6 +482,7 @@ declare interface MainModule {
406
482
  remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
407
483
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
408
484
  GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
485
+ GetOctantLocalBoundingBoxes(handle: number, sceneObjectId: number): number[];
409
486
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
410
487
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
411
488
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -414,13 +491,22 @@ declare interface MainModule {
414
491
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
415
492
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
416
493
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
494
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
495
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
417
496
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
418
497
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
419
498
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
420
499
  GetActiveClientSideIdsCheckSum(): number;
421
500
  TakeRenderRequired(handle: number): boolean;
501
+ BeginFrame(
502
+ contextHandle: number,
503
+ previousFrameTimeMs: number,
504
+ primsResident: number,
505
+ primCapacity: number,
506
+ ): number;
422
507
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
423
508
  setMaxCacheSize(maxSizeBytes: number): void;
509
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
424
510
  }
425
511
 
426
512
  /**
@@ -452,17 +538,31 @@ export declare class Miris {
452
538
  protected _xrSession: XRSession | null;
453
539
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
454
540
  signalResumeFromIdle(): void;
541
+ get _splatCountBudget(): number;
455
542
  /**
456
543
  * Why 43? Because the AVP throttles down to 45Hz :(
457
544
  */
458
545
  static readonly _XR_TARGET_FRAME_RATE = 43;
546
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
547
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
548
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP: number;
549
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
550
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2400000;
551
+ /* Excluded from this release type: _isMobileDevice */
552
+ /* Excluded from this release type: _sharkSplatCapacity */
553
+ /* Excluded from this release type: _minimumSplatCount */
554
+ /* Excluded from this release type: _splatCountStorageKey */
555
+ /* Excluded from this release type: _reloadWithLowerSplatCapacity */
556
+ /* Excluded from this release type: _limitSharkSplatCapacity */
557
+ /* Excluded from this release type: _sharkSplatBudgetCap */
459
558
  /* Excluded from this release type: _setTargetFrameRate */
460
559
  /* Excluded from this release type: _setXRModeActive */
461
560
  /* Excluded from this release type: _setSplatCountBudgetOverride */
561
+ /* Excluded from this release type: _reportRendererPrims */
462
562
  /* Excluded from this release type: _update */
463
563
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
464
564
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
465
- update(): boolean;
565
+ /* Excluded from this release type: _updateForScene */
466
566
  applyChanges(_entries: Change[]): void;
467
567
  _computeAdditionalRenderNeeded(): boolean;
468
568
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -491,6 +591,31 @@ export declare type ModelRootInit = {
491
591
  stream: Stream;
492
592
  };
493
593
 
594
+ /**
595
+ * The byte-exact counterpart of getRawUint32Attribute above: same no-padding, no-takeAttribute
596
+ * contract, returning bytes rather than words.
597
+ *
598
+ * Use this rather than that one wherever the stride is not a whole number of words: the
599
+ * reflectance records' 18- and 26-byte strides are not, and an odd record count would lose that
600
+ * record's last field to dataPtrView's truncation.
601
+ */
602
+ export declare type RawByteAttributeWithBounds = {
603
+ bytes: Uint8Array<ArrayBuffer>;
604
+ minValue: {
605
+ x: number;
606
+ y: number;
607
+ z: number;
608
+ };
609
+ maxValue: {
610
+ x: number;
611
+ y: number;
612
+ z: number;
613
+ };
614
+ };
615
+
616
+ declare type ReadyState_2 = typeof HaveNothing | typeof HaveMetadata | typeof HaveData;
617
+ export { ReadyState_2 as ReadyState }
618
+
494
619
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
495
620
 
496
621
  declare interface RuntimeSettings extends EmbindObject {
@@ -499,6 +624,7 @@ declare interface RuntimeSettings extends EmbindObject {
499
624
  targetFramesPerSecond: number;
500
625
  xrModeActive: boolean;
501
626
  splatCountBudget: number;
627
+ splatCountBudgetCap: number;
502
628
  }
503
629
 
504
630
  export declare class Scene extends EventTarget {
@@ -510,6 +636,7 @@ export declare class Scene extends EventTarget {
510
636
  readonly id: number;
511
637
  get key(): unknown;
512
638
  set key(key: unknown);
639
+ /* Excluded from this release type: _assetFormat */
513
640
  get viewerKey(): string | null;
514
641
  set viewerKey(viewerKey: string | null);
515
642
  get streams(): Set<Stream>;
@@ -519,22 +646,35 @@ export declare class Scene extends EventTarget {
519
646
  readonly client: Client;
520
647
  readonly handle?: number;
521
648
  constructor({ miris, viewerKey }: SceneInit);
649
+ /**
650
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
651
+ * displayed frame from the host's animation loop, and render when it returns true.
652
+ *
653
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
654
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
655
+ *
656
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
657
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
658
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
659
+ */
660
+ update(ts?: DOMHighResTimeStamp): boolean;
522
661
  dispose(): void;
523
- /* Excluded from this release type: _getViewingVolumeObb */
524
662
  fetchAssets(tags?: string | Iterable<string>): Promise<{
525
663
  name: string;
526
664
  thumbnailUrl: string;
527
665
  uuid: string;
528
666
  tags: string[];
529
667
  }[]>;
530
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
531
668
  add(stream: Stream): void;
532
669
  getStreamForId(streamObjectId: number): Stream | undefined;
533
670
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
534
671
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
672
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
535
673
  /* Excluded from this release type: _getFeatureMesh */
536
674
  /* Excluded from this release type: _getDrMap */
675
+ /* Excluded from this release type: _onDrMapLadder */
537
676
  /* Excluded from this release type: _onFeatureData */
677
+ /* Excluded from this release type: _updateStreamStatuses */
538
678
  /* Excluded from this release type: _onSceneLoaded */
539
679
  delete(stream: Stream): void;
540
680
  close(): void;
@@ -624,6 +764,11 @@ export declare class Stream extends EventTarget {
624
764
  constructor(options: StreamInit);
625
765
  _initStream({ uuid }: StreamInit): void;
626
766
  /* Excluded from this release type: _onStreamLoaded */
767
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
768
+ /* Excluded from this release type: _getViewingVolumeObb */
769
+ /** How much of the stream has loaded, as of the last frame. */
770
+ get readyState(): ReadyState_2;
771
+ /* Excluded from this release type: _updateStatus */
627
772
  /* Excluded from this release type: _onRootLoaded */
628
773
  add(modelRoot: ModelRoot): void;
629
774
  end(): void;