Material Comparison UI
Run
Compare specific outputs: python scripts/integration_v2/compare.py outputs/v1 outputs/v2
Pick from a directory (landing page): python scripts/integration_v2/compare.py --scan-dir outputs
Views & Shortcuts
- Side-by-side: Columns per version.
- Toggle: One stack; press t to cycle versions.
- Press s to jump back to side-by-side.
Controls
- Size slider (100–600px) and mode toggle in the top bar.
- Sections: one button per section type folds/unfolds it across every asset at once. Click any section or asset header to fold just that one, or drag across headers to fold a run of them.
- ⚙ Filters: asset types (materials/displacements/objects/scenes), renderer (cycles/eevee), align placeholders on/off. Normals and exports are handled by section folding, not filters.
- Materials: select/deselect, include per-version, union vs intersection.
- Selections persist when switching views.
Layout
Each asset's images are grouped into foldable sections:
- Random seeds: the per-seed rgb renders.
- Presets: fixed-look variants, shown beneath their parent
_rand.
- Normals: the default-setting (Cycles, DISPLACEMENT_AND_BUMP) surface normals, one per seed, so they line up as a row under Random seeds. Folded by default.
- Exports: non-default render settings — BUMP and REALIZE_MESH displacement, plus the Eevee variant. Each keeps its own normals alongside its rgb rather than joining the Normals row. Materials only for now; other asset types get export tests later. Folded by default.
Missing renders show a dark “Missing” placeholder when alignment is on. Assets not rendered on the PR side are folded to the bottom.