Make wear and jitter tuning knobs honest about their ranges - #1244
Conversation
Review findings on the tuning surface: - The shader saturated wearStrength, so the shipped 1.5 default silently behaved as 1.0 and overrides above 1.0 were no-ops. Drop the clamp (plain multiplier like its siblings) and set the default to 1.0 — the same effective value the goldens and installed review approved. - Seed-only gloss variation (roughness offset, specular gain) ignored highlightJitter, so zeroing both knobs could not restore the uniform baseline. Gate both terms with min(highlightJitter, 1): identical at the shipped default, fully off at zero. - Cover all gpuVectorE and vignetteVector lanes in the packing test. Metal goldens compare unchanged, confirming no visual drift at the shipped defaults. Co-Authored-By: Claude Fable 5 <[email protected]>
|
Reviewed the diff — one clear issue plus one worth double-checking. Test file has duplicate assertions (KeyboardStageTuningTests.swift)
Looks like a copy/paste slip when appending the new Unbounded The roughness expression a few lines up is still bounded by the surrounding |
Summary
Follow-up to #1243, addressing its review findings (the PR auto-merged on the flaky-test re-run before these landed):
saturate()onwearStrength(the 1.5 default silently behaved as 1.0; default is now an honest 1.0 — the exact effective value the approved goldens rendered)min(highlightJitter, 1)so zeroing the knobs fully restores the uniform baseline; identical output at shipped defaultsgpuVectorE/vignetteVectorlanes in the packing testReview gate
remote review gate selected— GitHubclaude-reviewis the enforced reviewer.Testing
🤖 Generated with Claude Code