操作
機能 #358
完了
操作
機能 #344: [Phase 4] レンダリングと UI/スキン描画
エージェント ちゃん さんが15日前に追加. 14日前に更新.
実装に着手しました。
feature/358-note-instanced-atlas
ferrhythm-timing の TimingMap によるサンプルクロック導出を使用(beat_to_sample で曲フレーム位置→プレイヘッドからの相対で画面 y を導出)。samples/skin/WMII_FHD の実ノート画像。スキン IR(#351)からノート系 SRC/レーン配置(DST_NOTE)を読み、実 PNG をデコードしてアトラス化。samples/bms/...)を ferrhythm-chart で解析→TimingMap→実ノートを流す example を追加。atlas(プラットフォーム非依存・TDD): RGBA スプライト群を 1 枚のアトラスへ shelf パッキングし、正規化 UV 矩形を返す。notefield(非依存・TDD): レーン幾何+ノート曲フレーム+プレイヘッド+ハイスピードから、可視ノートのインスタンス列を導出(サンプルクロック導出の中核)。LN は head/tail/body を生成。skin_layout(非依存・skin IR 依存・TDD): Skin IR からノートフィールド幾何(レーン x/幅・判定ライン y)とノートスプライト矩形を抽出(note のみ。全要素は #359)。note_renderer(wgpu・コンテナで型検査/ホストで実行): アトラステクスチャ+インスタンス化矩形を 1 ドローで描画する WGSL パイプライン。examples/note_flow.rs(ホスト検証): WMII_FHD スキン+実 BMS を読み、アトラス/レーン構築・プレイヘッドを進めてノート流れを present。コンテナ検証=atlas/notefield/skin_layout のユニットテスト+wgpu 型検査+cargo check --target x86_64-pc-windows-gnu。実描画(DX12 実体・present・実画像表示)は Windows ホスト検証。
対応が完了しました。
#357 の wgpu/DX12 描画基盤の上に、LR2 スキン(WMII_FHD)の実ノート画像をテクスチャアトラスへパックし、1 ドローコールのインスタンス描画で流れるノートを描くノートフィールド描画サブシステムを新設。ノート位置は ferrhythm-timing の TimingMap によるサンプルクロック導出を使用。背景/ゲージ等スキン全体の IR レンダラは #359 に委ねた。
atlas(非依存・TDD): RGBA スプライト群を 1 枚のアトラスへ shelf パッキングし正規化 UV を返す。notefield(非依存・TDD): サンプルフレーム+プレイヘッド+スクロール速度から画面 y を導出(スクロールの中核)。tap/mine/LN(head/body/tail) 生成と画面外カリング。skin_layout(非依存・TDD): スキン IR からノートフィールド(レーン x/幅・判定ライン y・ロール別スプライト矩形)を抽出。(object_id, role) で SRC を引き可視 DST をレーン化。note_renderer(Windows・コンテナで型検査/ホストで実行): インスタンス化テクスチャ矩形パイプライン+アトラスアップロード。shaders/notes.wgsl / examples/note_flow.rs(ホスト検証): WMII_FHD+実 BMS を読みノート流れを present。image、render に dev-deps(image/ferrhythm-chart/ferrhythm-timing)追加。crates/ferrhythm-render/src/{atlas,notefield,skin_layout,note_renderer,lib}.rs・shaders/notes.wgsl・examples/note_flow.rs・tests/skin_note_field.rs・Cargo.tomlほか計 11 件。cargo test : 成功(ワークスペース全緑、render lib 49 件。実スキン統合テストは env 駆動で 16レーン抽出→実PNGアトラス化を検証)。cargo clippy --all-targets -- -D warnings / cargo fmt --all -- --check : 成功(Linux/x86_64-pc-windows-gnu 両ターゲット)。