@openheart/tavio-renderer 2.5.0 → 2.6.1

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.
@@ -62,6 +62,18 @@ export declare class Core extends EventEmitter {
62
62
  loadTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
63
63
  loadTavioWasm(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
64
64
  loadPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
65
+ loadPlyWasm(name: string, url: string, options?: {
66
+ useSphericalHarmonics?: boolean;
67
+ }): Promise<void>;
68
+ loadSplatWasm(name: string, url: string, options?: {
69
+ useSphericalHarmonics?: boolean;
70
+ }): Promise<void>;
71
+ loadSpzWasm(name: string, url: string, options?: {
72
+ useSphericalHarmonics?: boolean;
73
+ }): Promise<void>;
74
+ loadSogWasm(name: string, url: string, options?: {
75
+ useSphericalHarmonics?: boolean;
76
+ }): Promise<void>;
65
77
  loadSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
66
78
  loadImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
67
79
  loadCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
@@ -75,6 +87,12 @@ export declare class Core extends EventEmitter {
75
87
  saveSpzWasm(name: string, fileName?: string): Promise<any>;
76
88
  saveTavioWasm(name: string, fileName?: string, options?: any): Promise<any>;
77
89
  exportTavioWasm(name: string, options?: any): Promise<any>;
90
+ /**
91
+ * 現在の描画内容を画像として取得する。OffscreenCanvas(Worker)で描画している場合も取得できる
92
+ * @param type - 画像の MIME タイプ [default: "image/png"]
93
+ * @param quality - 画質(0〜1)。"image/jpeg" や "image/webp" のときのみ有効
94
+ */
95
+ captureImage(type?: string, quality?: number): Promise<Blob>;
78
96
  addTavioMesh(name: string): void;
79
97
  removeTavioMesh(name: string, renderViewName?: string | Symbol): void;
80
98
  removeTavioMeshAllRenderView(name: string): void;
@@ -86,6 +86,16 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
86
86
  /** 直前にフレームを描画した時刻(Date.now()) */
87
87
  private _lastFrameTimestamp;
88
88
  private _rafId;
89
+ /**
90
+ * 直前に発行したフレームのGPU処理完了を検知するためのフェンス。
91
+ * requestAnimationFrame は GPU の完了を待たずに発火するため、1フレームのGPU処理時間が
92
+ * 表示間隔を超えると未処理のGPUコマンドが際限なく溜まり、同じGPUを使う他の描画
93
+ * (ブラウザのコンポジタや他タブのビデオ再生など)が停滞する。前フレームの完了を
94
+ * 確認できるまで次のフレームを発行しないことで、GPUの処理能力に描画頻度を合わせる
95
+ */
96
+ private _gpuFence;
97
+ /** 次回の _render でGPUフェンスの完了待ちを省略するか(リサイズ直後の即時描画用) */
98
+ private _bypassGpuFenceOnce;
89
99
  /**
90
100
  * 対応する Controls 種別
91
101
  */
@@ -315,6 +325,15 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
315
325
  bytes: Uint8Array;
316
326
  version: string;
317
327
  }>;
328
+ /**
329
+ * 現在の描画内容を画像として取得する
330
+ * preserveDrawingBuffer が無効でも取得できるよう、その場で1フレーム描画し、同じタスク内で
331
+ * canvas のスナップショットを取る(toBlob / convertToBlob は呼び出し時点の内容を複製する)
332
+ * OffscreenCanvas(Worker)では OffscreenDriver から RPC で呼び出され、Worker 内で convertToBlob する
333
+ * @param type - 画像の MIME タイプ [default: "image/png"]
334
+ * @param quality - 画質(0〜1)。"image/jpeg" や "image/webp" のときのみ有効
335
+ */
336
+ captureImage(type?: string, quality?: number): Promise<Blob>;
318
337
  /**
319
338
  * tavio 形式のリソースを保存する
320
339
  * @param name - このメッシュの固有名
@@ -467,6 +486,19 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
467
486
  * @private
468
487
  */
469
488
  private _render;
489
+ /**
490
+ * 前フレームで発行したGPUフェンスがまだ完了していないかどうかを返す。
491
+ * 完了していればフェンスを破棄する。WebGL2 でない環境やフェンスが無い場合は false
492
+ */
493
+ private _isGpuBusy;
494
+ /**
495
+ * このフレームのGPUコマンドの末尾にフェンスを発行し、完了検知に使えるよう flush する
496
+ */
497
+ private _insertGpuFence;
498
+ /**
499
+ * レンダラーの WebGL2 コンテキストを返す。WebGL2 でない場合やコンテキスト喪失時は null
500
+ */
501
+ private _getWebGL2Context;
470
502
  /**
471
503
  * 登録されている最初のメッシュの名前を取得する
472
504
  */
@@ -34,6 +34,18 @@ export interface iCoreDriver extends EventEmitter {
34
34
  loadTavioWasm(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
35
35
  loadPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
36
36
  loadSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
37
+ loadPlyWasm(name: string, url: string, options?: {
38
+ useSphericalHarmonics?: boolean;
39
+ }): Promise<void>;
40
+ loadSplatWasm(name: string, url: string, options?: {
41
+ useSphericalHarmonics?: boolean;
42
+ }): Promise<void>;
43
+ loadSpzWasm(name: string, url: string, options?: {
44
+ useSphericalHarmonics?: boolean;
45
+ }): Promise<void>;
46
+ loadSogWasm(name: string, url: string, options?: {
47
+ useSphericalHarmonics?: boolean;
48
+ }): Promise<void>;
37
49
  loadImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
38
50
  loadCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
39
51
  concatTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
@@ -46,6 +58,12 @@ export interface iCoreDriver extends EventEmitter {
46
58
  saveSpzWasm(name: string, fileName?: string): Promise<any>;
47
59
  saveTavioWasm(name: string, fileName?: string, options?: any): Promise<any>;
48
60
  exportTavioWasm(name: string, options?: any): Promise<any>;
61
+ /**
62
+ * 現在の描画内容を画像として取得する(描画内容の画像化・サムネイル生成用)
63
+ * @param type - 画像の MIME タイプ [default: "image/png"]
64
+ * @param quality - 画質(0〜1)。"image/jpeg" や "image/webp" のときのみ有効
65
+ */
66
+ captureImage(type?: string, quality?: number): Promise<Blob>;
49
67
  addTavioMesh(name: string): void;
50
68
  removeTavioMesh(name: string, renderViewName?: string | Symbol): void;
51
69
  removeTavioMeshAllRenderView(name: string): void;
@@ -78,6 +78,18 @@ export declare class OffscreenDriver extends EventEmitter implements iCoreDriver
78
78
  loadTavio(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
79
79
  loadTavioWasm(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
80
80
  loadPly(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
81
+ loadPlyWasm(name: string, url: string, options?: {
82
+ useSphericalHarmonics?: boolean;
83
+ }): Promise<void>;
84
+ loadSplatWasm(name: string, url: string, options?: {
85
+ useSphericalHarmonics?: boolean;
86
+ }): Promise<void>;
87
+ loadSpzWasm(name: string, url: string, options?: {
88
+ useSphericalHarmonics?: boolean;
89
+ }): Promise<void>;
90
+ loadSogWasm(name: string, url: string, options?: {
91
+ useSphericalHarmonics?: boolean;
92
+ }): Promise<void>;
81
93
  loadSplat(name: string, source: string | Blob | ArrayBuffer, option?: iLoadingOption): Promise<void>;
82
94
  loadImage(name: string, source: string | Blob | ArrayBuffer | ImageBitmap, option?: iLoadingOption): Promise<void>;
83
95
  loadCanvas(name: string, canvas: HTMLCanvasElement | OffscreenCanvas | ImageBitmap, option?: iLoadingOption): Promise<void>;
@@ -131,6 +143,11 @@ export declare class OffscreenDriver extends EventEmitter implements iCoreDriver
131
143
  saveSpzWasm(name: string, fileName?: string): Promise<any>;
132
144
  saveTavioWasm(name: string, fileName?: string, options?: any): Promise<any>;
133
145
  exportTavioWasm(name: string, options?: any): Promise<any>;
146
+ /**
147
+ * Worker 内の OffscreenCanvas で描画した内容を画像として取得する
148
+ * (Blob は構造化複製で Worker からメインスレッドへ返る)
149
+ */
150
+ captureImage(type?: string, quality?: number): Promise<Blob>;
134
151
  addTavioMesh(name: string): void;
135
152
  getFirstMeshName(): Promise<string | null>;
136
153
  createRenderView(name: string | Symbol): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openheart/tavio-renderer",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "author": "OpenHeart Inc.",
5
5
  "license": "UNLICENSED",
6
6
  "description": "Rendering Engine for Tavio Format 3D data",