@miris-inc/core 0.0.8-0b76767 → 0.0.8-0ce42f4

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,10 @@ 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
+ };
186
208
  get Handedness(): {
187
209
  Right: number;
188
210
  Left: number;
@@ -229,8 +251,8 @@ declare class Engine {
229
251
  attributeName: string,
230
252
  attributeInfo: AttributeInfo
231
253
  ]): AquaStatus;
232
- getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
233
- getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
254
+ getDefaultCameraId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
255
+ getViewingVolumeId(...args: [handle: AquaClientHandle, streamObjectId: number]): number;
234
256
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
235
257
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
236
258
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -290,6 +312,7 @@ declare class Engine {
290
312
  viewportHeightPixels: number
291
313
  ]): AquaStatus;
292
314
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
315
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
293
316
  setSceneObjectTransform(...args: [
294
317
  handle: AquaClientHandle,
295
318
  sceneObjectId: number,
@@ -298,6 +321,8 @@ declare class Engine {
298
321
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
299
322
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
300
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;
301
326
  getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
302
327
  setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
303
328
  takeAttribute(...args: [
@@ -310,8 +335,15 @@ declare class Engine {
310
335
  getActiveClientSideIdsCheckSum(): number;
311
336
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
312
337
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
313
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
314
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;
315
347
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
316
348
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
317
349
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -357,9 +389,15 @@ export declare class Lod {
357
389
  set _drawnOctantMask(mask: number);
358
390
  get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
359
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;
360
396
  _readOctantOffsets(engine: Engine): void;
361
397
  hasAttribute(attributeName: string): boolean;
362
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;
363
401
  dispose(): void;
364
402
  constructor({ id, modelRoot, lodStore, client }: LodInit);
365
403
  }
@@ -384,6 +422,10 @@ export declare class LodStore {
384
422
 
385
423
  declare interface MainModule {
386
424
  AttributeInfo: new () => AttributeInfo;
425
+ CompressionType: {
426
+ SHARK_ELLIPSOID_COMPRESSED: unknown;
427
+ SHARK_ELLIPSOID_COMPRESSED_ROOT_RELATIVE: unknown;
428
+ };
387
429
  Handedness: { Right: number; Left: number };
388
430
  HEAPF32: Float32Array<ArrayBuffer>;
389
431
  HEAPU8: Uint8Array<ArrayBuffer>;
@@ -420,13 +462,17 @@ declare interface MainModule {
420
462
  HasFeature(handle: number, sceneObjectId: number, feature: number): boolean;
421
463
  GetFeatureVersion(handle: number, sceneObjectId: number, feature: number): number;
422
464
  GetFeatureState(handle: number, sceneObjectId: number, feature: number): number;
465
+ GetAssetFormatVersion(handle: number, sceneObjectId: number): number;
466
+ GetDrMapLadderRoughnessLevels(handle: number, sceneObjectId: number): number[];
423
467
  SetClientSpatialFormat(handle: number, spatialFormat: SpatialFormat): { value: number };
424
468
  SetRuntimeSettings(handle: number, settings: RuntimeSettings): { value: number };
425
469
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
426
470
  GetActiveClientSideIdsCheckSum(): number;
427
471
  TakeRenderRequired(handle: number): boolean;
472
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
428
473
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
429
474
  setMaxCacheSize(maxSizeBytes: number): void;
475
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
430
476
  }
431
477
 
432
478
  /**
@@ -463,13 +509,22 @@ export declare class Miris {
463
509
  * Why 43? Because the AVP throttles down to 45Hz :(
464
510
  */
465
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 */
466
521
  /* Excluded from this release type: _setTargetFrameRate */
467
522
  /* Excluded from this release type: _setXRModeActive */
468
523
  /* Excluded from this release type: _setSplatCountBudgetOverride */
469
524
  /* Excluded from this release type: _update */
470
525
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
471
526
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
472
- update(): boolean;
527
+ /* Excluded from this release type: _updateForScene */
473
528
  applyChanges(_entries: Change[]): void;
474
529
  _computeAdditionalRenderNeeded(): boolean;
475
530
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -498,6 +553,28 @@ export declare type ModelRootInit = {
498
553
  stream: Stream;
499
554
  };
500
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
+
501
578
  declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
502
579
 
503
580
  declare interface RuntimeSettings extends EmbindObject {
@@ -506,6 +583,7 @@ declare interface RuntimeSettings extends EmbindObject {
506
583
  targetFramesPerSecond: number;
507
584
  xrModeActive: boolean;
508
585
  splatCountBudget: number;
586
+ splatCountBudgetCap: number;
509
587
  }
510
588
 
511
589
  export declare class Scene extends EventTarget {
@@ -517,6 +595,7 @@ export declare class Scene extends EventTarget {
517
595
  readonly id: number;
518
596
  get key(): unknown;
519
597
  set key(key: unknown);
598
+ /* Excluded from this release type: _assetFormat */
520
599
  get viewerKey(): string | null;
521
600
  set viewerKey(viewerKey: string | null);
522
601
  get streams(): Set<Stream>;
@@ -526,21 +605,33 @@ export declare class Scene extends EventTarget {
526
605
  readonly client: Client;
527
606
  readonly handle?: number;
528
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;
529
620
  dispose(): void;
530
- /* Excluded from this release type: _getViewingVolumeObb */
531
621
  fetchAssets(tags?: string | Iterable<string>): Promise<{
532
622
  name: string;
533
623
  thumbnailUrl: string;
534
624
  uuid: string;
535
625
  tags: string[];
536
626
  }[]>;
537
- getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
538
627
  add(stream: Stream): void;
539
628
  getStreamForId(streamObjectId: number): Stream | undefined;
540
629
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
541
630
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
631
+ _recordAssetFormat(modelRoot: ModelRoot, formatVersion: number): void;
542
632
  /* Excluded from this release type: _getFeatureMesh */
543
633
  /* Excluded from this release type: _getDrMap */
634
+ /* Excluded from this release type: _onDrMapLadder */
544
635
  /* Excluded from this release type: _onFeatureData */
545
636
  /* Excluded from this release type: _onSceneLoaded */
546
637
  delete(stream: Stream): void;
@@ -631,6 +722,8 @@ export declare class Stream extends EventTarget {
631
722
  constructor(options: StreamInit);
632
723
  _initStream({ uuid }: StreamInit): void;
633
724
  /* Excluded from this release type: _onStreamLoaded */
725
+ getDefaultCameraTransform(): Float32Array<ArrayBuffer> | null | undefined;
726
+ /* Excluded from this release type: _getViewingVolumeObb */
634
727
  /* Excluded from this release type: _onRootLoaded */
635
728
  add(modelRoot: ModelRoot): void;
636
729
  end(): void;