@miris-inc/core 0.0.8-c226163 → 0.0.8-c385de9

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,3 +1,8 @@
1
+ export declare const AssetFormat: {
2
+ readonly GaussianSplats: 1;
3
+ readonly GES: 2;
4
+ };
5
+
1
6
  declare interface AttributeInfo extends EmbindObject {
2
7
  readonly dataType: number;
3
8
  readonly componentCount: number;
@@ -7,10 +12,36 @@ declare interface AttributeInfo extends EmbindObject {
7
12
  readonly maxValue: { x: number; y: number; z: number };
8
13
  }
9
14
 
15
+ export declare class AttributeNames {
16
+ static readonly SPARK_PACKED_SPLAT: string;
17
+ static readonly SPARK_EXTENDED_SPLAT_LOW: string;
18
+ static readonly SPARK_EXTENDED_SPLAT_HIGH: string;
19
+ static readonly SPARK_PACKED_SH1: string;
20
+ static readonly SPARK_PACKED_SH2: string;
21
+ static readonly SPARK_PACKED_SH3: string;
22
+ static readonly SPARK_EXTENDED_SH1: string;
23
+ static readonly SPARK_EXTENDED_SH2: string;
24
+ static readonly SPARK_EXTENDED_SH3_A: string;
25
+ static readonly SPARK_EXTENDED_SH3_B: string;
26
+ static readonly UNUSED: string;
27
+ static readonly SHARK_ELLIPSOIDS: string;
28
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
29
+ static readonly SHARK_SPHERICAL_HARMONICS: string;
30
+ static readonly COLOR: string;
31
+ static readonly OCTANT_OFFSETS: string;
32
+ }
33
+
34
+ declare type CachedAttribute = {
35
+ paddedData: Uint32Array<ArrayBuffer>;
36
+ originalSizeInUints: number;
37
+ };
38
+
10
39
  export declare class Camera {
11
40
  #private;
12
41
  readonly id: number;
13
42
  update(): void;
43
+ get viewportHeight(): number;
44
+ set viewportHeight(viewportHeight: number);
14
45
  get aspect(): number;
15
46
  set aspect(aspect: number);
16
47
  get fov(): number;
@@ -24,7 +55,7 @@ export declare class Camera {
24
55
  readonly engine: Engine;
25
56
  readonly miris: Miris;
26
57
  readonly scene: Scene;
27
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
58
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
28
59
  }
29
60
 
30
61
  export declare type CameraInit = {
@@ -34,6 +65,7 @@ export declare type CameraInit = {
34
65
  far: number;
35
66
  matrix: Matrix4x4Tuple;
36
67
  scene: Scene;
68
+ viewportHeight?: number;
37
69
  };
38
70
 
39
71
  export declare class Change {
@@ -43,7 +75,7 @@ export declare class Change {
43
75
  }
44
76
 
45
77
  export declare type ChangeInit = {
46
- type: "created" | "activated" | "modified" | "deactivated" | "deleted";
78
+ type: "created" | "activated" | "modified" | "deactivated" | "deleted" | "remasked";
47
79
  lod: Lod;
48
80
  };
49
81
 
@@ -60,6 +92,7 @@ declare class Client {
60
92
  getAssetsAsync(...args: ClientMethodParameters["getAssetsAsync"]): AssetInfo[];
61
93
  getAttribute(...args: ClientMethodParameters["getAttribute"]): AquaStatus;
62
94
  getDefaultCameraId(...args: ClientMethodParameters["getDefaultCameraId"]): number;
95
+ getViewingVolumeId(...args: ClientMethodParameters["getViewingVolumeId"]): number;
63
96
  getLocalBoundingBox(...args: ClientMethodParameters["getLocalBoundingBox"]): AquaStatus;
64
97
  getWorldBoundingBox(...args: ClientMethodParameters["getWorldBoundingBox"]): AquaStatus;
65
98
  getLodIndex(...args: ClientMethodParameters["getLodIndex"]): number;
@@ -68,6 +101,7 @@ declare class Client {
68
101
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
69
102
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
70
103
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
104
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
71
105
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
72
106
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
73
107
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -83,6 +117,7 @@ declare class Client {
83
117
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
84
118
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
85
119
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
120
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
86
121
  getName(...args: ClientMethodParameters["getName"]): string;
87
122
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
88
123
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -90,7 +125,6 @@ declare class Client {
90
125
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
91
126
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
92
127
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
93
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
94
128
  }
95
129
 
96
130
  declare type ClientInit = {
@@ -140,6 +174,8 @@ declare class Engine {
140
174
  };
141
175
  static Feature: {
142
176
  readonly DrMap: 0;
177
+ readonly ReflMesh: 1;
178
+ readonly GlassMesh: 2;
143
179
  };
144
180
  static FeatureState: {
145
181
  readonly NotLoaded: 0;
@@ -187,6 +223,8 @@ declare class Engine {
187
223
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
188
224
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
189
225
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
226
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
227
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
190
228
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
191
229
  free(...args: [size: number]): number;
192
230
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -196,7 +234,8 @@ declare class Engine {
196
234
  attributeName: string,
197
235
  attributeInfo: AttributeInfo
198
236
  ]): AquaStatus;
199
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
237
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
238
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
200
239
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
201
240
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
202
241
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -245,19 +284,18 @@ declare class Engine {
245
284
  removeStream(...args: [handle: AquaClientHandle, streamObjectId: number]): boolean;
246
285
  setAssetViewerKey(...args: [handle: AquaClientHandle, key: string]): AquaStatus;
247
286
  setClientSpatialFormat(...args: [handle: AquaClientHandle, spatialFormat: SpatialFormat]): AquaStatus;
248
- setRuntimeSettings(...args: [
249
- handle: AquaClientHandle,
250
- settings: RuntimeSettings
251
- ]): AquaStatus;
287
+ setRuntimeSettings(...args: [handle: AquaClientHandle, settings: RuntimeSettings]): AquaStatus;
252
288
  setMainCameraTransform(...args: [handle: AquaClientHandle, cameraTransform: number]): AquaStatus;
253
289
  setMainCameraViewFrustum(...args: [
254
290
  handle: AquaClientHandle,
255
291
  aspectRatio: number,
256
292
  verticalFov: number,
257
293
  nearPlane: number,
258
- farPlane: number
294
+ farPlane: number,
295
+ viewportHeightPixels: number
259
296
  ]): AquaStatus;
260
297
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
298
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
261
299
  setSceneObjectTransform(...args: [
262
300
  handle: AquaClientHandle,
263
301
  sceneObjectId: number,
@@ -266,14 +304,9 @@ declare class Engine {
266
304
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
267
305
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
268
306
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
269
- getName(...args: [
270
- handle: AquaClientHandle,
271
- sceneObjectId: number
272
- ]): string;
273
- setVariantSelection(...args: [
274
- handle: AquaClientHandle,
275
- sceneObjectId: number
276
- ]): AquaStatus;
307
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
308
+ getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
309
+ setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
277
310
  takeAttribute(...args: [
278
311
  handle: AquaClientHandle,
279
312
  sceneObjectId: number,
@@ -284,8 +317,15 @@ declare class Engine {
284
317
  getActiveClientSideIdsCheckSum(): number;
285
318
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
286
319
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
287
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
288
320
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
321
+ /**
322
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
323
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
324
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
325
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
326
+ * one.
327
+ */
328
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
289
329
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
290
330
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
291
331
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -303,41 +343,46 @@ export declare class Lod {
303
343
  #private;
304
344
  readonly id: LodInit["id"];
305
345
  readonly store: LodStore;
306
- useExtSplats: boolean;
307
- splatsExtendedData: Uint32Array<ArrayBuffer> | null;
308
- sh1Data: Uint32Array<ArrayBuffer> | null;
309
- sh1Max: number;
310
- sh2Data: Uint32Array<ArrayBuffer> | null;
311
- sh2Max: number;
312
- sh3Data: Uint32Array<ArrayBuffer> | null;
313
- sh3Max: number;
314
- sh3ExtendedData: Uint32Array<ArrayBuffer> | null;
315
346
  get key(): unknown;
316
347
  set key(key: unknown);
317
348
  readonly modelRoot: ModelRoot;
318
- set splats(splats: Uint32Array<ArrayBuffer> | null);
319
- get splats(): Uint32Array<ArrayBuffer> | null;
320
349
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
350
+ /**
351
+ * Retrieves the cached world bounds of this object
352
+ *
353
+ * @deprecated Retrieve the local bounds and transform as needed
354
+ */
321
355
  get bounds(): Float32Array<ArrayBuffer> | null;
322
- /* Excluded from this release type: _boundsStreamSpace */
323
- /* Excluded from this release type: _boundsStreamSpace */
356
+ /**
357
+ * Sets the local bounds of this lod
358
+ */
359
+ set localBounds(bounds: Float32Array<ArrayBuffer> | null);
360
+ /**
361
+ * Retrieves the local bounds of this lod
362
+ */
363
+ get localBounds(): Float32Array<ArrayBuffer> | null;
324
364
  set lodIndex(index: number);
325
365
  get lodIndex(): number | null;
326
- set paddingCount(count: number);
327
- get paddingCount(): number;
366
+ set paddingSplatsCount(count: number);
367
+ get paddingSplatsCount(): number;
328
368
  set transform(transform: Float32Array<ArrayBuffer> | null);
329
369
  get transform(): Float32Array<ArrayBuffer> | null;
330
- setSh1(sh1Data: Uint32Array<ArrayBuffer>, sh1Max: number): void;
331
- setSh2(sh2Data: Uint32Array<ArrayBuffer>, sh2Max: number): void;
332
- setSh3(sh3Data: Uint32Array<ArrayBuffer>, sh3Max: number): void;
370
+ get _drawnOctantMask(): number;
371
+ set _drawnOctantMask(mask: number);
372
+ get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
373
+ get _hasOctantOffsets(): boolean;
374
+ _readOctantOffsets(engine: Engine): void;
375
+ hasAttribute(attributeName: string): boolean;
376
+ getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
333
377
  dispose(): void;
334
- constructor({ id, modelRoot, lodStore }: LodInit);
378
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
335
379
  }
336
380
 
337
381
  export declare type LodInit = {
338
382
  id: number;
339
383
  modelRoot: ModelRoot;
340
384
  lodStore: LodStore;
385
+ client: Client;
341
386
  };
342
387
 
343
388
  export declare class LodStore {
@@ -378,7 +423,9 @@ declare interface MainModule {
378
423
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
379
424
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
380
425
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
426
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
381
427
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
428
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
382
429
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
383
430
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
384
431
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -387,13 +434,16 @@ declare interface MainModule {
387
434
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
388
435
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
389
436
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
437
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
390
438
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
391
439
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
392
440
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
393
441
  GetActiveClientSideIdsCheckSum(): number;
394
442
  TakeRenderRequired(handle: number): boolean;
443
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
395
444
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
396
445
  setMaxCacheSize(maxSizeBytes: number): void;
446
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
397
447
  }
398
448
 
399
449
  /**
@@ -406,6 +456,7 @@ declare interface MainModule {
406
456
  */
407
457
  export declare class Miris {
408
458
  #private;
459
+ static tryUseShark: boolean;
409
460
  static _instance: Miris;
410
461
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
411
462
  readonly engine: Engine;
@@ -415,14 +466,28 @@ export declare class Miris {
415
466
  get viewerKey(): string | null | undefined;
416
467
  set viewerKey(viewerKey: string | null | undefined);
417
468
  get scenes(): Set<Scene>;
469
+ get useSphericalHarmonics(): boolean;
470
+ set useSphericalHarmonics(value: boolean);
418
471
  constructor();
419
472
  dispose(): void;
420
473
  updateParentedTransform(_modelTransform: Float32Array<ArrayBuffer>, _parentTransform: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer> | undefined;
474
+ protected _xrModeActive: boolean;
475
+ protected _xrSession: XRSession | null;
476
+ protected _requestAnimationFrame: RequestAnimationFrameFn | null;
477
+ signalResumeFromIdle(): void;
478
+ get _splatCountBudget(): number;
479
+ /**
480
+ * Why 43? Because the AVP throttles down to 45Hz :(
481
+ */
482
+ static readonly _XR_TARGET_FRAME_RATE = 43;
483
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
484
+ /* Excluded from this release type: _setTargetFrameRate */
421
485
  /* Excluded from this release type: _setXRModeActive */
486
+ /* Excluded from this release type: _setSplatCountBudgetOverride */
422
487
  /* Excluded from this release type: _update */
423
488
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
424
489
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
425
- update(): boolean;
490
+ /* Excluded from this release type: _updateForScene */
426
491
  applyChanges(_entries: Change[]): void;
427
492
  _computeAdditionalRenderNeeded(): boolean;
428
493
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -451,11 +516,14 @@ export declare type ModelRootInit = {
451
516
  stream: Stream;
452
517
  };
453
518
 
519
+ declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
520
+
454
521
  declare interface RuntimeSettings extends EmbindObject {
455
522
  maxBandwidthBitsPerSecond: number;
456
523
  maxConcurrentRequests: number;
457
524
  targetFramesPerSecond: number;
458
525
  xrModeActive: boolean;
526
+ splatCountBudget: number;
459
527
  }
460
528
 
461
529
  export declare class Scene extends EventTarget {
@@ -467,6 +535,7 @@ export declare class Scene extends EventTarget {
467
535
  readonly id: number;
468
536
  get key(): unknown;
469
537
  set key(key: unknown);
538
+ /* Excluded from this release type: _assetFormat */
470
539
  get viewerKey(): string | null;
471
540
  set viewerKey(viewerKey: string | null);
472
541
  get streams(): Set<Stream>;
@@ -476,6 +545,18 @@ export declare class Scene extends EventTarget {
476
545
  readonly client: Client;
477
546
  readonly handle?: number;
478
547
  constructor({ miris, viewerKey }: SceneInit);
548
+ /**
549
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
550
+ * displayed frame from the host's animation loop, and render when it returns true.
551
+ *
552
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
553
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
554
+ *
555
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
556
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
557
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
558
+ */
559
+ update(ts?: DOMHighResTimeStamp): boolean;
479
560
  dispose(): void;
480
561
  fetchAssets(tags?: string | Iterable<string>): Promise<{
481
562
  name: string;
@@ -483,11 +564,12 @@ export declare class Scene extends EventTarget {
483
564
  uuid: string;
484
565
  tags: string[];
485
566
  }[]>;
486
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
487
567
  add(stream: Stream): void;
488
568
  getStreamForId(streamObjectId: number): Stream | undefined;
489
569
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
490
570
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
571
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
572
+ /* Excluded from this release type: _getFeatureMesh */
491
573
  /* Excluded from this release type: _getDrMap */
492
574
  /* Excluded from this release type: _onFeatureData */
493
575
  /* Excluded from this release type: _onSceneLoaded */
@@ -501,6 +583,7 @@ declare interface SceneChangeIds extends EmbindObject {
501
583
  readonly modifiedObjectsCount: number;
502
584
  readonly deactivatedObjectsCount: number;
503
585
  readonly deletedObjectsCount: number;
586
+ readonly remaskedObjectsCount: number;
504
587
  }
505
588
 
506
589
  export declare type SceneInit = {
@@ -512,6 +595,13 @@ declare interface SceneMetadata extends EmbindObject {
512
595
  readonly inputColorSpace: string;
513
596
  }
514
597
 
598
+ declare type SparkAttributeInfo = {
599
+ elementsPerSplat: number;
600
+ discard: boolean;
601
+ };
602
+
603
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
604
+
515
605
  declare interface SpatialFormat extends EmbindObject {
516
606
  metersPerUnit: number;
517
607
  upAxis: number;
@@ -539,6 +629,8 @@ export declare class Stream extends EventTarget {
539
629
  set key(key: unknown);
540
630
  get matrix(): Matrix4x4Tuple;
541
631
  set matrix(matrix: Matrix4x4Tuple);
632
+ get opacity(): number;
633
+ set opacity(opacity: number);
542
634
  get boundingBox(): {
543
635
  min: {
544
636
  x: number;
@@ -569,6 +661,8 @@ export declare class Stream extends EventTarget {
569
661
  constructor(options: StreamInit);
570
662
  _initStream({ uuid }: StreamInit): void;
571
663
  /* Excluded from this release type: _onStreamLoaded */
664
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
665
+ /* Excluded from this release type: _getViewingVolumeObb */
572
666
  /* Excluded from this release type: _onRootLoaded */
573
667
  add(modelRoot: ModelRoot): void;
574
668
  end(): void;