@miris-inc/core 0.0.8-79a58cb → 0.0.8-7ac5894

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