feat(render-parity): add deterministic frame comparison tool
- Introduced `render-parity` crate for comparing rendered frames against reference images. - Added command-line options for specifying manifest and output directory. - Implemented image comparison metrics: mean absolute difference, maximum absolute difference, and changed pixel ratio. - Created a configuration file `cases.toml` for defining test cases with global defaults and specific parameters. - Added functionality to capture frames from `render-demo` and save diff images on discrepancies. - Updated documentation to include usage instructions and CI model for automated testing.
This commit is contained in:
20
parity/README.md
Normal file
20
parity/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Render Parity Dataset
|
||||
|
||||
This folder stores parity-test input for `crates/render-parity`.
|
||||
|
||||
- `cases.toml`: list of deterministic render cases.
|
||||
- `reference/*.png`: baseline frames captured from the original renderer.
|
||||
|
||||
Expected workflow:
|
||||
|
||||
1. Capture baseline PNG frames from original game/editor for each case.
|
||||
2. Add entries to `cases.toml`.
|
||||
3. Run:
|
||||
|
||||
```bash
|
||||
cargo run -p render-parity -- \
|
||||
--manifest parity/cases.toml \
|
||||
--output-dir target/render-parity/current
|
||||
```
|
||||
|
||||
On failure, diff images are saved to `target/render-parity/current/diff`.
|
||||
27
parity/cases.toml
Normal file
27
parity/cases.toml
Normal file
@@ -0,0 +1,27 @@
|
||||
[meta]
|
||||
# Global defaults for all cases.
|
||||
width = 1280
|
||||
height = 720
|
||||
lod = 0
|
||||
group = 0
|
||||
angle = 0.0
|
||||
|
||||
# Per-pixel change threshold for the "changed pixel ratio" metric.
|
||||
diff_threshold = 8
|
||||
|
||||
# Allowed thresholds (case fails if any limit is exceeded).
|
||||
max_mean_abs = 2.0
|
||||
max_changed_ratio = 0.010
|
||||
|
||||
# Add one block per model.
|
||||
#
|
||||
# [[case]]
|
||||
# id = "animals_a_l_01"
|
||||
# archive = "../testdata/Parkan - Iron Strategy/animals.rlb"
|
||||
# model = "A_L_01.msh"
|
||||
# reference = "reference/animals_a_l_01.png"
|
||||
# lod = 0
|
||||
# group = 0
|
||||
# angle = 0.0
|
||||
# max_mean_abs = 2.0
|
||||
# max_changed_ratio = 0.010
|
||||
0
parity/reference/.gitkeep
Normal file
0
parity/reference/.gitkeep
Normal file
Reference in New Issue
Block a user