@openheart/tavio-renderer 2.6.7 → 2.6.9

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.
@@ -340,10 +340,35 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
340
340
  * @private
341
341
  */
342
342
  private _renderOnceForCapture;
343
+ /**
344
+ * いずれかのレンダービューで、スプラットのソート(深度の焼き込みを含む)が進行中かどうか
345
+ * @private
346
+ */
347
+ private _isAnySortInProgress;
348
+ /**
349
+ * 進行中のスプラットのソートがすべて終わるまで待つ。進行中でなければすぐに返る。
350
+ * ソートの完了は TavioMesh の "sort" イベントで検知する(イベントの直後にソート中フラグが下りる)。
351
+ * worker の異常などで完了しない場合に備えて、timeoutMs を過ぎたら待つのをやめる
352
+ * @param timeoutMs - 待ち時間の上限(ms)
353
+ * @private
354
+ */
355
+ private _waitForSortSettled;
356
+ /**
357
+ * 直前に発行した GPU コマンドが完了するまで待つ(GPU フェンスをポーリングする)。
358
+ * WebGL2 でない環境やフェンスが無い場合はすぐに返る。timeoutMs を過ぎたら待つのをやめる
359
+ * @param timeoutMs - 待ち時間の上限(ms)
360
+ * @private
361
+ */
362
+ private _waitForGpuIdle;
343
363
  /**
344
364
  * 現在の描画内容を ImageBitmap として取得する(動画の書き出しなど、フレーム単位で連続して取得する用途)
345
- * captureImage と同じく、その場で1フレーム描画し、同じタスク内で canvas の内容を複製する
346
- * (createImageBitmap は canvas を元にする場合、呼び出し時点の内容を複製する)。
365
+ * 描画の途中経過ではなく確定した内容を返すために、取得の前に次の順で描画を落ち着かせる
366
+ * 1. カメラを移動し、1フレーム描画する(カメラの行列を更新し、視野が変わっていれば深度の焼き込みとソートが始まる)
367
+ * 2. 進行中のソートを待つ。描画でソートが始まらなかった(視野の変化が小さい)場合は、現在のカメラで強制的にソートして待つ
368
+ * 3. それまでの GPU の処理が終わるのを待つ(描画の発行が溜まったまま次へ進まないようにする)
369
+ * 4. ソート結果を反映して1フレーム描画し、同じタスク内で canvas の内容を複製する
370
+ * (createImageBitmap は canvas を元にする場合、呼び出し時点の内容を複製する。preserveDrawingBuffer が無効の
371
+ * WebGL canvas は描画したタスクを抜けるとバッファがクリアされるため、描画と複製の間で await してはいけない)
347
372
  * OffscreenCanvas(Worker)では OffscreenDriver から RPC で呼び出され、ImageBitmap は transfer で返る
348
373
  * @param options.cameraPathProgress - 指定すると、描画の前にカメラパス上のこの位置(0.0 ~ 1.0)へ
349
374
  * イージングなしでカメラを移動する(カメラパスのコントロールが有効なときのみ反映される)。
@@ -275,6 +275,11 @@ export declare class TavioMesh extends EventEmitter {
275
275
  * 点描画用の Points インスタンスを返す
276
276
  */
277
277
  getPoints(): Points | null;
278
+ /**
279
+ * 指定のレンダービュー向けのソート(深度の焼き込みから並び順の反映まで)が進行中かどうかを返す
280
+ * @param renderViewName - レンダービューの名前
281
+ */
282
+ isSorting(renderViewName: string | Symbol): boolean;
278
283
  /**
279
284
  * メッシュのインスタンスを返す
280
285
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openheart/tavio-renderer",
3
- "version": "2.6.7",
3
+ "version": "2.6.9",
4
4
  "author": "OpenHeart Inc.",
5
5
  "license": "UNLICENSED",
6
6
  "description": "Rendering Engine for Tavio Format 3D data",