@miris-inc/core 0.0.8-871f628 → 0.0.8-8939025

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 = {
@@ -94,7 +113,9 @@ declare class Client {
94
113
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
95
114
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
96
115
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
116
+ getStreamStatus(...args: ClientMethodParameters["getStreamStatus"]): StreamStatus;
97
117
  getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
118
+ getOctantLocalBoundingBoxes(...args: ClientMethodParameters["getOctantLocalBoundingBoxes"]): number[];
98
119
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
99
120
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
100
121
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -110,6 +131,8 @@ declare class Client {
110
131
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
111
132
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
112
133
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
134
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
135
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
113
136
  getName(...args: ClientMethodParameters["getName"]): string;
114
137
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
115
138
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -117,7 +140,6 @@ declare class Client {
117
140
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
118
141
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
119
142
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
120
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
121
143
  }
122
144
 
123
145
  declare type ClientInit = {
@@ -176,11 +198,23 @@ declare class Engine {
176
198
  readonly Loaded: 2;
177
199
  readonly Failed: 3;
178
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
+ };
179
208
  readonly ready: Promise<this>;
180
209
  readonly pending: boolean;
181
210
  get module(): MainModule;
182
211
  constructor(moduleOptions?: Record<string, unknown>);
183
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
+ };
184
218
  get Handedness(): {
185
219
  Right: number;
186
220
  Left: number;
@@ -218,6 +252,7 @@ declare class Engine {
218
252
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
219
253
  remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
220
254
  getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
255
+ getOctantLocalBoundingBoxes(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
221
256
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
222
257
  free(...args: [size: number]): number;
223
258
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -227,8 +262,8 @@ declare class Engine {
227
262
  attributeName: string,
228
263
  attributeInfo: AttributeInfo
229
264
  ]): AquaStatus;
230
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
231
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
265
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
266
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
232
267
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
233
268
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
234
269
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -236,6 +271,7 @@ declare class Engine {
236
271
  getSceneChangesCounts(...args: [handle: AquaClientHandle, sceneChangeIds: SceneChangeIds]): void;
237
272
  getSceneMetadata(...args: [handle: AquaClientHandle, metadata: SceneMetadata]): number;
238
273
  getSceneObjectParent(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
274
+ getStreamStatus(...args: [handle: AquaClientHandle, streamObjectId: number]): StreamStatus;
239
275
  getSceneObjectType(...args: [handle: AquaClientHandle, sceneObjectId: number]): SceneObjectType;
240
276
  getLocalTransform(...args: [
241
277
  handle: AquaClientHandle,
@@ -288,6 +324,7 @@ declare class Engine {
288
324
  viewportHeightPixels: number
289
325
  ]): AquaStatus;
290
326
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
327
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
291
328
  setSceneObjectTransform(...args: [
292
329
  handle: AquaClientHandle,
293
330
  sceneObjectId: number,
@@ -296,6 +333,8 @@ declare class Engine {
296
333
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
297
334
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
298
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;
299
338
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
300
339
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
301
340
  takeAttribute(...args: [
@@ -308,8 +347,22 @@ declare class Engine {
308
347
  getActiveClientSideIdsCheckSum(): number;
309
348
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
310
349
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
311
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
312
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;
313
366
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
314
367
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
315
368
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -323,6 +376,12 @@ declare type EngineMethodParameters<E extends Engine = Engine> = {
323
376
  [Key in keyof E]: E[Key] extends (...args: any[]) => any ? Parameters<E[Key]> : never;
324
377
  };
325
378
 
379
+ export declare const HaveData = 2;
380
+
381
+ export declare const HaveMetadata = 1;
382
+
383
+ export declare const HaveNothing = 0;
384
+
326
385
  export declare class Lod {
327
386
  #private;
328
387
  readonly id: LodInit["id"];
@@ -353,11 +412,19 @@ export declare class Lod {
353
412
  get transform(): Float32Array<ArrayBuffer> | null;
354
413
  get _drawnOctantMask(): number;
355
414
  set _drawnOctantMask(mask: number);
415
+ get _octantLocalBounds(): Float32Array<ArrayBuffer> | null;
416
+ set _octantLocalBounds(bounds: Float32Array<ArrayBuffer> | null);
356
417
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
357
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;
358
423
  _readOctantOffsets(engine: Engine): void;
359
424
  hasAttribute(attributeName: string): boolean;
360
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;
361
428
  dispose(): void;
362
429
  constructor({ id, modelRoot, lodStore, client }: LodInit);
363
430
  }
@@ -382,6 +449,11 @@ export declare class LodStore {
382
449
 
383
450
  declare interface MainModule {
384
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
+ };
385
457
  Handedness: { Right: number; Left: number };
386
458
  HEAPF32: Float32Array<ArrayBuffer>;
387
459
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -410,6 +482,7 @@ declare interface MainModule {
410
482
  remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
411
483
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
412
484
  GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
485
+ GetOctantLocalBoundingBoxes(handle: number, sceneObjectId: number): number[];
413
486
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
414
487
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
415
488
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -418,13 +491,22 @@ declare interface MainModule {
418
491
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
419
492
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
420
493
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
494
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
495
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
421
496
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
422
497
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
423
498
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
424
499
  GetActiveClientSideIdsCheckSum(): number;
425
500
  TakeRenderRequired(handle: number): boolean;
501
+ BeginFrame(
502
+ contextHandle: number,
503
+ previousFrameTimeMs: number,
504
+ primsResident: number,
505
+ primCapacity: number,
506
+ ): number;
426
507
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
427
508
  setMaxCacheSize(maxSizeBytes: number): void;
509
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
428
510
  }
429
511
 
430
512
  /**
@@ -456,17 +538,31 @@ export declare class Miris {
456
538
  protected _xrSession: XRSession | null;
457
539
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
458
540
  signalResumeFromIdle(): void;
541
+ get _splatCountBudget(): number;
459
542
  /**
460
543
  * Why 43? Because the AVP throttles down to 45Hz :(
461
544
  */
462
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 */
463
558
  /* Excluded from this release type: _setTargetFrameRate */
464
559
  /* Excluded from this release type: _setXRModeActive */
465
560
  /* Excluded from this release type: _setSplatCountBudgetOverride */
561
+ /* Excluded from this release type: _reportRendererPrims */
466
562
  /* Excluded from this release type: _update */
467
563
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
468
564
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
469
- update(): boolean;
565
+ /* Excluded from this release type: _updateForScene */
470
566
  applyChanges(_entries: Change[]): void;
471
567
  _computeAdditionalRenderNeeded(): boolean;
472
568
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -495,6 +591,31 @@ export declare type ModelRootInit = {
495
591
  stream: Stream;
496
592
  };
497
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
+
498
619
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
499
620
 
500
621
  declare interface RuntimeSettings extends EmbindObject {
@@ -503,6 +624,7 @@ declare interface RuntimeSettings extends EmbindObject {
503
624
  targetFramesPerSecond: number;
504
625
  xrModeActive: boolean;
505
626
  splatCountBudget: number;
627
+ splatCountBudgetCap: number;
506
628
  }
507
629
 
508
630
  export declare class Scene extends EventTarget {
@@ -514,6 +636,7 @@ export declare class Scene extends EventTarget {
514
636
  readonly id: number;
515
637
  get key(): unknown;
516
638
  set key(key: unknown);
639
+ /* Excluded from this release type: _assetFormat */
517
640
  get viewerKey(): string | null;
518
641
  set viewerKey(viewerKey: string | null);
519
642
  get streams(): Set<Stream>;
@@ -523,22 +646,35 @@ export declare class Scene extends EventTarget {
523
646
  readonly client: Client;
524
647
  readonly handle?: number;
525
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;
526
661
  dispose(): void;
527
- /* Excluded from this release type: _getViewingVolumeObb */
528
662
  fetchAssets(tags?: string | Iterable<string>): Promise<{
529
663
  name: string;
530
664
  thumbnailUrl: string;
531
665
  uuid: string;
532
666
  tags: string[];
533
667
  }[]>;
534
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
535
668
  add(stream: Stream): void;
536
669
  getStreamForId(streamObjectId: number): Stream | undefined;
537
670
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
538
671
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
672
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
539
673
  /* Excluded from this release type: _getFeatureMesh */
540
674
  /* Excluded from this release type: _getDrMap */
675
+ /* Excluded from this release type: _onDrMapLadder */
541
676
  /* Excluded from this release type: _onFeatureData */
677
+ /* Excluded from this release type: _updateStreamStatuses */
542
678
  /* Excluded from this release type: _onSceneLoaded */
543
679
  delete(stream: Stream): void;
544
680
  close(): void;
@@ -628,6 +764,11 @@ export declare class Stream extends EventTarget {
628
764
  constructor(options: StreamInit);
629
765
  _initStream({ uuid }: StreamInit): void;
630
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 */
631
772
  /* Excluded from this release type: _onRootLoaded */
632
773
  add(modelRoot: ModelRoot): void;
633
774
  end(): void;