@miris-inc/core 0.0.8-91608f2 → 0.0.8-929e9eb

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
 
@@ -24,6 +32,15 @@ export declare class AttributeNames {
24
32
  static readonly SHARK_SPHERICAL_HARMONICS: string;
25
33
  static readonly COLOR: string;
26
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;
27
44
  }
28
45
 
29
46
  declare type CachedAttribute = {
@@ -96,7 +113,9 @@ declare class Client {
96
113
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
97
114
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
98
115
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
116
+ getStreamStatus(...args: ClientMethodParameters["getStreamStatus"]): StreamStatus;
99
117
  getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
118
+ getOctantLocalBoundingBoxes(...args: ClientMethodParameters["getOctantLocalBoundingBoxes"]): number[];
100
119
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
101
120
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
102
121
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -112,6 +131,8 @@ declare class Client {
112
131
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
113
132
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
114
133
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
134
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
135
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
115
136
  getName(...args: ClientMethodParameters["getName"]): string;
116
137
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
117
138
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -119,7 +140,6 @@ declare class Client {
119
140
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
120
141
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
121
142
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
122
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
123
143
  }
124
144
 
125
145
  declare type ClientInit = {
@@ -178,11 +198,23 @@ declare class Engine {
178
198
  readonly Loaded: 2;
179
199
  readonly Failed: 3;
180
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
+ };
181
208
  readonly ready: Promise<this>;
182
209
  readonly pending: boolean;
183
210
  get module(): MainModule;
184
211
  constructor(moduleOptions?: Record<string, unknown>);
185
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
+ };
186
218
  get Handedness(): {
187
219
  Right: number;
188
220
  Left: number;
@@ -220,6 +252,7 @@ declare class Engine {
220
252
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
221
253
  remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
222
254
  getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
255
+ getOctantLocalBoundingBoxes(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
223
256
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
224
257
  free(...args: [size: number]): number;
225
258
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -229,8 +262,8 @@ declare class Engine {
229
262
  attributeName: string,
230
263
  attributeInfo: AttributeInfo
231
264
  ]): AquaStatus;
232
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
233
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
265
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
266
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
234
267
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
235
268
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
236
269
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -238,6 +271,7 @@ declare class Engine {
238
271
  getSceneChangesCounts(...args: [handle: AquaClientHandle, sceneChangeIds: SceneChangeIds]): void;
239
272
  getSceneMetadata(...args: [handle: AquaClientHandle, metadata: SceneMetadata]): number;
240
273
  getSceneObjectParent(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
274
+ getStreamStatus(...args: [handle: AquaClientHandle, streamObjectId: number]): StreamStatus;
241
275
  getSceneObjectType(...args: [handle: AquaClientHandle, sceneObjectId: number]): SceneObjectType;
242
276
  getLocalTransform(...args: [
243
277
  handle: AquaClientHandle,
@@ -290,6 +324,7 @@ declare class Engine {
290
324
  viewportHeightPixels: number
291
325
  ]): AquaStatus;
292
326
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
327
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
293
328
  setSceneObjectTransform(...args: [
294
329
  handle: AquaClientHandle,
295
330
  sceneObjectId: number,
@@ -298,6 +333,8 @@ declare class Engine {
298
333
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
299
334
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
300
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;
301
338
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
302
339
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
303
340
  takeAttribute(...args: [
@@ -310,8 +347,15 @@ declare class Engine {
310
347
  getActiveClientSideIdsCheckSum(): number;
311
348
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
312
349
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
313
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
314
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
+ * one.
357
+ */
358
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
315
359
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
316
360
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
317
361
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -325,6 +369,12 @@ declare type EngineMethodParameters<E extends Engine = Engine> = {
325
369
  [Key in keyof E]: E[Key] extends (...args: any[]) => any ? Parameters<E[Key]> : never;
326
370
  };
327
371
 
372
+ export declare const HaveData = 2;
373
+
374
+ export declare const HaveMetadata = 1;
375
+
376
+ export declare const HaveNothing = 0;
377
+
328
378
  export declare class Lod {
329
379
  #private;
330
380
  readonly id: LodInit["id"];
@@ -355,11 +405,19 @@ export declare class Lod {
355
405
  get transform(): Float32Array<ArrayBuffer> | null;
356
406
  get _drawnOctantMask(): number;
357
407
  set _drawnOctantMask(mask: number);
408
+ get _octantLocalBounds(): Float32Array<ArrayBuffer> | null;
409
+ set _octantLocalBounds(bounds: Float32Array<ArrayBuffer> | null);
358
410
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
359
411
  get _hasOctantOffsets(): boolean;
412
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
413
+ get _surfelCount(): number;
414
+ get _surfelOwnerGroups(): Uint32Array<ArrayBuffer> | null;
415
+ get _octantCell(): Uint32Array<ArrayBuffer> | null;
360
416
  _readOctantOffsets(engine: Engine): void;
361
417
  hasAttribute(attributeName: string): boolean;
362
418
  getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
419
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
420
+ _getRawByteAttributeWithBounds(engine: Engine, attributeName: string): RawByteAttributeWithBounds | null;
363
421
  dispose(): void;
364
422
  constructor({ id, modelRoot, lodStore, client }: LodInit);
365
423
  }
@@ -384,6 +442,11 @@ export declare class LodStore {
384
442
 
385
443
  declare interface MainModule {
386
444
  AttributeInfo: new () => AttributeInfo;
445
+ CompressionType: {
446
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
447
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
448
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
449
+ };
387
450
  Handedness: { Right: number; Left: number };
388
451
  HEAPF32: Float32Array<ArrayBuffer>;
389
452
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -412,6 +475,7 @@ declare interface MainModule {
412
475
  remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
413
476
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
414
477
  GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
478
+ GetOctantLocalBoundingBoxes(handle: number, sceneObjectId: number): number[];
415
479
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
416
480
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
417
481
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -420,13 +484,17 @@ declare interface MainModule {
420
484
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
421
485
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
422
486
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
487
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
488
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
423
489
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
424
490
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
425
491
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
426
492
  GetActiveClientSideIdsCheckSum(): number;
427
493
  TakeRenderRequired(handle: number): boolean;
494
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
428
495
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
429
496
  setMaxCacheSize(maxSizeBytes: number): void;
497
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
430
498
  }
431
499
 
432
500
  /**
@@ -463,13 +531,22 @@ export declare class Miris {
463
531
  * Why 43? Because the AVP throttles down to 45Hz :(
464
532
  */
465
533
  static readonly _XR_TARGET_FRAME_RATE = 43;
534
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
535
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
536
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP: number;
537
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
538
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2400000;
539
+ /* Excluded from this release type: _isMobileDevice */
540
+ /* Excluded from this release type: _sharkSplatCapacity */
541
+ /* Excluded from this release type: _limitSharkSplatCapacity */
542
+ /* Excluded from this release type: _sharkSplatBudgetCap */
466
543
  /* Excluded from this release type: _setTargetFrameRate */
467
544
  /* Excluded from this release type: _setXRModeActive */
468
545
  /* Excluded from this release type: _setSplatCountBudgetOverride */
469
546
  /* Excluded from this release type: _update */
470
547
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
471
548
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
472
- update(): boolean;
549
+ /* Excluded from this release type: _updateForScene */
473
550
  applyChanges(_entries: Change[]): void;
474
551
  _computeAdditionalRenderNeeded(): boolean;
475
552
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -498,6 +575,31 @@ export declare type ModelRootInit = {
498
575
  stream: Stream;
499
576
  };
500
577
 
578
+ /**
579
+ * The byte-exact counterpart of getRawUint32Attribute above: same no-padding, no-takeAttribute
580
+ * contract, returning bytes rather than words.
581
+ *
582
+ * Use this rather than that one wherever the stride is not a whole number of words: the
583
+ * reflectance records' 18- and 26-byte strides are not, and an odd record count would lose that
584
+ * record's last field to dataPtrView's truncation.
585
+ */
586
+ export declare type RawByteAttributeWithBounds = {
587
+ bytes: Uint8Array<ArrayBuffer>;
588
+ minValue: {
589
+ x: number;
590
+ y: number;
591
+ z: number;
592
+ };
593
+ maxValue: {
594
+ x: number;
595
+ y: number;
596
+ z: number;
597
+ };
598
+ };
599
+
600
+ declare type ReadyState_2 = typeof HaveNothing | typeof HaveMetadata | typeof HaveData;
601
+ export { ReadyState_2 as ReadyState }
602
+
501
603
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
502
604
 
503
605
  declare interface RuntimeSettings extends EmbindObject {
@@ -506,6 +608,7 @@ declare interface RuntimeSettings extends EmbindObject {
506
608
  targetFramesPerSecond: number;
507
609
  xrModeActive: boolean;
508
610
  splatCountBudget: number;
611
+ splatCountBudgetCap: number;
509
612
  }
510
613
 
511
614
  export declare class Scene extends EventTarget {
@@ -517,6 +620,7 @@ export declare class Scene extends EventTarget {
517
620
  readonly id: number;
518
621
  get key(): unknown;
519
622
  set key(key: unknown);
623
+ /* Excluded from this release type: _assetFormat */
520
624
  get viewerKey(): string | null;
521
625
  set viewerKey(viewerKey: string | null);
522
626
  get streams(): Set<Stream>;
@@ -526,22 +630,35 @@ export declare class Scene extends EventTarget {
526
630
  readonly client: Client;
527
631
  readonly handle?: number;
528
632
  constructor({ miris, viewerKey }: SceneInit);
633
+ /**
634
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
635
+ * displayed frame from the host's animation loop, and render when it returns true.
636
+ *
637
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
638
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
639
+ *
640
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
641
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
642
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
643
+ */
644
+ update(ts?: DOMHighResTimeStamp): boolean;
529
645
  dispose(): void;
530
- /* Excluded from this release type: _getViewingVolumeObb */
531
646
  fetchAssets(tags?: string | Iterable<string>): Promise<{
532
647
  name: string;
533
648
  thumbnailUrl: string;
534
649
  uuid: string;
535
650
  tags: string[];
536
651
  }[]>;
537
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
538
652
  add(stream: Stream): void;
539
653
  getStreamForId(streamObjectId: number): Stream | undefined;
540
654
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
541
655
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
656
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
542
657
  /* Excluded from this release type: _getFeatureMesh */
543
658
  /* Excluded from this release type: _getDrMap */
659
+ /* Excluded from this release type: _onDrMapLadder */
544
660
  /* Excluded from this release type: _onFeatureData */
661
+ /* Excluded from this release type: _updateStreamStatuses */
545
662
  /* Excluded from this release type: _onSceneLoaded */
546
663
  delete(stream: Stream): void;
547
664
  close(): void;
@@ -631,6 +748,11 @@ export declare class Stream extends EventTarget {
631
748
  constructor(options: StreamInit);
632
749
  _initStream({ uuid }: StreamInit): void;
633
750
  /* Excluded from this release type: _onStreamLoaded */
751
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
752
+ /* Excluded from this release type: _getViewingVolumeObb */
753
+ /** How much of the stream has loaded, as of the last frame. */
754
+ get readyState(): ReadyState_2;
755
+ /* Excluded from this release type: _updateStatus */
634
756
  /* Excluded from this release type: _onRootLoaded */
635
757
  add(modelRoot: ModelRoot): void;
636
758
  end(): void;