@miris-inc/core 0.0.8-8025466 → 0.0.8-80eca3b

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
@@ -7,10 +7,36 @@ declare interface AttributeInfo extends EmbindObject {
7
7
  readonly maxValue: { x: number; y: number; z: number };
8
8
  }
9
9
 
10
+ export declare class AttributeNames {
11
+ static readonly SPARK_PACKED_SPLAT: string;
12
+ static readonly SPARK_EXTENDED_SPLAT_LOW: string;
13
+ static readonly SPARK_EXTENDED_SPLAT_HIGH: string;
14
+ static readonly SPARK_PACKED_SH1: string;
15
+ static readonly SPARK_PACKED_SH2: string;
16
+ static readonly SPARK_PACKED_SH3: string;
17
+ static readonly SPARK_EXTENDED_SH1: string;
18
+ static readonly SPARK_EXTENDED_SH2: string;
19
+ static readonly SPARK_EXTENDED_SH3_A: string;
20
+ static readonly SPARK_EXTENDED_SH3_B: string;
21
+ static readonly UNUSED: string;
22
+ static readonly SHARK_ELLIPSOIDS: string;
23
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
24
+ static readonly SHARK_SPHERICAL_HARMONICS: string;
25
+ static readonly COLOR: string;
26
+ static readonly OCTANT_OFFSETS: string;
27
+ }
28
+
29
+ declare type CachedAttribute = {
30
+ paddedData: Uint32Array<ArrayBuffer>;
31
+ originalSizeInUints: number;
32
+ };
33
+
10
34
  export declare class Camera {
11
35
  #private;
12
36
  readonly id: number;
13
37
  update(): void;
38
+ get viewportHeight(): number;
39
+ set viewportHeight(viewportHeight: number);
14
40
  get aspect(): number;
15
41
  set aspect(aspect: number);
16
42
  get fov(): number;
@@ -24,7 +50,7 @@ export declare class Camera {
24
50
  readonly engine: Engine;
25
51
  readonly miris: Miris;
26
52
  readonly scene: Scene;
27
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
53
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
28
54
  }
29
55
 
30
56
  export declare type CameraInit = {
@@ -34,6 +60,7 @@ export declare type CameraInit = {
34
60
  far: number;
35
61
  matrix: Matrix4x4Tuple;
36
62
  scene: Scene;
63
+ viewportHeight?: number;
37
64
  };
38
65
 
39
66
  export declare class Change {
@@ -43,7 +70,7 @@ export declare class Change {
43
70
  }
44
71
 
45
72
  export declare type ChangeInit = {
46
- type: "created" | "activated" | "modified" | "deactivated" | "deleted";
73
+ type: "created" | "activated" | "modified" | "deactivated" | "deleted" | "remasked";
47
74
  lod: Lod;
48
75
  };
49
76
 
@@ -60,6 +87,7 @@ declare class Client {
60
87
  getAssetsAsync(...args: ClientMethodParameters["getAssetsAsync"]): AssetInfo[];
61
88
  getAttribute(...args: ClientMethodParameters["getAttribute"]): AquaStatus;
62
89
  getDefaultCameraId(...args: ClientMethodParameters["getDefaultCameraId"]): number;
90
+ getViewingVolumeId(...args: ClientMethodParameters["getViewingVolumeId"]): number;
63
91
  getLocalBoundingBox(...args: ClientMethodParameters["getLocalBoundingBox"]): AquaStatus;
64
92
  getWorldBoundingBox(...args: ClientMethodParameters["getWorldBoundingBox"]): AquaStatus;
65
93
  getLodIndex(...args: ClientMethodParameters["getLodIndex"]): number;
@@ -68,6 +96,7 @@ declare class Client {
68
96
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
69
97
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
70
98
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
99
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
71
100
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
72
101
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
73
102
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -90,7 +119,6 @@ declare class Client {
90
119
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
91
120
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
92
121
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
93
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
94
122
  }
95
123
 
96
124
  declare type ClientInit = {
@@ -140,6 +168,8 @@ declare class Engine {
140
168
  };
141
169
  static Feature: {
142
170
  readonly DrMap: 0;
171
+ readonly ReflMesh: 1;
172
+ readonly GlassMesh: 2;
143
173
  };
144
174
  static FeatureState: {
145
175
  readonly NotLoaded: 0;
@@ -187,6 +217,8 @@ declare class Engine {
187
217
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
188
218
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
189
219
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
220
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
221
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
190
222
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
191
223
  free(...args: [size: number]): number;
192
224
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -196,7 +228,8 @@ declare class Engine {
196
228
  attributeName: string,
197
229
  attributeInfo: AttributeInfo
198
230
  ]): AquaStatus;
199
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
231
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
232
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
200
233
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
201
234
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
202
235
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -245,19 +278,18 @@ declare class Engine {
245
278
  removeStream(...args: [handle: AquaClientHandle, streamObjectId: number]): boolean;
246
279
  setAssetViewerKey(...args: [handle: AquaClientHandle, key: string]): AquaStatus;
247
280
  setClientSpatialFormat(...args: [handle: AquaClientHandle, spatialFormat: SpatialFormat]): AquaStatus;
248
- setRuntimeSettings(...args: [
249
- handle: AquaClientHandle,
250
- settings: RuntimeSettings
251
- ]): AquaStatus;
281
+ setRuntimeSettings(...args: [handle: AquaClientHandle, settings: RuntimeSettings]): AquaStatus;
252
282
  setMainCameraTransform(...args: [handle: AquaClientHandle, cameraTransform: number]): AquaStatus;
253
283
  setMainCameraViewFrustum(...args: [
254
284
  handle: AquaClientHandle,
255
285
  aspectRatio: number,
256
286
  verticalFov: number,
257
287
  nearPlane: number,
258
- farPlane: number
288
+ farPlane: number,
289
+ viewportHeightPixels: number
259
290
  ]): AquaStatus;
260
291
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
292
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
261
293
  setSceneObjectTransform(...args: [
262
294
  handle: AquaClientHandle,
263
295
  sceneObjectId: number,
@@ -266,14 +298,8 @@ declare class Engine {
266
298
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
267
299
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
268
300
  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;
301
+ getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
302
+ setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
277
303
  takeAttribute(...args: [
278
304
  handle: AquaClientHandle,
279
305
  sceneObjectId: number,
@@ -284,8 +310,15 @@ declare class Engine {
284
310
  getActiveClientSideIdsCheckSum(): number;
285
311
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
286
312
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
287
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
288
313
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
314
+ /**
315
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
316
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
317
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
318
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
319
+ * one.
320
+ */
321
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
289
322
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
290
323
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
291
324
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -303,41 +336,46 @@ export declare class Lod {
303
336
  #private;
304
337
  readonly id: LodInit["id"];
305
338
  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
339
  get key(): unknown;
316
340
  set key(key: unknown);
317
341
  readonly modelRoot: ModelRoot;
318
- set splats(splats: Uint32Array<ArrayBuffer> | null);
319
- get splats(): Uint32Array<ArrayBuffer> | null;
320
342
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
343
+ /**
344
+ * Retrieves the cached world bounds of this object
345
+ *
346
+ * @deprecated Retrieve the local bounds and transform as needed
347
+ */
321
348
  get bounds(): Float32Array<ArrayBuffer> | null;
322
- /* Excluded from this release type: _boundsStreamSpace */
323
- /* Excluded from this release type: _boundsStreamSpace */
349
+ /**
350
+ * Sets the local bounds of this lod
351
+ */
352
+ set localBounds(bounds: Float32Array<ArrayBuffer> | null);
353
+ /**
354
+ * Retrieves the local bounds of this lod
355
+ */
356
+ get localBounds(): Float32Array<ArrayBuffer> | null;
324
357
  set lodIndex(index: number);
325
358
  get lodIndex(): number | null;
326
- set paddingCount(count: number);
327
- get paddingCount(): number;
359
+ set paddingSplatsCount(count: number);
360
+ get paddingSplatsCount(): number;
328
361
  set transform(transform: Float32Array<ArrayBuffer> | null);
329
362
  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;
363
+ get _drawnOctantMask(): number;
364
+ set _drawnOctantMask(mask: number);
365
+ get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
366
+ get _hasOctantOffsets(): boolean;
367
+ _readOctantOffsets(engine: Engine): void;
368
+ hasAttribute(attributeName: string): boolean;
369
+ getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
333
370
  dispose(): void;
334
- constructor({ id, modelRoot, lodStore }: LodInit);
371
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
335
372
  }
336
373
 
337
374
  export declare type LodInit = {
338
375
  id: number;
339
376
  modelRoot: ModelRoot;
340
377
  lodStore: LodStore;
378
+ client: Client;
341
379
  };
342
380
 
343
381
  export declare class LodStore {
@@ -378,7 +416,9 @@ declare interface MainModule {
378
416
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
379
417
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
380
418
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
419
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
381
420
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
421
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
382
422
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
383
423
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
384
424
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -392,8 +432,10 @@ declare interface MainModule {
392
432
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
393
433
  GetActiveClientSideIdsCheckSum(): number;
394
434
  TakeRenderRequired(handle: number): boolean;
435
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
395
436
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
396
437
  setMaxCacheSize(maxSizeBytes: number): void;
438
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
397
439
  }
398
440
 
399
441
  /**
@@ -406,6 +448,7 @@ declare interface MainModule {
406
448
  */
407
449
  export declare class Miris {
408
450
  #private;
451
+ static tryUseShark: boolean;
409
452
  static _instance: Miris;
410
453
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
411
454
  readonly engine: Engine;
@@ -415,14 +458,28 @@ export declare class Miris {
415
458
  get viewerKey(): string | null | undefined;
416
459
  set viewerKey(viewerKey: string | null | undefined);
417
460
  get scenes(): Set<Scene>;
461
+ get useSphericalHarmonics(): boolean;
462
+ set useSphericalHarmonics(value: boolean);
418
463
  constructor();
419
464
  dispose(): void;
420
465
  updateParentedTransform(_modelTransform: Float32Array<ArrayBuffer>, _parentTransform: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer> | undefined;
466
+ protected _xrModeActive: boolean;
467
+ protected _xrSession: XRSession | null;
468
+ protected _requestAnimationFrame: RequestAnimationFrameFn | null;
469
+ signalResumeFromIdle(): void;
470
+ get _splatCountBudget(): number;
471
+ /**
472
+ * Why 43? Because the AVP throttles down to 45Hz :(
473
+ */
474
+ static readonly _XR_TARGET_FRAME_RATE = 43;
475
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
476
+ /* Excluded from this release type: _setTargetFrameRate */
421
477
  /* Excluded from this release type: _setXRModeActive */
478
+ /* Excluded from this release type: _setSplatCountBudgetOverride */
422
479
  /* Excluded from this release type: _update */
423
480
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
424
481
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
425
- update(): boolean;
482
+ /* Excluded from this release type: _updateForScene */
426
483
  applyChanges(_entries: Change[]): void;
427
484
  _computeAdditionalRenderNeeded(): boolean;
428
485
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -451,11 +508,14 @@ export declare type ModelRootInit = {
451
508
  stream: Stream;
452
509
  };
453
510
 
511
+ declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
512
+
454
513
  declare interface RuntimeSettings extends EmbindObject {
455
514
  maxBandwidthBitsPerSecond: number;
456
515
  maxConcurrentRequests: number;
457
516
  targetFramesPerSecond: number;
458
517
  xrModeActive: boolean;
518
+ splatCountBudget: number;
459
519
  }
460
520
 
461
521
  export declare class Scene extends EventTarget {
@@ -476,6 +536,18 @@ export declare class Scene extends EventTarget {
476
536
  readonly client: Client;
477
537
  readonly handle?: number;
478
538
  constructor({ miris, viewerKey }: SceneInit);
539
+ /**
540
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
541
+ * displayed frame from the host's animation loop, and render when it returns true.
542
+ *
543
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
544
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
545
+ *
546
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
547
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
548
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
549
+ */
550
+ update(ts?: DOMHighResTimeStamp): boolean;
479
551
  dispose(): void;
480
552
  fetchAssets(tags?: string | Iterable<string>): Promise<{
481
553
  name: string;
@@ -483,11 +555,11 @@ export declare class Scene extends EventTarget {
483
555
  uuid: string;
484
556
  tags: string[];
485
557
  }[]>;
486
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
487
558
  add(stream: Stream): void;
488
559
  getStreamForId(streamObjectId: number): Stream | undefined;
489
560
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
490
561
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
562
+ /* Excluded from this release type: _getFeatureMesh */
491
563
  /* Excluded from this release type: _getDrMap */
492
564
  /* Excluded from this release type: _onFeatureData */
493
565
  /* Excluded from this release type: _onSceneLoaded */
@@ -501,6 +573,7 @@ declare interface SceneChangeIds extends EmbindObject {
501
573
  readonly modifiedObjectsCount: number;
502
574
  readonly deactivatedObjectsCount: number;
503
575
  readonly deletedObjectsCount: number;
576
+ readonly remaskedObjectsCount: number;
504
577
  }
505
578
 
506
579
  export declare type SceneInit = {
@@ -512,6 +585,13 @@ declare interface SceneMetadata extends EmbindObject {
512
585
  readonly inputColorSpace: string;
513
586
  }
514
587
 
588
+ declare type SparkAttributeInfo = {
589
+ elementsPerSplat: number;
590
+ discard: boolean;
591
+ };
592
+
593
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
594
+
515
595
  declare interface SpatialFormat extends EmbindObject {
516
596
  metersPerUnit: number;
517
597
  upAxis: number;
@@ -539,6 +619,8 @@ export declare class Stream extends EventTarget {
539
619
  set key(key: unknown);
540
620
  get matrix(): Matrix4x4Tuple;
541
621
  set matrix(matrix: Matrix4x4Tuple);
622
+ get opacity(): number;
623
+ set opacity(opacity: number);
542
624
  get boundingBox(): {
543
625
  min: {
544
626
  x: number;
@@ -569,6 +651,8 @@ export declare class Stream extends EventTarget {
569
651
  constructor(options: StreamInit);
570
652
  _initStream({ uuid }: StreamInit): void;
571
653
  /* Excluded from this release type: _onStreamLoaded */
654
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
655
+ /* Excluded from this release type: _getViewingVolumeObb */
572
656
  /* Excluded from this release type: _onRootLoaded */
573
657
  add(modelRoot: ModelRoot): void;
574
658
  end(): void;