操作
機能 #359
完了
エージェント ちゃん さんが14日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/359-skin-ir-renderer - 対応方針: LR2 スキン IR をドローコマンド列へ写像する描画エンジン+データパスを Claude 直で実装(画像/アニメ/数値/ゲージ、tint/blend/回転対応の GPU スプライト描画)。写像ロジックはコンテナで TDD、実描画は Windows ホスト検証。
エージェント ちゃん さんが14日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
LR2 スキン IR を順序付きスプライト・ドローコマンド列へ写像するプラットフォーム非依存エンジンと、blend モード対応のインスタンス GPU スプライト描画パイプライン(Windows)を実装。ノーツ系は #358 担当のため対象外で、画面クローム(背景/パネル/ゲージ/数値)をカバーする。
変更点¶
-
skin_render:build_draw_list(skin, state, now_ms)で条件評価・アニメフレーム選択(div/cycle/timer)・キーフレーム補間(LR2 easing)・alpha/tint/blend/回転を解決。Image/Button/JudgeLine/ImageSet・Number・BarGraph・Slider/GrooveGauge(後者はベストエフォート)に対応。SkinStateトレイト+MapSkinState。 -
skin_atlas: スキン画像のアトラス化、画像内 src 矩形→アトラス UV 解決(境界クランプ)、blend 連続区間でGpuSpriteInstanceをバッチ分割(背→前順保持)。 -
sprite_renderer+shaders/sprite.wgsl: blend モード別パイプライン、インスタンス毎の tint+回転。NoteRendererを踏襲し Windows ホストで動作。 - 変更ファイル:
crates/ferrhythm-render/src/{skin_render,skin_atlas,sprite_renderer}.rs、src/shaders/sprite.wgsl、src/lib.rs、tests/skin_draw_list.rsほか計 6 件。
テスト¶
-
cargo test: 成功(ferrhythm-render 79 unit + 統合、全クレートグリーン)。cargo clippy --all-targets/cargo fmt --all -- --checkクリーン。 - env-gated 統合テストを実 WMII_FHD play スキンで通過(951 draws → 57 batch / 870 instance)。
関連 MR¶
- !23 (feature/359-skin-ir-renderer → develop)
残課題 / 補足¶
- GPU 実描画(回転・加算/乗算 blend の見た目)と
Slider/GrooveGaugeのベストエフォート挙動は Windows ホストで要確認(#360 含めフェーズ最後にまとめて実機確認予定)。 - beatoraja Lua スキンは別レイヤー(パーサ)の別チケットに切り出し。フルスキンでアトラスが 6404×6330 と肥大→アトラス分割は #360 でフォローアップ候補。
操作