プロジェクト

全般

プロフィール

機能 #357

完了

機能 #344: [Phase 4] レンダリングと UI/スキン描画

wgpu D3D12 初期化+DXGI flip-discard waitable swapchain

機能 #357: wgpu D3D12 初期化+DXGI flip-discard waitable swapchain

エージェント ちゃん さんが15日前に追加. 14日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/21
期日:
進捗率:

100%

予定工数:

説明

目的

低遅延描画の土台を作る。

スコープ

  • wgpu(D3D12 バックエンド)初期化、WGSL シェーダパイプライン
  • DXGI flip-discard + waitable swapchain で表示遅延最小化、提示モード切替

検証(Windows ホスト)

クリア描画/スワップ動作をホストで確認

担当

Claude 直(UI/描画)

エージェント ちゃん さんが14日前に更新 操作 #1

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/357-wgpu-d3d12-swapchain
  • 対応方針: ferrhythm-render に wgpu(DX12) 初期化基盤を新設。flip-discard + waitable swapchain は SurfaceConfiguration::desired_maximum_frame_latency = 1(wgpu DX12 が内部で waitable object を使用)で実現し、提示モード切替(Vsync/Mailbox/Immediate)と WGSL クリアパイプラインを実装。提示モード/フォーマット選択・サーフェス構成生成はプラットフォーム非依存層に切り出してコンテナで単体テスト、DX12 実体は Windows ホストで検証。

エージェント ちゃん さんが14日前に更新 操作 #2

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

低遅延描画の土台として ferrhythm-render に wgpu(DX12) 描画基盤を新設。DXGI flip-discard + フレームレイテンシ waitable swapchain で表示遅延を最小化し、提示モード切替と WGSL パイプラインを実装。併せてワークスペース全体の windows-rs を最新の 0.62 に統一。

変更点

  • 描画基盤: presentation.rs(プラットフォーム非依存・テスト可能な present mode フォールバック / フォーマット・アルファ選択 / フレームレイテンシ clamp / SurfaceConfiguration 生成)と renderer.rsRenderer、最小 WGSL fullscreen-triangle パイプライン、clear→draw→present、提示モード切替・resize)を新設。
  • waitable swapchain は安全 API の SurfaceConfiguration::desired_maximum_frame_latency = 1(DX12 で IDXGISwapChain2::SetMaximumFrameLatency = FRAME_LATENCY_WAITABLE_OBJECT 付き flip-discard swapchain に直結)で実現。
  • Windows ホスト検証用 example clear_window(実ウィンドウで clear/swap、全画面色切替で present 継続を可視化)。
  • windows-rs 0.58 → 0.62 統一: wgpu 29 が要求する windows 0.62 と旧 0.58 が衝突しホストで wgpu-hal DX12 ビルドが失敗したため、ワークスペース全体を最新 0.62 に統一(IMMDevice::Activate の feature 追加、CreateWindowExWOption<HWND> 化対応)。
  • 変更ファイル: crates/ferrhythm-render/{lib.rs, presentation.rs, renderer.rs, shaders/fullscreen.wgsl, examples/clear_window.rs, Cargo.toml}crates/ferrhythm-audio/Cargo.tomlcrates/ferrhythm/{Cargo.toml, src/main.rs}spikes/audio-latency/{Cargo.toml, src/rawinput.rs}Cargo.lock ほか

テスト

  • cargo test --workspace : 成功(ferrhythm-render に新規 21 件、既存全緑)
  • cargo clippy --workspace --all-targets -- -D warnings / cargo fmt --all -- --check : 成功
  • cargo check --target x86_64-pc-windows-gnu(audio / ferrhythm / render+examples): windows 0.62 で型チェック通過(wgpu-hal DX12 含む)
  • Windows ホスト実機確認: clear 描画 / スワップ / 提示モード切替 / リサイズ / 全画面色切替を確認済み

関連 MR

  • !20 (feature/357-wgpu-d3d12-swapchain → develop)

残課題 / 補足

  • マージされたコミットに確認用スクリーンショット image.png が誤って混入しているため、別途除去予定(クリーンアップ)。

他の形式にエクスポート: PDF Atom