@miris-inc/core 0.0.8-3d45357 → 0.0.8-3e558b4

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
 
@@ -24,6 +32,15 @@ export declare class AttributeNames {
24
32
  static readonly SHARK_SPHERICAL_HARMONICS: string;
25
33
  static readonly COLOR: string;
26
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;
27
44
  }
28
45
 
29
46
  declare type CachedAttribute = {
@@ -112,6 +129,8 @@ declare class Client {
112
129
  hasFeature(...args: ClientMethodParameters["hasFeature"]): boolean;
113
130
  getFeatureVersion(...args: ClientMethodParameters["getFeatureVersion"]): number;
114
131
  getFeatureState(...args: ClientMethodParameters["getFeatureState"]): number;
132
+ getAssetFormatVersion(...args: ClientMethodParameters["getAssetFormatVersion"]): number;
133
+ getDrMapLadderRoughnessLevels(...args: ClientMethodParameters["getDrMapLadderRoughnessLevels"]): number[];
115
134
  getName(...args: ClientMethodParameters["getName"]): string;
116
135
  setVariantSelection(...args: ClientMethodParameters["setVariantSelection"]): AquaStatus;
117
136
  takeAttribute(...args: ClientMethodParameters["takeAttribute"]): AquaStatus;
@@ -119,7 +138,6 @@ declare class Client {
119
138
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
120
139
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
121
140
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
122
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
123
141
  }
124
142
 
125
143
  declare type ClientInit = {
@@ -183,6 +201,11 @@ declare class Engine {
183
201
  get module(): MainModule;
184
202
  constructor(moduleOptions?: Record<string, unknown>);
185
203
  get AttributeInfo(): new () => AttributeInfo;
204
+ get CompressionType(): {
205
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
206
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
207
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
208
+ };
186
209
  get Handedness(): {
187
210
  Right: number;
188
211
  Left: number;
@@ -229,8 +252,8 @@ declare class Engine {
229
252
  attributeName: string,
230
253
  attributeInfo: AttributeInfo
231
254
  ]): AquaStatus;
232
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
233
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
255
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
256
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
234
257
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
235
258
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
236
259
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -290,6 +313,7 @@ declare class Engine {
290
313
  viewportHeightPixels: number
291
314
  ]): AquaStatus;
292
315
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
316
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
293
317
  setSceneObjectTransform(...args: [
294
318
  handle: AquaClientHandle,
295
319
  sceneObjectId: number,
@@ -298,6 +322,8 @@ declare class Engine {
298
322
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
299
323
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
300
324
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
325
+ getDrMapLadderRoughnessLevels(...args: [handle: AquaClientHandle, sceneObjectId: number]): number[];
326
+ getAssetFormatVersion(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
301
327
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
302
328
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
303
329
  takeAttribute(...args: [
@@ -310,8 +336,15 @@ declare class Engine {
310
336
  getActiveClientSideIdsCheckSum(): number;
311
337
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
312
338
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
313
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
314
339
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
340
+ /**
341
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
342
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
343
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
344
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
345
+ * one.
346
+ */
347
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
315
348
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
316
349
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
317
350
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -357,9 +390,15 @@ export declare class Lod {
357
390
  set _drawnOctantMask(mask: number);
358
391
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
359
392
  get _hasOctantOffsets(): boolean;
393
+ get _surfelOctantOffsets(): Uint32Array<ArrayBuffer> | null;
394
+ get _surfelCount(): number;
395
+ get _surfelOwnerGroups(): Uint32Array<ArrayBuffer> | null;
396
+ get _octantCell(): Uint32Array<ArrayBuffer> | null;
360
397
  _readOctantOffsets(engine: Engine): void;
361
398
  hasAttribute(attributeName: string): boolean;
362
399
  getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
400
+ _getRawByteAttribute(engine: Engine, attributeName: string): Uint8Array<ArrayBuffer> | null;
401
+ _getRawByteAttributeWithBounds(engine: Engine, attributeName: string): RawByteAttributeWithBounds | null;
363
402
  dispose(): void;
364
403
  constructor({ id, modelRoot, lodStore, client }: LodInit);
365
404
  }
@@ -384,6 +423,11 @@ export declare class LodStore {
384
423
 
385
424
  declare interface MainModule {
386
425
  AttributeInfo: new () => AttributeInfo;
426
+ CompressionType: {
427
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
428
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
429
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE_V2: unknown;
430
+ };
387
431
  Handedness: { Right: number; Left: number };
388
432
  HEAPF32: Float32Array<ArrayBuffer>;
389
433
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -420,13 +464,17 @@ declare interface MainModule {
420
464
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
421
465
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
422
466
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
467
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
468
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
423
469
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
424
470
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
425
471
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
426
472
  GetActiveClientSideIdsCheckSum(): number;
427
473
  TakeRenderRequired(handle: number): boolean;
474
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
428
475
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
429
476
  setMaxCacheSize(maxSizeBytes: number): void;
477
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
430
478
  }
431
479
 
432
480
  /**
@@ -463,13 +511,22 @@ export declare class Miris {
463
511
  * Why 43? Because the AVP throttles down to 45Hz :(
464
512
  */
465
513
  static readonly _XR_TARGET_FRAME_RATE = 43;
514
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
515
+ /* Excluded from this release type: _SHARK_SPLAT_CAPACITY_MOBILE */
516
+ static readonly _SHARK_SPLAT_CAPACITY_DESKTOP = 3000000;
517
+ /* Excluded from this release type: _SHARK_SPLAT_BUDGET_CAP_MOBILE */
518
+ static readonly _SHARK_SPLAT_BUDGET_CAP_DESKTOP = 2500000;
519
+ /* Excluded from this release type: _isMobileDevice */
520
+ /* Excluded from this release type: _sharkSplatCapacity */
521
+ /* Excluded from this release type: _limitSharkSplatCapacity */
522
+ /* Excluded from this release type: _sharkSplatBudgetCap */
466
523
  /* Excluded from this release type: _setTargetFrameRate */
467
524
  /* Excluded from this release type: _setXRModeActive */
468
525
  /* Excluded from this release type: _setSplatCountBudgetOverride */
469
526
  /* Excluded from this release type: _update */
470
527
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
471
528
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
472
- update(): boolean;
529
+ /* Excluded from this release type: _updateForScene */
473
530
  applyChanges(_entries: Change[]): void;
474
531
  _computeAdditionalRenderNeeded(): boolean;
475
532
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -498,6 +555,28 @@ export declare type ModelRootInit = {
498
555
  stream: Stream;
499
556
  };
500
557
 
558
+ /**
559
+ * The byte-exact counterpart of getRawUint32Attribute above: same no-padding, no-takeAttribute
560
+ * contract, returning bytes rather than words.
561
+ *
562
+ * Use this rather than that one wherever the stride is not a whole number of words: the
563
+ * reflectance records' 18- and 26-byte strides are not, and an odd record count would lose that
564
+ * record's last field to dataPtrView's truncation.
565
+ */
566
+ export declare type RawByteAttributeWithBounds = {
567
+ bytes: Uint8Array<ArrayBuffer>;
568
+ minValue: {
569
+ x: number;
570
+ y: number;
571
+ z: number;
572
+ };
573
+ maxValue: {
574
+ x: number;
575
+ y: number;
576
+ z: number;
577
+ };
578
+ };
579
+
501
580
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
502
581
 
503
582
  declare interface RuntimeSettings extends EmbindObject {
@@ -506,6 +585,7 @@ declare interface RuntimeSettings extends EmbindObject {
506
585
  targetFramesPerSecond: number;
507
586
  xrModeActive: boolean;
508
587
  splatCountBudget: number;
588
+ splatCountBudgetCap: number;
509
589
  }
510
590
 
511
591
  export declare class Scene extends EventTarget {
@@ -517,6 +597,7 @@ export declare class Scene extends EventTarget {
517
597
  readonly id: number;
518
598
  get key(): unknown;
519
599
  set key(key: unknown);
600
+ /* Excluded from this release type: _assetFormat */
520
601
  get viewerKey(): string | null;
521
602
  set viewerKey(viewerKey: string | null);
522
603
  get streams(): Set<Stream>;
@@ -526,21 +607,33 @@ export declare class Scene extends EventTarget {
526
607
  readonly client: Client;
527
608
  readonly handle?: number;
528
609
  constructor({ miris, viewerKey }: SceneInit);
610
+ /**
611
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
612
+ * displayed frame from the host's animation loop, and render when it returns true.
613
+ *
614
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
615
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
616
+ *
617
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
618
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
619
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
620
+ */
621
+ update(ts?: DOMHighResTimeStamp): boolean;
529
622
  dispose(): void;
530
- /* Excluded from this release type: _getViewingVolumeObb */
531
623
  fetchAssets(tags?: string | Iterable<string>): Promise<{
532
624
  name: string;
533
625
  thumbnailUrl: string;
534
626
  uuid: string;
535
627
  tags: string[];
536
628
  }[]>;
537
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
538
629
  add(stream: Stream): void;
539
630
  getStreamForId(streamObjectId: number): Stream | undefined;
540
631
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
541
632
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
633
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
542
634
  /* Excluded from this release type: _getFeatureMesh */
543
635
  /* Excluded from this release type: _getDrMap */
636
+ /* Excluded from this release type: _onDrMapLadder */
544
637
  /* Excluded from this release type: _onFeatureData */
545
638
  /* Excluded from this release type: _onSceneLoaded */
546
639
  delete(stream: Stream): void;
@@ -631,6 +724,8 @@ export declare class Stream extends EventTarget {
631
724
  constructor(options: StreamInit);
632
725
  _initStream({ uuid }: StreamInit): void;
633
726
  /* Excluded from this release type: _onStreamLoaded */
727
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
728
+ /* Excluded from this release type: _getViewingVolumeObb */
634
729
  /* Excluded from this release type: _onRootLoaded */
635
730
  add(modelRoot: ModelRoot): void;
636
731
  end(): void;