@miris-inc/core 0.0.8-0cedf05 → 0.0.8-10fcfd5

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,16 +1,54 @@
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
+ readonly minValue: { x: number; y: number; z: number };
7
13
  readonly maxValue: { x: number; y: number; z: number };
8
14
  }
9
15
 
16
+ export declare class AttributeNames {
17
+ static readonly SPARK_PACKED_SPLAT: string;
18
+ static readonly SPARK_EXTENDED_SPLAT_LOW: string;
19
+ static readonly SPARK_EXTENDED_SPLAT_HIGH: string;
20
+ static readonly SPARK_PACKED_SH1: string;
21
+ static readonly SPARK_PACKED_SH2: string;
22
+ static readonly SPARK_PACKED_SH3: string;
23
+ static readonly SPARK_EXTENDED_SH1: string;
24
+ static readonly SPARK_EXTENDED_SH2: string;
25
+ static readonly SPARK_EXTENDED_SH3_A: string;
26
+ static readonly SPARK_EXTENDED_SH3_B: string;
27
+ static readonly UNUSED: string;
28
+ static readonly SHARK_ELLIPSOIDS: string;
29
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
30
+ static readonly SHARK_SPHERICAL_HARMONICS: string;
31
+ static readonly COLOR: string;
32
+ static readonly OCTANT_OFFSETS: string;
33
+ static readonly SURFEL_OCTANT_OFFSETS: string;
34
+ static readonly SURFEL_COUNT: string;
35
+ static readonly REFLECTANCE_DATA_V1: string;
36
+ static readonly GLASS_MESH_GEOMETRY: string;
37
+ static readonly GLASS_MESH_PANELS: string;
38
+ static readonly MOD_DEPTH: string;
39
+ }
40
+
41
+ declare type CachedAttribute = {
42
+ paddedData: Uint32Array<ArrayBuffer>;
43
+ originalSizeInUints: number;
44
+ };
45
+
10
46
  export declare class Camera {
11
47
  #private;
12
48
  readonly id: number;
13
49
  update(): void;
50
+ get viewportHeight(): number;
51
+ set viewportHeight(viewportHeight: number);
14
52
  get aspect(): number;
15
53
  set aspect(aspect: number);
16
54
  get fov(): number;
@@ -24,7 +62,7 @@ export declare class Camera {
24
62
  readonly engine: Engine;
25
63
  readonly miris: Miris;
26
64
  readonly scene: Scene;
27
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
65
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
28
66
  }
29
67
 
30
68
  export declare type CameraInit = {
@@ -34,6 +72,7 @@ export declare type CameraInit = {
34
72
  far: number;
35
73
  matrix: Matrix4x4Tuple;
36
74
  scene: Scene;
75
+ viewportHeight?: number;
37
76
  };
38
77
 
39
78
  export declare class Change {
@@ -43,7 +82,7 @@ export declare class Change {
43
82
  }
44
83
 
45
84
  export declare type ChangeInit = {
46
- type: "created" | "activated" | "modified" | "deactivated" | "deleted";
85
+ type: "created" | "activated" | "modified" | "deactivated" | "deleted" | "remasked";
47
86
  lod: Lod;
48
87
  };
49
88
 
@@ -69,6 +108,7 @@ declare class Client {
69
108
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
70
109
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
71
110
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
111
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
72
112
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
73
113
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
74
114
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -84,6 +124,8 @@ declare class Client {
84
124
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
85
125
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
86
126
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
127
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
128
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
87
129
  getName(...args: ClientMethodParameters["getName"]): string;
88
130
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
89
131
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -91,7 +133,6 @@ declare class Client {
91
133
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
92
134
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
93
135
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
94
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
95
136
  }
96
137
 
97
138
  declare type ClientInit = {
@@ -190,6 +231,8 @@ declare class Engine {
190
231
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
191
232
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
192
233
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
234
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
235
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
193
236
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
194
237
  free(...args: [size: number]): number;
195
238
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -199,8 +242,8 @@ declare class Engine {
199
242
  attributeName: string,
200
243
  attributeInfo: AttributeInfo
201
244
  ]): AquaStatus;
202
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
203
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
245
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
246
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
204
247
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
205
248
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
206
249
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -256,9 +299,11 @@ declare class Engine {
256
299
  aspectRatio: number,
257
300
  verticalFov: number,
258
301
  nearPlane: number,
259
- farPlane: number
302
+ farPlane: number,
303
+ viewportHeightPixels: number
260
304
  ]): AquaStatus;
261
305
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
306
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
262
307
  setSceneObjectTransform(...args: [
263
308
  handle: AquaClientHandle,
264
309
  sceneObjectId: number,
@@ -267,6 +312,8 @@ declare class Engine {
267
312
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
268
313
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
269
314
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
315
+ getDrMapLadderRoughnessLevels(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
316
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
270
317
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
271
318
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
272
319
  takeAttribute(...args: [
@@ -279,8 +326,15 @@ declare class Engine {
279
326
  getActiveClientSideIdsCheckSum(): number;
280
327
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
281
328
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
282
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
283
329
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
330
+ /**
331
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
332
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
333
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
334
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
335
+ * one.
336
+ */
337
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
284
338
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
285
339
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
286
340
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -298,25 +352,9 @@ export declare class Lod {
298
352
  #private;
299
353
  readonly id: LodInit["id"];
300
354
  readonly store: LodStore;
301
- useExtSplats: boolean;
302
- splatsExtendedData: Uint32Array<ArrayBuffer> | null;
303
- sh1Data: Uint32Array<ArrayBuffer> | null;
304
- sh1Max: number;
305
- sh2Data: Uint32Array<ArrayBuffer> | null;
306
- sh2Max: number;
307
- sh3Data: Uint32Array<ArrayBuffer> | null;
308
- sh3Max: number;
309
- sh3ExtendedData: Uint32Array<ArrayBuffer> | null;
310
355
  get key(): unknown;
311
356
  set key(key: unknown);
312
357
  readonly modelRoot: ModelRoot;
313
- set splats(splats: Uint32Array<ArrayBuffer> | null);
314
- get splats(): Uint32Array<ArrayBuffer> | null;
315
- /**
316
- * Sets the cached world bounds of this object
317
- *
318
- * @deprecated set the local bounds and transform as needed
319
- */
320
358
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
321
359
  /**
322
360
  * Retrieves the cached world bounds of this object
@@ -334,21 +372,30 @@ export declare class Lod {
334
372
  get localBounds(): Float32Array<ArrayBuffer> | null;
335
373
  set lodIndex(index: number);
336
374
  get lodIndex(): number | null;
337
- set paddingCount(count: number);
338
- get paddingCount(): number;
375
+ set paddingSplatsCount(count: number);
376
+ get paddingSplatsCount(): number;
339
377
  set transform(transform: Float32Array<ArrayBuffer> | null);
340
378
  get transform(): Float32Array<ArrayBuffer> | null;
341
- setSh1(sh1Data: Uint32Array<ArrayBuffer>, sh1Max: number): void;
342
- setSh2(sh2Data: Uint32Array<ArrayBuffer>, sh2Max: number): void;
343
- setSh3(sh3Data: Uint32Array<ArrayBuffer>, sh3Max: number): void;
379
+ get _drawnOctantMask(): number;
380
+ set _drawnOctantMask(mask: number);
381
+ get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
382
+ get _hasOctantOffsets(): boolean;
383
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
384
+ get _surfelCount(): number;
385
+ _readOctantOffsets(engine: Engine): void;
386
+ hasAttribute(attributeName: string): boolean;
387
+ getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
388
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
389
+ _getRawByteAttributeWithBounds(engine: Engine, attributeName: string): RawByteAttributeWithBounds | null;
344
390
  dispose(): void;
345
- constructor({ id, modelRoot, lodStore }: LodInit);
391
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
346
392
  }
347
393
 
348
394
  export declare type LodInit = {
349
395
  id: number;
350
396
  modelRoot: ModelRoot;
351
397
  lodStore: LodStore;
398
+ client: Client;
352
399
  };
353
400
 
354
401
  export declare class LodStore {
@@ -389,7 +436,9 @@ declare interface MainModule {
389
436
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
390
437
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
391
438
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
439
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
392
440
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
441
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
393
442
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
394
443
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
395
444
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -398,13 +447,17 @@ declare interface MainModule {
398
447
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
399
448
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
400
449
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
450
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
451
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
401
452
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
402
453
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
403
454
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
404
455
  GetActiveClientSideIdsCheckSum(): number;
405
456
  TakeRenderRequired(handle: number): boolean;
457
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
406
458
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
407
459
  setMaxCacheSize(maxSizeBytes: number): void;
460
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
408
461
  }
409
462
 
410
463
  /**
@@ -417,6 +470,7 @@ declare interface MainModule {
417
470
  */
418
471
  export declare class Miris {
419
472
  #private;
473
+ static tryUseShark: boolean;
420
474
  static _instance: Miris;
421
475
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
422
476
  readonly engine: Engine;
@@ -435,17 +489,26 @@ export declare class Miris {
435
489
  protected _xrSession: XRSession | null;
436
490
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
437
491
  signalResumeFromIdle(): void;
492
+ get _splatCountBudget(): number;
438
493
  /**
439
494
  * Why 43? Because the AVP throttles down to 45Hz :(
440
495
  */
441
496
  static readonly _XR_TARGET_FRAME_RATE = 43;
497
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
498
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
499
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP = 3000000;
500
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
501
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2500000;
502
+ /* Excluded from this release type: _isMobileDevice */
503
+ /* Excluded from this release type: _sharkSplatCapacity */
504
+ /* Excluded from this release type: _sharkSplatBudgetCap */
442
505
  /* Excluded from this release type: _setTargetFrameRate */
443
506
  /* Excluded from this release type: _setXRModeActive */
444
507
  /* Excluded from this release type: _setSplatCountBudgetOverride */
445
508
  /* Excluded from this release type: _update */
446
509
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
447
510
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
448
- update(): boolean;
511
+ /* Excluded from this release type: _updateForScene */
449
512
  applyChanges(_entries: Change[]): void;
450
513
  _computeAdditionalRenderNeeded(): boolean;
451
514
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -474,6 +537,28 @@ export declare type ModelRootInit = {
474
537
  stream: Stream;
475
538
  };
476
539
 
540
+ /**
541
+ * The byte-exact counterpart of getRawUint32Attribute above: same no-padding, no-takeAttribute
542
+ * contract, returning bytes rather than words.
543
+ *
544
+ * Use this rather than that one wherever the stride is not a whole number of words:
545
+ * reflectanceDataV1's 26-byte record is not, and an odd record count would lose that record's
546
+ * last field to dataPtrView's truncation.
547
+ */
548
+ export declare type RawByteAttributeWithBounds = {
549
+ bytes: Uint8Array<ArrayBuffer>;
550
+ minValue: {
551
+ x: number;
552
+ y: number;
553
+ z: number;
554
+ };
555
+ maxValue: {
556
+ x: number;
557
+ y: number;
558
+ z: number;
559
+ };
560
+ };
561
+
477
562
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
478
563
 
479
564
  declare interface RuntimeSettings extends EmbindObject {
@@ -482,6 +567,7 @@ declare interface RuntimeSettings extends EmbindObject {
482
567
  targetFramesPerSecond: number;
483
568
  xrModeActive: boolean;
484
569
  splatCountBudget: number;
570
+ splatCountBudgetCap: number;
485
571
  }
486
572
 
487
573
  export declare class Scene extends EventTarget {
@@ -493,6 +579,7 @@ export declare class Scene extends EventTarget {
493
579
  readonly id: number;
494
580
  get key(): unknown;
495
581
  set key(key: unknown);
582
+ /* Excluded from this release type: _assetFormat */
496
583
  get viewerKey(): string | null;
497
584
  set viewerKey(viewerKey: string | null);
498
585
  get streams(): Set<Stream>;
@@ -502,21 +589,33 @@ export declare class Scene extends EventTarget {
502
589
  readonly client: Client;
503
590
  readonly handle?: number;
504
591
  constructor({ miris, viewerKey }: SceneInit);
592
+ /**
593
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
594
+ * displayed frame from the host's animation loop, and render when it returns true.
595
+ *
596
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
597
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
598
+ *
599
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
600
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
601
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
602
+ */
603
+ update(ts?: DOMHighResTimeStamp): boolean;
505
604
  dispose(): void;
506
- /* Excluded from this release type: _getViewingVolumeBounds */
507
605
  fetchAssets(tags?: string | Iterable<string>): Promise<{
508
606
  name: string;
509
607
  thumbnailUrl: string;
510
608
  uuid: string;
511
609
  tags: string[];
512
610
  }[]>;
513
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
514
611
  add(stream: Stream): void;
515
612
  getStreamForId(streamObjectId: number): Stream | undefined;
516
613
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
517
614
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
615
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
518
616
  /* Excluded from this release type: _getFeatureMesh */
519
617
  /* Excluded from this release type: _getDrMap */
618
+ /* Excluded from this release type: _onDrMapLadder */
520
619
  /* Excluded from this release type: _onFeatureData */
521
620
  /* Excluded from this release type: _onSceneLoaded */
522
621
  delete(stream: Stream): void;
@@ -529,6 +628,7 @@ declare interface SceneChangeIds extends EmbindObject {
529
628
  readonly modifiedObjectsCount: number;
530
629
  readonly deactivatedObjectsCount: number;
531
630
  readonly deletedObjectsCount: number;
631
+ readonly remaskedObjectsCount: number;
532
632
  }
533
633
 
534
634
  export declare type SceneInit = {
@@ -540,6 +640,13 @@ declare interface SceneMetadata extends EmbindObject {
540
640
  readonly inputColorSpace: string;
541
641
  }
542
642
 
643
+ declare type SparkAttributeInfo = {
644
+ elementsPerSplat: number;
645
+ discard: boolean;
646
+ };
647
+
648
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
649
+
543
650
  declare interface SpatialFormat extends EmbindObject {
544
651
  metersPerUnit: number;
545
652
  upAxis: number;
@@ -567,6 +674,8 @@ export declare class Stream extends EventTarget {
567
674
  set key(key: unknown);
568
675
  get matrix(): Matrix4x4Tuple;
569
676
  set matrix(matrix: Matrix4x4Tuple);
677
+ get opacity(): number;
678
+ set opacity(opacity: number);
570
679
  get boundingBox(): {
571
680
  min: {
572
681
  x: number;
@@ -597,6 +706,8 @@ export declare class Stream extends EventTarget {
597
706
  constructor(options: StreamInit);
598
707
  _initStream({ uuid }: StreamInit): void;
599
708
  /* Excluded from this release type: _onStreamLoaded */
709
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
710
+ /* Excluded from this release type: _getViewingVolumeObb */
600
711
  /* Excluded from this release type: _onRootLoaded */
601
712
  add(modelRoot: ModelRoot): void;
602
713
  end(): void;