Skip to content

fix: #96 detail_loss の apply 経路を GLSL/中心点方式に統一し等価テストを追加#116

Merged
kako-jun merged 4 commits into
mainfrom
96-detail-loss-apply-equivalence
May 26, 2026
Merged

fix: #96 detail_loss の apply 経路を GLSL/中心点方式に統一し等価テストを追加#116
kako-jun merged 4 commits into
mainfrom
96-detail-loss-apply-equivalence

Conversation

@kako-jun
Copy link
Copy Markdown
Owner

関連 Issue

closes #96

問題

apply(Filter::DetailLoss) が呼ぶ detail_loss_with_cell_size だけがタイル平均アルゴリズムで、GLSL シェーダ detail_loss.frag(universal-experience の Flutter 表示経路=正本)と detail_loss(strength 版)が実装する中心点サンプリングと乖離していた。さらに shader_equivalence テストは別関数(中心点版)を検証しており、apply 経路の関数は CPU↔GLSL 等価が無検証だった。

変更内容

  • detail_loss_with_cell_size をタイル平均→タイル中心点サンプリングに統一(シェーダ・strength 版と同一アルゴリズムに)
  • apply 経路に対する CPU↔GLSL 等価テストを追加(cell_size=7/20、非正方形 64×32/32×64、cell_size=0 identity、画像超過、互いに素な cell_size、alpha 保存)
  • shader_equivalence: 53→59 件

検証

  • cargo test 全通過(shader_equivalence 59 / core 259 / その他 integration 全 ok)
  • cargo clippy --all-targets --all-features 警告ゼロ

kako-jun added 4 commits May 26, 2026 17:48
apply(Filter::DetailLoss) / pipeline が呼ぶ detail_loss_with_cell_size を
タイル内全ピクセル linear sRGB 平均からタイル中心点サンプリング(pixelation)に変更。
これで GLSL シェーダ(detail_loss.frag = universal-experience の表示経路 = 正本)・
等価テスト済みの detail_loss・公開 API(apply 経由)の3者が同一アルゴリズムになった。
以前は apply 経路だけ別アルゴリズム(全平均)で、CPU↔GLSL 等価テストが存在しなかった。

- detail_loss_with_cell_size を中心点サンプリングに統一(正本 = GLSL シェーダ)
- apply 経路の関数に対する CPU↔GLSL 等価テストを追加:
  shader_equiv_apply_detail_loss_cpu_gpu_psnr(cell_size=7 半端境界、PSNR >= 60 dB)、
  shader_equiv_apply_detail_loss_cell_size_20_psnr(cell_size=20、PSNR >= 60 dB)。
  中心点サンプリング用シミュレータ sim_detail_loss_shader_cell を追加
- detail_loss.frag / detail_loss / detail_loss_with_cell_size の doc を統一後の事実に更新

detail_loss(strength 導出版)と detail_loss_with_cell_size(cell_size 直接指定版)は
同一アルゴリズムでタイルサイズの決め方だけが異なる正当な公開バリアントのため、
削除や deprecation はせず両方残す。
@kako-jun kako-jun merged commit fcf785d into main May 26, 2026
2 of 3 checks passed
@kako-jun kako-jun deleted the 96-detail-loss-apply-equivalence branch May 26, 2026 08:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: detail_loss — apply() が呼ぶ関数が等価テスト未検証(別関数を検証している)

1 participant