@miris-inc/core 0.0.8-91608f2 → 0.0.8-9249a0d

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,6 +113,7 @@ 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;
100
118
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
101
119
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
@@ -112,6 +130,8 @@ declare class Client {
112
130
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
113
131
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
114
132
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
133
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
134
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
115
135
  getName(...args: ClientMethodParameters["getName"]): string;
116
136
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
117
137
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -119,7 +139,6 @@ declare class Client {
119
139
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
120
140
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
121
141
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
122
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
123
142
  }
124
143
 
125
144
  declare type ClientInit = {
@@ -178,11 +197,23 @@ declare class Engine {
178
197
  readonly Loaded: 2;
179
198
  readonly Failed: 3;
180
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
+ };
181
207
  readonly ready: Promise<this>;
182
208
  readonly pending: boolean;
183
209
  get module(): MainModule;
184
210
  constructor(moduleOptions?: Record<string, unknown>);
185
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
+ };
186
217
  get Handedness(): {
187
218
  Right: number;
188
219
  Left: number;
@@ -229,8 +260,8 @@ declare class Engine {
229
260
  attributeName: string,
230
261
  attributeInfo: AttributeInfo
231
262
  ]): AquaStatus;
232
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
233
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
263
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
264
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
234
265
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
235
266
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
236
267
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -238,6 +269,7 @@ declare class Engine {
238
269
  getSceneChangesCounts(...args: [handle: AquaClientHandle, sceneChangeIds: SceneChangeIds]): void;
239
270
  getSceneMetadata(...args: [handle: AquaClientHandle, metadata: SceneMetadata]): number;
240
271
  getSceneObjectParent(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
272
+ getStreamStatus(...args: [handle: AquaClientHandle, streamObjectId: number]): StreamStatus;
241
273
  getSceneObjectType(...args: [handle: AquaClientHandle, sceneObjectId: number]): SceneObjectType;
242
274
  getLocalTransform(...args: [
243
275
  handle: AquaClientHandle,
@@ -290,6 +322,7 @@ declare class Engine {
290
322
  viewportHeightPixels: number
291
323
  ]): AquaStatus;
292
324
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
325
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
293
326
  setSceneObjectTransform(...args: [
294
327
  handle: AquaClientHandle,
295
328
  sceneObjectId: number,
@@ -298,6 +331,8 @@ declare class Engine {
298
331
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
299
332
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
300
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;
301
336
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
302
337
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
303
338
  takeAttribute(...args: [
@@ -310,8 +345,15 @@ declare class Engine {
310
345
  getActiveClientSideIdsCheckSum(): number;
311
346
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
312
347
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
313
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
314
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;
315
357
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
316
358
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
317
359
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -325,6 +367,12 @@ declare type EngineMethodParameters<E extends Engine = Engine> = {
325
367
  [Key in keyof E]: E[Key] extends (...args: any[]) => any ? Parameters<E[Key]> : never;
326
368
  };
327
369
 
370
+ export declare const HaveData = 2;
371
+
372
+ export declare const HaveMetadata = 1;
373
+
374
+ export declare const HaveNothing = 0;
375
+
328
376
  export declare class Lod {
329
377
  #private;
330
378
  readonly id: LodInit["id"];
@@ -357,9 +405,15 @@ export declare class Lod {
357
405
  set _drawnOctantMask(mask: number);
358
406
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
359
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;
360
412
  _readOctantOffsets(engine: Engine): void;
361
413
  hasAttribute(attributeName: string): boolean;
362
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;
363
417
  dispose(): void;
364
418
  constructor({ id, modelRoot, lodStore, client }: LodInit);
365
419
  }
@@ -384,6 +438,11 @@ export declare class LodStore {
384
438
 
385
439
  declare interface MainModule {
386
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
+ };
387
446
  Handedness: { Right: number; Left: number };
388
447
  HEAPF32: Float32Array<ArrayBuffer>;
389
448
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -420,13 +479,17 @@ declare interface MainModule {
420
479
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
421
480
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
422
481
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
482
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
483
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
423
484
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
424
485
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
425
486
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
426
487
  GetActiveClientSideIdsCheckSum(): number;
427
488
  TakeRenderRequired(handle: number): boolean;
489
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
428
490
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
429
491
  setMaxCacheSize(maxSizeBytes: number): void;
492
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
430
493
  }
431
494
 
432
495
  /**
@@ -463,13 +526,22 @@ export declare class Miris {
463
526
  * Why 43? Because the AVP throttles down to 45Hz :(
464
527
  */
465
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 */
466
538
  /* Excluded from this release type: _setTargetFrameRate */
467
539
  /* Excluded from this release type: _setXRModeActive */
468
540
  /* Excluded from this release type: _setSplatCountBudgetOverride */
469
541
  /* Excluded from this release type: _update */
470
542
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
471
543
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
472
- update(): boolean;
544
+ /* Excluded from this release type: _updateForScene */
473
545
  applyChanges(_entries: Change[]): void;
474
546
  _computeAdditionalRenderNeeded(): boolean;
475
547
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -498,6 +570,31 @@ export declare type ModelRootInit = {
498
570
  stream: Stream;
499
571
  };
500
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
+
501
598
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
502
599
 
503
600
  declare interface RuntimeSettings extends EmbindObject {
@@ -506,6 +603,7 @@ declare interface RuntimeSettings extends EmbindObject {
506
603
  targetFramesPerSecond: number;
507
604
  xrModeActive: boolean;
508
605
  splatCountBudget: number;
606
+ splatCountBudgetCap: number;
509
607
  }
510
608
 
511
609
  export declare class Scene extends EventTarget {
@@ -517,6 +615,7 @@ export declare class Scene extends EventTarget {
517
615
  readonly id: number;
518
616
  get key(): unknown;
519
617
  set key(key: unknown);
618
+ /* Excluded from this release type: _assetFormat */
520
619
  get viewerKey(): string | null;
521
620
  set viewerKey(viewerKey: string | null);
522
621
  get streams(): Set<Stream>;
@@ -526,22 +625,35 @@ export declare class Scene extends EventTarget {
526
625
  readonly client: Client;
527
626
  readonly handle?: number;
528
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;
529
640
  dispose(): void;
530
- /* Excluded from this release type: _getViewingVolumeObb */
531
641
  fetchAssets(tags?: string | Iterable<string>): Promise<{
532
642
  name: string;
533
643
  thumbnailUrl: string;
534
644
  uuid: string;
535
645
  tags: string[];
536
646
  }[]>;
537
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
538
647
  add(stream: Stream): void;
539
648
  getStreamForId(streamObjectId: number): Stream | undefined;
540
649
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
541
650
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
651
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
542
652
  /* Excluded from this release type: _getFeatureMesh */
543
653
  /* Excluded from this release type: _getDrMap */
654
+ /* Excluded from this release type: _onDrMapLadder */
544
655
  /* Excluded from this release type: _onFeatureData */
656
+ /* Excluded from this release type: _updateStreamStatuses */
545
657
  /* Excluded from this release type: _onSceneLoaded */
546
658
  delete(stream: Stream): void;
547
659
  close(): void;
@@ -631,6 +743,11 @@ export declare class Stream extends EventTarget {
631
743
  constructor(options: StreamInit);
632
744
  _initStream({ uuid }: StreamInit): void;
633
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 */
634
751
  /* Excluded from this release type: _onRootLoaded */
635
752
  add(modelRoot: ModelRoot): void;
636
753
  end(): void;