@miris-inc/core 0.0.8-ed481dc → 0.0.8-eefe822

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
 
@@ -69,6 +96,7 @@ declare class Client {
69
96
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
70
97
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
71
98
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
99
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
72
100
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
73
101
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
74
102
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -91,7 +119,6 @@ declare class Client {
91
119
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
92
120
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
93
121
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
94
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
95
122
  }
96
123
 
97
124
  declare type ClientInit = {
@@ -190,6 +217,8 @@ declare class Engine {
190
217
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
191
218
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
192
219
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
220
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
221
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
193
222
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
194
223
  free(...args: [size: number]): number;
195
224
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -199,8 +228,8 @@ declare class Engine {
199
228
  attributeName: string,
200
229
  attributeInfo: AttributeInfo
201
230
  ]): AquaStatus;
202
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
203
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
231
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
232
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
204
233
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
205
234
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
206
235
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -256,9 +285,11 @@ declare class Engine {
256
285
  aspectRatio: number,
257
286
  verticalFov: number,
258
287
  nearPlane: number,
259
- farPlane: number
288
+ farPlane: number,
289
+ viewportHeightPixels: number
260
290
  ]): AquaStatus;
261
291
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
292
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
262
293
  setSceneObjectTransform(...args: [
263
294
  handle: AquaClientHandle,
264
295
  sceneObjectId: number,
@@ -279,8 +310,15 @@ declare class Engine {
279
310
  getActiveClientSideIdsCheckSum(): number;
280
311
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
281
312
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
282
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
283
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;
284
322
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
285
323
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
286
324
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -298,25 +336,9 @@ export declare class Lod {
298
336
  #private;
299
337
  readonly id: LodInit["id"];
300
338
  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
339
  get key(): unknown;
311
340
  set key(key: unknown);
312
341
  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
342
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
321
343
  /**
322
344
  * Retrieves the cached world bounds of this object
@@ -334,21 +356,26 @@ export declare class Lod {
334
356
  get localBounds(): Float32Array<ArrayBuffer> | null;
335
357
  set lodIndex(index: number);
336
358
  get lodIndex(): number | null;
337
- set paddingCount(count: number);
338
- get paddingCount(): number;
359
+ set paddingSplatsCount(count: number);
360
+ get paddingSplatsCount(): number;
339
361
  set transform(transform: Float32Array<ArrayBuffer> | null);
340
362
  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;
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;
344
370
  dispose(): void;
345
- constructor({ id, modelRoot, lodStore }: LodInit);
371
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
346
372
  }
347
373
 
348
374
  export declare type LodInit = {
349
375
  id: number;
350
376
  modelRoot: ModelRoot;
351
377
  lodStore: LodStore;
378
+ client: Client;
352
379
  };
353
380
 
354
381
  export declare class LodStore {
@@ -389,7 +416,9 @@ declare interface MainModule {
389
416
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
390
417
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
391
418
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
419
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
392
420
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
421
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
393
422
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
394
423
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
395
424
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -403,8 +432,10 @@ declare interface MainModule {
403
432
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
404
433
  GetActiveClientSideIdsCheckSum(): number;
405
434
  TakeRenderRequired(handle: number): boolean;
435
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
406
436
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
407
437
  setMaxCacheSize(maxSizeBytes: number): void;
438
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
408
439
  }
409
440
 
410
441
  /**
@@ -417,6 +448,7 @@ declare interface MainModule {
417
448
  */
418
449
  export declare class Miris {
419
450
  #private;
451
+ static tryUseShark: boolean;
420
452
  static _instance: Miris;
421
453
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
422
454
  readonly engine: Engine;
@@ -435,17 +467,19 @@ export declare class Miris {
435
467
  protected _xrSession: XRSession | null;
436
468
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
437
469
  signalResumeFromIdle(): void;
470
+ get _splatCountBudget(): number;
438
471
  /**
439
472
  * Why 43? Because the AVP throttles down to 45Hz :(
440
473
  */
441
474
  static readonly _XR_TARGET_FRAME_RATE = 43;
475
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
442
476
  /* Excluded from this release type: _setTargetFrameRate */
443
477
  /* Excluded from this release type: _setXRModeActive */
444
478
  /* Excluded from this release type: _setSplatCountBudgetOverride */
445
479
  /* Excluded from this release type: _update */
446
480
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
447
481
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
448
- update(): boolean;
482
+ /* Excluded from this release type: _updateForScene */
449
483
  applyChanges(_entries: Change[]): void;
450
484
  _computeAdditionalRenderNeeded(): boolean;
451
485
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -502,15 +536,25 @@ export declare class Scene extends EventTarget {
502
536
  readonly client: Client;
503
537
  readonly handle?: number;
504
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;
505
551
  dispose(): void;
506
- /* Excluded from this release type: _getViewingVolumeBounds */
507
552
  fetchAssets(tags?: string | Iterable<string>): Promise<{
508
553
  name: string;
509
554
  thumbnailUrl: string;
510
555
  uuid: string;
511
556
  tags: string[];
512
557
  }[]>;
513
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
514
558
  add(stream: Stream): void;
515
559
  getStreamForId(streamObjectId: number): Stream | undefined;
516
560
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
@@ -529,6 +573,7 @@ declare interface SceneChangeIds extends EmbindObject {
529
573
  readonly modifiedObjectsCount: number;
530
574
  readonly deactivatedObjectsCount: number;
531
575
  readonly deletedObjectsCount: number;
576
+ readonly remaskedObjectsCount: number;
532
577
  }
533
578
 
534
579
  export declare type SceneInit = {
@@ -540,6 +585,13 @@ declare interface SceneMetadata extends EmbindObject {
540
585
  readonly inputColorSpace: string;
541
586
  }
542
587
 
588
+ declare type SparkAttributeInfo = {
589
+ elementsPerSplat: number;
590
+ discard: boolean;
591
+ };
592
+
593
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
594
+
543
595
  declare interface SpatialFormat extends EmbindObject {
544
596
  metersPerUnit: number;
545
597
  upAxis: number;
@@ -567,6 +619,8 @@ export declare class Stream extends EventTarget {
567
619
  set key(key: unknown);
568
620
  get matrix(): Matrix4x4Tuple;
569
621
  set matrix(matrix: Matrix4x4Tuple);
622
+ get opacity(): number;
623
+ set opacity(opacity: number);
570
624
  get boundingBox(): {
571
625
  min: {
572
626
  x: number;
@@ -597,6 +651,8 @@ export declare class Stream extends EventTarget {
597
651
  constructor(options: StreamInit);
598
652
  _initStream({ uuid }: StreamInit): void;
599
653
  /* Excluded from this release type: _onStreamLoaded */
654
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
655
+ /* Excluded from this release type: _getViewingVolumeObb */
600
656
  /* Excluded from this release type: _onRootLoaded */
601
657
  add(modelRoot: ModelRoot): void;
602
658
  end(): void;