@miris-inc/core 0.0.8-a97ec5e → 0.0.8-a997939

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,17 @@
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
+ // An embind CompressionType value, compared by identity against MainModule.CompressionType
13
+ readonly compressionType: unknown;
14
+ readonly minValue: { x: number; y: number; z: number; w: number };
7
15
  readonly maxValue: { x: number; y: number; z: number };
8
16
  }
9
17
 
@@ -20,8 +28,16 @@ export declare class AttributeNames {
20
28
  static readonly SPARK_EXTENDED_SH3_B: string;
21
29
  static readonly UNUSED: string;
22
30
  static readonly SHARK_ELLIPSOIDS: string;
31
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
23
32
  static readonly SHARK_SPHERICAL_HARMONICS: string;
33
+ static readonly COLOR: string;
24
34
  static readonly OCTANT_OFFSETS: string;
35
+ static readonly SURFEL_OCTANT_OFFSETS: string;
36
+ static readonly SURFEL_COUNT: string;
37
+ static readonly REFLECTANCE_DATA_V1: string;
38
+ static readonly GLASS_MESH_GEOMETRY: string;
39
+ static readonly GLASS_MESH_PANELS: string;
40
+ static readonly MOD_DEPTH: string;
25
41
  }
26
42
 
27
43
  declare type CachedAttribute = {
@@ -33,6 +49,8 @@ export declare class Camera {
33
49
  #private;
34
50
  readonly id: number;
35
51
  update(): void;
52
+ get viewportHeight(): number;
53
+ set viewportHeight(viewportHeight: number);
36
54
  get aspect(): number;
37
55
  set aspect(aspect: number);
38
56
  get fov(): number;
@@ -46,7 +64,7 @@ export declare class Camera {
46
64
  readonly engine: Engine;
47
65
  readonly miris: Miris;
48
66
  readonly scene: Scene;
49
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
67
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
50
68
  }
51
69
 
52
70
  export declare type CameraInit = {
@@ -56,6 +74,7 @@ export declare type CameraInit = {
56
74
  far: number;
57
75
  matrix: Matrix4x4Tuple;
58
76
  scene: Scene;
77
+ viewportHeight?: number;
59
78
  };
60
79
 
61
80
  export declare class Change {
@@ -107,6 +126,8 @@ declare class Client {
107
126
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
108
127
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
109
128
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
129
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
130
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
110
131
  getName(...args: ClientMethodParameters["getName"]): string;
111
132
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
112
133
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -114,7 +135,6 @@ declare class Client {
114
135
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
115
136
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
116
137
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
117
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
118
138
  }
119
139
 
120
140
  declare type ClientInit = {
@@ -178,6 +198,10 @@ declare class Engine {
178
198
  get module(): MainModule;
179
199
  constructor(moduleOptions?: Record<string, unknown>);
180
200
  get AttributeInfo(): new () => AttributeInfo;
201
+ get CompressionType(): {
202
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
203
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
204
+ };
181
205
  get Handedness(): {
182
206
  Right: number;
183
207
  Left: number;
@@ -224,8 +248,8 @@ declare class Engine {
224
248
  attributeName: string,
225
249
  attributeInfo: AttributeInfo
226
250
  ]): AquaStatus;
227
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
228
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
251
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
252
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
229
253
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
230
254
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
231
255
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -281,9 +305,11 @@ declare class Engine {
281
305
  aspectRatio: number,
282
306
  verticalFov: number,
283
307
  nearPlane: number,
284
- farPlane: number
308
+ farPlane: number,
309
+ viewportHeightPixels: number
285
310
  ]): AquaStatus;
286
311
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
312
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
287
313
  setSceneObjectTransform(...args: [
288
314
  handle: AquaClientHandle,
289
315
  sceneObjectId: number,
@@ -292,6 +318,8 @@ declare class Engine {
292
318
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
293
319
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
294
320
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
321
+ getDrMapLadderRoughnessLevels(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
322
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
295
323
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
296
324
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
297
325
  takeAttribute(...args: [
@@ -304,8 +332,15 @@ declare class Engine {
304
332
  getActiveClientSideIdsCheckSum(): number;
305
333
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
306
334
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
307
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
308
335
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
336
+ /**
337
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
338
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
339
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
340
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
341
+ * one.
342
+ */
343
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
309
344
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
310
345
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
311
346
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -351,9 +386,13 @@ export declare class Lod {
351
386
  set _drawnOctantMask(mask: number);
352
387
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
353
388
  get _hasOctantOffsets(): boolean;
389
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
390
+ get _surfelCount(): number;
354
391
  _readOctantOffsets(engine: Engine): void;
355
392
  hasAttribute(attributeName: string): boolean;
356
393
  getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
394
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
395
+ _getRawByteAttributeWithBounds(engine: Engine, attributeName: string): RawByteAttributeWithBounds | null;
357
396
  dispose(): void;
358
397
  constructor({ id, modelRoot, lodStore, client }: LodInit);
359
398
  }
@@ -378,6 +417,10 @@ export declare class LodStore {
378
417
 
379
418
  declare interface MainModule {
380
419
  AttributeInfo: new () => AttributeInfo;
420
+ CompressionType: {
421
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
422
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
423
+ };
381
424
  Handedness: { Right: number; Left: number };
382
425
  HEAPF32: Float32Array<ArrayBuffer>;
383
426
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -414,13 +457,17 @@ declare interface MainModule {
414
457
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
415
458
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
416
459
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
460
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
461
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
417
462
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
418
463
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
419
464
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
420
465
  GetActiveClientSideIdsCheckSum(): number;
421
466
  TakeRenderRequired(handle: number): boolean;
467
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
422
468
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
423
469
  setMaxCacheSize(maxSizeBytes: number): void;
470
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
424
471
  }
425
472
 
426
473
  /**
@@ -452,17 +499,26 @@ export declare class Miris {
452
499
  protected _xrSession: XRSession | null;
453
500
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
454
501
  signalResumeFromIdle(): void;
502
+ get _splatCountBudget(): number;
455
503
  /**
456
504
  * Why 43? Because the AVP throttles down to 45Hz :(
457
505
  */
458
506
  static readonly _XR_TARGET_FRAME_RATE = 43;
507
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
508
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
509
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP = 3000000;
510
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
511
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2500000;
512
+ /* Excluded from this release type: _isMobileDevice */
513
+ /* Excluded from this release type: _sharkSplatCapacity */
514
+ /* Excluded from this release type: _sharkSplatBudgetCap */
459
515
  /* Excluded from this release type: _setTargetFrameRate */
460
516
  /* Excluded from this release type: _setXRModeActive */
461
517
  /* Excluded from this release type: _setSplatCountBudgetOverride */
462
518
  /* Excluded from this release type: _update */
463
519
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
464
520
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
465
- update(): boolean;
521
+ /* Excluded from this release type: _updateForScene */
466
522
  applyChanges(_entries: Change[]): void;
467
523
  _computeAdditionalRenderNeeded(): boolean;
468
524
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -491,6 +547,28 @@ export declare type ModelRootInit = {
491
547
  stream: Stream;
492
548
  };
493
549
 
550
+ /**
551
+ * The byte-exact counterpart of getRawUint32Attribute above: same no-padding, no-takeAttribute
552
+ * contract, returning bytes rather than words.
553
+ *
554
+ * Use this rather than that one wherever the stride is not a whole number of words:
555
+ * reflectanceDataV1's 26-byte record is not, and an odd record count would lose that record's
556
+ * last field to dataPtrView's truncation.
557
+ */
558
+ export declare type RawByteAttributeWithBounds = {
559
+ bytes: Uint8Array<ArrayBuffer>;
560
+ minValue: {
561
+ x: number;
562
+ y: number;
563
+ z: number;
564
+ };
565
+ maxValue: {
566
+ x: number;
567
+ y: number;
568
+ z: number;
569
+ };
570
+ };
571
+
494
572
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
495
573
 
496
574
  declare interface RuntimeSettings extends EmbindObject {
@@ -499,6 +577,7 @@ declare interface RuntimeSettings extends EmbindObject {
499
577
  targetFramesPerSecond: number;
500
578
  xrModeActive: boolean;
501
579
  splatCountBudget: number;
580
+ splatCountBudgetCap: number;
502
581
  }
503
582
 
504
583
  export declare class Scene extends EventTarget {
@@ -510,6 +589,7 @@ export declare class Scene extends EventTarget {
510
589
  readonly id: number;
511
590
  get key(): unknown;
512
591
  set key(key: unknown);
592
+ /* Excluded from this release type: _assetFormat */
513
593
  get viewerKey(): string | null;
514
594
  set viewerKey(viewerKey: string | null);
515
595
  get streams(): Set<Stream>;
@@ -519,21 +599,33 @@ export declare class Scene extends EventTarget {
519
599
  readonly client: Client;
520
600
  readonly handle?: number;
521
601
  constructor({ miris, viewerKey }: SceneInit);
602
+ /**
603
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
604
+ * displayed frame from the host's animation loop, and render when it returns true.
605
+ *
606
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
607
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
608
+ *
609
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
610
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
611
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
612
+ */
613
+ update(ts?: DOMHighResTimeStamp): boolean;
522
614
  dispose(): void;
523
- /* Excluded from this release type: _getViewingVolumeBounds */
524
615
  fetchAssets(tags?: string | Iterable<string>): Promise<{
525
616
  name: string;
526
617
  thumbnailUrl: string;
527
618
  uuid: string;
528
619
  tags: string[];
529
620
  }[]>;
530
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
531
621
  add(stream: Stream): void;
532
622
  getStreamForId(streamObjectId: number): Stream | undefined;
533
623
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
534
624
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
625
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
535
626
  /* Excluded from this release type: _getFeatureMesh */
536
627
  /* Excluded from this release type: _getDrMap */
628
+ /* Excluded from this release type: _onDrMapLadder */
537
629
  /* Excluded from this release type: _onFeatureData */
538
630
  /* Excluded from this release type: _onSceneLoaded */
539
631
  delete(stream: Stream): void;
@@ -624,6 +716,8 @@ export declare class Stream extends EventTarget {
624
716
  constructor(options: StreamInit);
625
717
  _initStream({ uuid }: StreamInit): void;
626
718
  /* Excluded from this release type: _onStreamLoaded */
719
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
720
+ /* Excluded from this release type: _getViewingVolumeObb */
627
721
  /* Excluded from this release type: _onRootLoaded */
628
722
  add(modelRoot: ModelRoot): void;
629
723
  end(): void;