@miris-inc/core 0.0.8-7bd29ff → 0.0.8-7db43c1

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
@@ -20,7 +20,9 @@ export declare class AttributeNames {
20
20
  static readonly SPARK_EXTENDED_SH3_B: string;
21
21
  static readonly UNUSED: string;
22
22
  static readonly SHARK_ELLIPSOIDS: string;
23
+ static readonly SHARK_ELLIPSOIDS_COMPRESSED: string;
23
24
  static readonly SHARK_SPHERICAL_HARMONICS: string;
25
+ static readonly COLOR: string;
24
26
  static readonly OCTANT_OFFSETS: string;
25
27
  }
26
28
 
@@ -33,6 +35,8 @@ export declare class Camera {
33
35
  #private;
34
36
  readonly id: number;
35
37
  update(): void;
38
+ get viewportHeight(): number;
39
+ set viewportHeight(viewportHeight: number);
36
40
  get aspect(): number;
37
41
  set aspect(aspect: number);
38
42
  get fov(): number;
@@ -46,7 +50,7 @@ export declare class Camera {
46
50
  readonly engine: Engine;
47
51
  readonly miris: Miris;
48
52
  readonly scene: Scene;
49
- constructor({ aspect, fov, near, far, matrix, scene }: CameraInit);
53
+ constructor({ aspect, fov, near, far, matrix, scene, viewportHeight, }: CameraInit);
50
54
  }
51
55
 
52
56
  export declare type CameraInit = {
@@ -56,6 +60,7 @@ export declare type CameraInit = {
56
60
  far: number;
57
61
  matrix: Matrix4x4Tuple;
58
62
  scene: Scene;
63
+ viewportHeight?: number;
59
64
  };
60
65
 
61
66
  export declare class Change {
@@ -114,7 +119,6 @@ declare class Client {
114
119
  takeRenderRequired(...args: ClientMethodParameters["takeRenderRequired"]): boolean;
115
120
  unlockScene(...args: ClientMethodParameters["unlockScene"]): boolean;
116
121
  updateSceneExecution(...args: ClientMethodParameters["updateSceneExecution"]): AquaStatus;
117
- recordFrameTime(...args: ClientMethodParameters["recordFrameTime"]): AquaStatus;
118
122
  }
119
123
 
120
124
  declare type ClientInit = {
@@ -281,7 +285,8 @@ declare class Engine {
281
285
  aspectRatio: number,
282
286
  verticalFov: number,
283
287
  nearPlane: number,
284
- farPlane: number
288
+ farPlane: number,
289
+ viewportHeightPixels: number
285
290
  ]): AquaStatus;
286
291
  setMaxCacheSize(...args: [maxSizeBytes: number]): void;
287
292
  setSceneObjectTransform(...args: [
@@ -304,8 +309,15 @@ declare class Engine {
304
309
  getActiveClientSideIdsCheckSum(): number;
305
310
  unlockScene(...args: [handle: AquaClientHandle]): boolean;
306
311
  updateSceneExecution(...args: [handle: AquaClientHandle]): AquaStatus;
307
- recordFrameTime(...args: [handle: AquaClientHandle, frameTimeMs: number]): AquaStatus;
308
312
  takeRenderRequired(...args: [handle: AquaClientHandle]): boolean;
313
+ /**
314
+ * Advances the runtime by one frame and recomputes the streaming budget. Call once per
315
+ * displayed frame per context, before the per-client updateSceneExecution() calls.
316
+ * `previousFrameTimeMs` is how long the previous frame took; pass 0 when there is no plausible
317
+ * measurement (first frame, or a resume from a stall) and the frame advances without recording
318
+ * one.
319
+ */
320
+ beginFrame(...args: [contextHandle: AquaContextHandle, previousFrameTimeMs: number]): AquaStatus;
309
321
  createDeserializeWorker(_url: string, _workerUrl: string, poolSize: number): boolean;
310
322
  cancelRequest(requestIdLow: number, requestIdHigh: number): boolean;
311
323
  submitToWorker(requestIdLow: number, requestIdHigh: number, descriptorBuffer: ArrayBuffer, contextPtr: number): boolean;
@@ -419,6 +431,7 @@ declare interface MainModule {
419
431
  TakeEvictedClientSideAttributeIds(handle: number): EmbindVector<bigint>;
420
432
  GetActiveClientSideIdsCheckSum(): number;
421
433
  TakeRenderRequired(handle: number): boolean;
434
+ BeginFrame(contextHandle: number, previousFrameTimeMs: number): number;
422
435
  modifiedObjectIdsView(sceneChangeIds: SceneChangeIds): Uint32Array;
423
436
  setMaxCacheSize(maxSizeBytes: number): void;
424
437
  }
@@ -452,17 +465,19 @@ export declare class Miris {
452
465
  protected _xrSession: XRSession | null;
453
466
  protected _requestAnimationFrame: RequestAnimationFrameFn | null;
454
467
  signalResumeFromIdle(): void;
468
+ get _splatCountBudget(): number;
455
469
  /**
456
470
  * Why 43? Because the AVP throttles down to 45Hz :(
457
471
  */
458
472
  static readonly _XR_TARGET_FRAME_RATE = 43;
473
+ /* Excluded from this release type: _XR_SPLAT_COUNT_BUDGET */
459
474
  /* Excluded from this release type: _setTargetFrameRate */
460
475
  /* Excluded from this release type: _setXRModeActive */
461
476
  /* Excluded from this release type: _setSplatCountBudgetOverride */
462
477
  /* Excluded from this release type: _update */
463
478
  getLocalTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
464
479
  getWorldTransform(client: Client, sceneObjectId: number): Float32Array<ArrayBuffer> | undefined;
465
- update(): boolean;
480
+ /* Excluded from this release type: _updateForScene */
466
481
  applyChanges(_entries: Change[]): void;
467
482
  _computeAdditionalRenderNeeded(): boolean;
468
483
  onColorSpaceDetected(_isLinear: boolean): void;
@@ -519,6 +534,18 @@ export declare class Scene extends EventTarget {
519
534
  readonly client: Client;
520
535
  readonly handle?: number;
521
536
  constructor({ miris, viewerKey }: SceneInit);
537
+ /**
538
+ * Drives a frame and answers whether *this* scene's canvas needs repainting. Call it once per
539
+ * displayed frame from the host's animation loop, and render when it returns true.
540
+ *
541
+ * Every scene on the page calls this from its own loop. The first call in a displayed frame
542
+ * drives one engine tick for all of them; the rest recognise the frame and reuse it.
543
+ *
544
+ * @param ts the host's frame timestamp. Optional - the document timeline supplies one, and it
545
+ * reads the same for every scene in a displayed frame. Pass it when the host runs its own
546
+ * clock, as an immersive XR session does, because XRFrame time is not the document timeline.
547
+ */
548
+ update(ts?: DOMHighResTimeStamp): boolean;
522
549
  dispose(): void;
523
550
  /* Excluded from this release type: _getViewingVolumeObb */
524
551
  fetchAssets(tags?: string | Iterable<string>): Promise<{