@miris-inc/core 0.0.8-6ba4cfb → 0.0.8-6e08ae4

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://miris.com">
3
- <img src="./banner.svg" alt="Miris" width="100%" />
3
+ <img src="https://cdn.jsdelivr.net/npm/@miris-inc/core/banner.svg" alt="Miris" width="100%" />
4
4
  </a>
5
5
  </p>
6
6
 
package/dist/AquaApi.wasm CHANGED
Binary file
Binary file
package/dist/core.d.ts CHANGED
@@ -7,10 +7,36 @@ declare interface AttributeInfo extends EmbindObject {
7
7
  readonly maxValue: { x: number; y: number; z: number };
8
8
  }
9
9
 
10
+ export declare class AttributeNames {
11
+ static readonly SPARK_PACKED_SPLAT: string;
12
+ static readonly SPARK_EXTENDED_SPLAT_LOW: string;
13
+ static readonly SPARK_EXTENDED_SPLAT_HIGH: string;
14
+ static readonly SPARK_PACKED_SH1: string;
15
+ static readonly SPARK_PACKED_SH2: string;
16
+ static readonly SPARK_PACKED_SH3: string;
17
+ static readonly SPARK_EXTENDED_SH1: string;
18
+ static readonly SPARK_EXTENDED_SH2: string;
19
+ static readonly SPARK_EXTENDED_SH3_A: string;
20
+ static readonly SPARK_EXTENDED_SH3_B: string;
21
+ static readonly UNUSED: string;
22
+ static readonly SHARK_ELLIPSOIDS: string;
23
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
24
+ static readonly SHARK_SPHERICAL_HARMONICS: string;
25
+ static readonly COLOR: string;
26
+ static readonly OCTANT_OFFSETS: string;
27
+ }
28
+
29
+ declare type CachedAttribute = {
30
+ paddedData: Uint32Array<ArrayBuffer>;
31
+ originalSizeInUints: number;
32
+ };
33
+
10
34
  export declare class Camera {
11
35
  #private;
12
36
  readonly id: number;
13
37
  update(): void;
38
+ get viewportHeight(): number;
39
+ set viewportHeight(viewportHeight: number);
14
40
  get aspect(): number;
15
41
  set aspect(aspect: number);
16
42
  get fov(): number;
@@ -24,7 +50,7 @@ export declare class Camera {
24
50
  readonly engine: Engine;
25
51
  readonly miris: Miris;
26
52
  readonly scene: Scene;
27
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
53
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
28
54
  }
29
55
 
30
56
  export declare type CameraInit = {
@@ -34,6 +60,7 @@ export declare type CameraInit = {
34
60
  far: number;
35
61
  matrix: Matrix4x4Tuple;
36
62
  scene: Scene;
63
+ viewportHeight?: number;
37
64
  };
38
65
 
39
66
  export declare class Change {
@@ -43,7 +70,7 @@ export declare class Change {
43
70
  }
44
71
 
45
72
  export declare type ChangeInit = {
46
- type: "created" | "activated" | "modified" | "deactivated" | "deleted";
73
+ type: "created" | "activated" | "modified" | "deactivated" | "deleted" | "remasked";
47
74
  lod: Lod;
48
75
  };
49
76
 
@@ -60,6 +87,7 @@ declare class Client {
60
87
  getAssetsAsync(...args: ClientMethodParameters["getAssetsAsync"]): AssetInfo[];
61
88
  getAttribute(...args: ClientMethodParameters["getAttribute"]): AquaStatus;
62
89
  getDefaultCameraId(...args: ClientMethodParameters["getDefaultCameraId"]): number;
90
+ getViewingVolumeId(...args: ClientMethodParameters["getViewingVolumeId"]): number;
63
91
  getLocalBoundingBox(...args: ClientMethodParameters["getLocalBoundingBox"]): AquaStatus;
64
92
  getWorldBoundingBox(...args: ClientMethodParameters["getWorldBoundingBox"]): AquaStatus;
65
93
  getLodIndex(...args: ClientMethodParameters["getLodIndex"]): number;
@@ -68,6 +96,7 @@ declare class Client {
68
96
  getSceneMetadata(...args: ClientMethodParameters["getSceneMetadata"]): number;
69
97
  getSceneObjectParent(...args: ClientMethodParameters["getSceneObjectParent"]): number;
70
98
  getSceneObjectType(...args: ClientMethodParameters["getSceneObjectType"]): SceneObjectType;
99
+ getDrawnOctantMask(...args: ClientMethodParameters["getDrawnOctantMask"]): number;
71
100
  getLocalTransform(...args: ClientMethodParameters["getLocalTransform"]): AquaStatus;
72
101
  getWorldTransform(...args: ClientMethodParameters["getWorldTransform"]): AquaStatus;
73
102
  hasAttribute(...args: ClientMethodParameters["hasAttribute"]): boolean;
@@ -139,6 +168,8 @@ declare class Engine {
139
168
  };
140
169
  static Feature: {
141
170
  readonly DrMap: 0;
171
+ readonly ReflMesh: 1;
172
+ readonly GlassMesh: 2;
142
173
  };
143
174
  static FeatureState: {
144
175
  readonly NotLoaded: 0;
@@ -186,6 +217,8 @@ declare class Engine {
186
217
  deletedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
187
218
  dataPtrView(...args: [attributeInfo: AttributeInfo]): Uint32Array;
188
219
  deactivatedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
220
+ remaskedObjectIdsView(...args: [sceneChangeIds: SceneChangeIds]): Uint32Array;
221
+ getDrawnOctantMask(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
189
222
  destroyClient(...args: [handle: AquaClientHandle]): AquaStatus;
190
223
  free(...args: [size: number]): number;
191
224
  getAssetsAsync(...args: [handle: AquaClientHandle, tags: StringVector]): AssetInfo[];
@@ -196,6 +229,7 @@ declare class Engine {
196
229
  attributeInfo: AttributeInfo
197
230
  ]): AquaStatus;
198
231
  getDefaultCameraId(...args: [handle: AquaClientHandle]): number;
232
+ getViewingVolumeId(...args: [handle: AquaClientHandle]): number;
199
233
  getLocalBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
200
234
  getWorldBoundingBox(...args: [handle: AquaClientHandle, sceneObjectId: number, boxData: number]): AquaStatus;
201
235
  getLodIndex(...args: [handle: AquaClientHandle, sceneObjectId: number]): number;
@@ -244,19 +278,18 @@ declare class Engine {
244
278
  removeStream(...args: [handle: AquaClientHandle, streamObjectId: number]): boolean;
245
279
  setAssetViewerKey(...args: [handle: AquaClientHandle, key: string]): AquaStatus;
246
280
  setClientSpatialFormat(...args: [handle: AquaClientHandle, spatialFormat: SpatialFormat]): AquaStatus;
247
- setRuntimeSettings(...args: [
248
- handle: AquaClientHandle,
249
- settings: RuntimeSettings
250
- ]): AquaStatus;
281
+ setRuntimeSettings(...args: [handle: AquaClientHandle, settings: RuntimeSettings]): AquaStatus;
251
282
  setMainCameraTransform(...args: [handle: AquaClientHandle, cameraTransform: number]): AquaStatus;
252
283
  setMainCameraViewFrustum(...args: [
253
284
  handle: AquaClientHandle,
254
285
  aspectRatio: number,
255
286
  verticalFov: number,
256
287
  nearPlane: number,
257
- farPlane: number
288
+ farPlane: number,
289
+ viewportHeightPixels: number
258
290
  ]): AquaStatus;
259
291
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
292
+ setPreferSharkEncodingProfiles(...args: [preferShark: boolean]): void;
260
293
  setSceneObjectTransform(...args: [
261
294
  handle: AquaClientHandle,
262
295
  sceneObjectId: number,
@@ -265,14 +298,8 @@ declare class Engine {
265
298
  hasFeature(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): boolean;
266
299
  getFeatureVersion(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
267
300
  getFeatureState(...args: [handle: AquaClientHandle, sceneObjectId: number, feature: number]): number;
268
- getName(...args: [
269
- handle: AquaClientHandle,
270
- sceneObjectId: number
271
- ]): string;
272
- setVariantSelection(...args: [
273
- handle: AquaClientHandle,
274
- sceneObjectId: number
275
- ]): AquaStatus;
301
+ getName(...args: [handle: AquaClientHandle, sceneObjectId: number]): string;
302
+ setVariantSelection(...args: [handle: AquaClientHandle, sceneObjectId: number]): AquaStatus;
276
303
  takeAttribute(...args: [
277
304
  handle: AquaClientHandle,
278
305
  sceneObjectId: number,
@@ -282,11 +309,16 @@ declare class Engine {
282
309
  takeEvictedClientSideAttributeIds(...args: [handle: AquaClientHandle]): EmbindVector<bigint>;
283
310
  getActiveClientSideIdsCheckSum(): number;
284
311
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
285
- updateSceneExecution(...args: [
286
- handle: AquaClientHandle,
287
- firstInSequence: boolean
288
- ]): AquaStatus;
312
+ updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
289
313
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
314
+ /**
315
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
316
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
317
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
318
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
319
+ * one.
320
+ */
321
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
290
322
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
291
323
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
292
324
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -304,41 +336,46 @@ export declare class Lod {
304
336
  #private;
305
337
  readonly id: LodInit["id"];
306
338
  readonly store: LodStore;
307
- useExtSplats: boolean;
308
- splatsExtendedData: Uint32Array<ArrayBuffer> | null;
309
- sh1Data: Uint32Array<ArrayBuffer> | null;
310
- sh1Max: number;
311
- sh2Data: Uint32Array<ArrayBuffer> | null;
312
- sh2Max: number;
313
- sh3Data: Uint32Array<ArrayBuffer> | null;
314
- sh3Max: number;
315
- sh3ExtendedData: Uint32Array<ArrayBuffer> | null;
316
339
  get key(): unknown;
317
340
  set key(key: unknown);
318
341
  readonly modelRoot: ModelRoot;
319
- set splats(splats: Uint32Array<ArrayBuffer> | null);
320
- get splats(): Uint32Array<ArrayBuffer> | null;
321
342
  set bounds(bounds: Float32Array<ArrayBuffer> | null);
343
+ /**
344
+ * Retrieves the cached world bounds of this object
345
+ *
346
+ * @deprecated Retrieve the local bounds and transform as needed
347
+ */
322
348
  get bounds(): Float32Array<ArrayBuffer> | null;
323
- /* Excluded from this release type: _boundsStreamSpace */
324
- /* Excluded from this release type: _boundsStreamSpace */
349
+ /**
350
+ * Sets the local bounds of this lod
351
+ */
352
+ set localBounds(bounds: Float32Array<ArrayBuffer> | null);
353
+ /**
354
+ * Retrieves the local bounds of this lod
355
+ */
356
+ get localBounds(): Float32Array<ArrayBuffer> | null;
325
357
  set lodIndex(index: number);
326
358
  get lodIndex(): number | null;
327
- set paddingCount(count: number);
328
- get paddingCount(): number;
359
+ set paddingSplatsCount(count: number);
360
+ get paddingSplatsCount(): number;
329
361
  set transform(transform: Float32Array<ArrayBuffer> | null);
330
362
  get transform(): Float32Array<ArrayBuffer> | null;
331
- setSh1(sh1Data: Uint32Array<ArrayBuffer>, sh1Max: number): void;
332
- setSh2(sh2Data: Uint32Array<ArrayBuffer>, sh2Max: number): void;
333
- setSh3(sh3Data: Uint32Array<ArrayBuffer>, sh3Max: number): void;
363
+ get _drawnOctantMask(): number;
364
+ set _drawnOctantMask(mask: number);
365
+ get _octantOffsets(): Uint32Array<ArrayBuffer> | null;
366
+ get _hasOctantOffsets(): boolean;
367
+ _readOctantOffsets(engine: Engine): void;
368
+ hasAttribute(attributeName: string): boolean;
369
+ getDataFromAttribute(engine: Engine, attributeName: string, attributeInfo: AttributeInfo): CachedAttribute | null;
334
370
  dispose(): void;
335
- constructor({ id, modelRoot, lodStore }: LodInit);
371
+ constructor({ id, modelRoot, lodStore, client }: LodInit);
336
372
  }
337
373
 
338
374
  export declare type LodInit = {
339
375
  id: number;
340
376
  modelRoot: ModelRoot;
341
377
  lodStore: LodStore;
378
+ client: Client;
342
379
  };
343
380
 
344
381
  export declare class LodStore {
@@ -379,7 +416,9 @@ declare interface MainModule {
379
416
  createdObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
380
417
  dataPtrView(attributeInfo: AttributeInfo): Uint32Array;
381
418
  deactivatedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
419
+ remaskedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
382
420
  deletedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
421
+ GetDrawnOctantMask(handle: number, sceneObjectId: number): number;
383
422
  GetAssetsAsync(handle: number, tags: StringVector): unknown[];
384
423
  GetSceneChanges(handle: number, sceneChangeIds: SceneChangeIds): void;
385
424
  GetSceneChangesCounts(handle: number, sceneChangeIds: SceneChangeIds): void;
@@ -393,8 +432,10 @@ declare interface MainModule {
393
432
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
394
433
  GetActiveClientSideIdsCheckSum(): number;
395
434
  TakeRenderRequired(handle: number): boolean;
435
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
396
436
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
397
437
  setMaxCacheSize(maxSizeBytes: number): void;
438
+ SetPreferSharkEncodingProfiles(prefer: boolean): void;
398
439
  }
399
440
 
400
441
  /**
@@ -407,6 +448,7 @@ declare interface MainModule {
407
448
  */
408
449
  export declare class Miris {
409
450
  #private;
451
+ static tryUseShark: boolean;
410
452
  static _instance: Miris;
411
453
  static instance<T extends typeof Miris>(this: T): Promise<InstanceType<T>>;
412
454
  readonly engine: Engine;
@@ -416,14 +458,28 @@ export declare class Miris {
416
458
  get viewerKey(): string | null | undefined;
417
459
  set viewerKey(viewerKey: string | null | undefined);
418
460
  get scenes(): Set<Scene>;
461
+ get useSphericalHarmonics(): boolean;
462
+ set useSphericalHarmonics(value: boolean);
419
463
  constructor();
420
464
  dispose(): void;
421
465
  updateParentedTransform(_modelTransform: Float32Array<ArrayBuffer>, _parentTransform: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer> | undefined;
466
+ protected _xrModeActive: boolean;
467
+ protected _xrSession: XRSession | null;
468
+ protected _requestAnimationFrame: RequestAnimationFrameFn | null;
469
+ signalResumeFromIdle(): void;
470
+ get _splatCountBudget(): number;
471
+ /**
472
+ * Why 43? Because the AVP throttles down to 45Hz :(
473
+ */
474
+ static readonly _XR_TARGET_FRAME_RATE = 43;
475
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
476
+ /* Excluded from this release type: _setTargetFrameRate */
422
477
  /* Excluded from this release type: _setXRModeActive */
478
+ /* Excluded from this release type: _setSplatCountBudgetOverride */
423
479
  /* Excluded from this release type: _update */
424
480
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
425
481
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
426
- update(): boolean;
482
+ /* Excluded from this release type: _updateForScene */
427
483
  applyChanges(_entries: Change[]): void;
428
484
  _computeAdditionalRenderNeeded(): boolean;
429
485
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -452,11 +508,14 @@ export declare type ModelRootInit = {
452
508
  stream: Stream;
453
509
  };
454
510
 
511
+ declare type RequestAnimationFrameFn = ((callback: FrameRequestCallback) => number) | ((callback: XRFrameRequestCallback) => void);
512
+
455
513
  declare interface RuntimeSettings extends EmbindObject {
456
514
  maxBandwidthBitsPerSecond: number;
457
515
  maxConcurrentRequests: number;
458
516
  targetFramesPerSecond: number;
459
517
  xrModeActive: boolean;
518
+ splatCountBudget: number;
460
519
  }
461
520
 
462
521
  export declare class Scene extends EventTarget {
@@ -477,7 +536,20 @@ export declare class Scene extends EventTarget {
477
536
  readonly client: Client;
478
537
  readonly handle?: number;
479
538
  constructor({ miris, viewerKey }: SceneInit);
539
+ /**
540
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
541
+ * displayed frame from the host's animation loop, and render when it returns true.
542
+ *
543
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
544
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
545
+ *
546
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
547
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
548
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
549
+ */
550
+ update(ts?: DOMHighResTimeStamp): boolean;
480
551
  dispose(): void;
552
+ /* Excluded from this release type: _getViewingVolumeObb */
481
553
  fetchAssets(tags?: string | Iterable<string>): Promise<{
482
554
  name: string;
483
555
  thumbnailUrl: string;
@@ -489,6 +561,7 @@ export declare class Scene extends EventTarget {
489
561
  getStreamForId(streamObjectId: number): Stream | undefined;
490
562
  getStreamForDescendentId(descendentObjectId: number): Stream | null;
491
563
  getModelRootForDescendentId(descendentObjectId: number): ModelRoot | null;
564
+ /* Excluded from this release type: _getFeatureMesh */
492
565
  /* Excluded from this release type: _getDrMap */
493
566
  /* Excluded from this release type: _onFeatureData */
494
567
  /* Excluded from this release type: _onSceneLoaded */
@@ -502,6 +575,7 @@ declare interface SceneChangeIds extends EmbindObject {
502
575
  readonly modifiedObjectsCount: number;
503
576
  readonly deactivatedObjectsCount: number;
504
577
  readonly deletedObjectsCount: number;
578
+ readonly remaskedObjectsCount: number;
505
579
  }
506
580
 
507
581
  export declare type SceneInit = {
@@ -513,6 +587,13 @@ declare interface SceneMetadata extends EmbindObject {
513
587
  readonly inputColorSpace: string;
514
588
  }
515
589
 
590
+ declare type SparkAttributeInfo = {
591
+ elementsPerSplat: number;
592
+ discard: boolean;
593
+ };
594
+
595
+ export declare const sparkAttributeList: Record<string, SparkAttributeInfo>;
596
+
516
597
  declare interface SpatialFormat extends EmbindObject {
517
598
  metersPerUnit: number;
518
599
  upAxis: number;
@@ -540,6 +621,8 @@ export declare class Stream extends EventTarget {
540
621
  set key(key: unknown);
541
622
  get matrix(): Matrix4x4Tuple;
542
623
  set matrix(matrix: Matrix4x4Tuple);
624
+ get opacity(): number;
625
+ set opacity(opacity: number);
543
626
  get boundingBox(): {
544
627
  min: {
545
628
  x: number;