@miris-inc/core 0.0.8-e6a94a6 → 0.0.8-e755f30

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,15 @@
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
 
@@ -20,8 +26,16 @@ export declare class AttributeNames {
20
26
  static readonly SPARK_EXTENDED_SH3_B: string;
21
27
  static readonly UNUSED: string;
22
28
  static readonly SHARK_ELLIPSOIDS: string;
29
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
23
30
  static readonly SHARK_SPHERICAL_HARMONICS: string;
31
+ static readonly COLOR: string;
24
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;
25
39
  }
26
40
 
27
41
  declare type CachedAttribute = {
@@ -33,6 +47,8 @@ export declare class Camera {
33
47
  #private;
34
48
  readonly id: number;
35
49
  update(): void;
50
+ get viewportHeight(): number;
51
+ set viewportHeight(viewportHeight: number);
36
52
  get aspect(): number;
37
53
  set aspect(aspect: number);
38
54
  get fov(): number;
@@ -46,7 +62,7 @@ export declare class Camera {
46
62
  readonly engine: Engine;
47
63
  readonly miris: Miris;
48
64
  readonly scene: Scene;
49
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
65
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
50
66
  }
51
67
 
52
68
  export declare type CameraInit = {
@@ -56,6 +72,7 @@ export declare type CameraInit = {
56
72
  far: number;
57
73
  matrix: Matrix4x4Tuple;
58
74
  scene: Scene;
75
+ viewportHeight?: number;
59
76
  };
60
77
 
61
78
  export declare class Change {
@@ -107,6 +124,8 @@ declare class Client {
107
124
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
108
125
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
109
126
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
127
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
128
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
110
129
  getName(...args: ClientMethodParameters["getName"]): string;
111
130
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
112
131
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -114,7 +133,6 @@ declare class Client {
114
133
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
115
134
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
116
135
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
117
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
118
136
  }
119
137
 
120
138
  declare type ClientInit = {
@@ -224,8 +242,8 @@ declare class Engine {
224
242
  attributeName: string,
225
243
  attributeInfo: AttributeInfo
226
244
  ]): AquaStatus;
227
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
228
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
245
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
246
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
229
247
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
230
248
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
231
249
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -281,9 +299,11 @@ declare class Engine {
281
299
  aspectRatio: number,
282
300
  verticalFov: number,
283
301
  nearPlane: number,
284
- farPlane: number
302
+ farPlane: number,
303
+ viewportHeightPixels: number
285
304
  ]): AquaStatus;
286
305
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
306
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
287
307
  setSceneObjectTransform(...args: [
288
308
  handle: AquaClientHandle,
289
309
  sceneObjectId: number,
@@ -292,6 +312,8 @@ declare class Engine {
292
312
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
293
313
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
294
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;
295
317
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
296
318
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
297
319
  takeAttribute(...args: [
@@ -304,8 +326,15 @@ declare class Engine {
304
326
  getActiveClientSideIdsCheckSum(): number;
305
327
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
306
328
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
307
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
308
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;
309
338
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
310
339
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
311
340
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -351,9 +380,13 @@ export declare class Lod {
351
380
  set _drawnOctantMask(mask: number);
352
381
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
353
382
  get _hasOctantOffsets(): boolean;
383
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
384
+ get _surfelCount(): number;
354
385
  _readOctantOffsets(engine: Engine): void;
355
386
  hasAttribute(attributeName: string): boolean;
356
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;
357
390
  dispose(): void;
358
391
  constructor({ id, modelRoot, lodStore, client }: LodInit);
359
392
  }
@@ -414,13 +447,17 @@ declare interface MainModule {
414
447
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
415
448
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
416
449
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
450
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
451
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
417
452
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
418
453
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
419
454
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
420
455
  GetActiveClientSideIdsCheckSum(): number;
421
456
  TakeRenderRequired(handle: number): boolean;
457
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
422
458
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
423
459
  setMaxCacheSize(maxSizeBytes: number): void;
460
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
424
461
  }
425
462
 
426
463
  /**
@@ -452,17 +489,26 @@ export declare class Miris {
452
489
  protected _xrSession: XRSession | null;
453
490
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
454
491
  signalResumeFromIdle(): void;
492
+ get _splatCountBudget(): number;
455
493
  /**
456
494
  * Why 43? Because the AVP throttles down to 45Hz :(
457
495
  */
458
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 */
459
505
  /* Excluded from this release type: _setTargetFrameRate */
460
506
  /* Excluded from this release type: _setXRModeActive */
461
507
  /* Excluded from this release type: _setSplatCountBudgetOverride */
462
508
  /* Excluded from this release type: _update */
463
509
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
464
510
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
465
- update(): boolean;
511
+ /* Excluded from this release type: _updateForScene */
466
512
  applyChanges(_entries: Change[]): void;
467
513
  _computeAdditionalRenderNeeded(): boolean;
468
514
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -491,6 +537,28 @@ export declare type ModelRootInit = {
491
537
  stream: Stream;
492
538
  };
493
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
+
494
562
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
495
563
 
496
564
  declare interface RuntimeSettings extends EmbindObject {
@@ -499,6 +567,7 @@ declare interface RuntimeSettings extends EmbindObject {
499
567
  targetFramesPerSecond: number;
500
568
  xrModeActive: boolean;
501
569
  splatCountBudget: number;
570
+ splatCountBudgetCap: number;
502
571
  }
503
572
 
504
573
  export declare class Scene extends EventTarget {
@@ -510,6 +579,7 @@ export declare class Scene extends EventTarget {
510
579
  readonly id: number;
511
580
  get key(): unknown;
512
581
  set key(key: unknown);
582
+ /* Excluded from this release type: _assetFormat */
513
583
  get viewerKey(): string | null;
514
584
  set viewerKey(viewerKey: string | null);
515
585
  get streams(): Set<Stream>;
@@ -519,21 +589,33 @@ export declare class Scene extends EventTarget {
519
589
  readonly client: Client;
520
590
  readonly handle?: number;
521
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;
522
604
  dispose(): void;
523
- /* Excluded from this release type: _getViewingVolumeObb */
524
605
  fetchAssets(tags?: string | Iterable<string>): Promise<{
525
606
  name: string;
526
607
  thumbnailUrl: string;
527
608
  uuid: string;
528
609
  tags: string[];
529
610
  }[]>;
530
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
531
611
  add(stream: Stream): void;
532
612
  getStreamForId(streamObjectId: number): Stream | undefined;
533
613
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
534
614
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
615
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
535
616
  /* Excluded from this release type: _getFeatureMesh */
536
617
  /* Excluded from this release type: _getDrMap */
618
+ /* Excluded from this release type: _onDrMapLadder */
537
619
  /* Excluded from this release type: _onFeatureData */
538
620
  /* Excluded from this release type: _onSceneLoaded */
539
621
  delete(stream: Stream): void;
@@ -624,6 +706,8 @@ export declare class Stream extends EventTarget {
624
706
  constructor(options: StreamInit);
625
707
  _initStream({ uuid }: StreamInit): void;
626
708
  /* Excluded from this release type: _onStreamLoaded */
709
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
710
+ /* Excluded from this release type: _getViewingVolumeObb */
627
711
  /* Excluded from this release type: _onRootLoaded */
628
712
  add(modelRoot: ModelRoot): void;
629
713
  end(): void;