fix(render): jitter the volumetric march per pixel (IGN); file #421 for the shadow transform buffer (Campaign VM VM5)
Fixed step-count volumetric ray marches (Low/Medium presets, e.g. 40 steps) sample the same t values at every pixel, so a shadow-cascade edge crossing lands at the same march step across a whole neighbourhood of pixels and reads as visible concentric banding around light shafts. Offset each pixel's march phase with interleaved gradient noise (Jimenez 2014, fract(52.9829189 * fract(dot(gl_FragCoord.xy, vec2(0.06711056, 0.00583715))))) instead of the fixed 0.5 sub-step center: t = (step + ign) / steps. This decorrelates the step boundaries across pixels, turning the banding into fine per-pixel noise that the existing quarter/half-res upsample already averages away. Pack-on only — atmospheric_volumetric is never used on the retail default path; extinction, colour, and early-outs are unchanged. Regenerated SPIR-V via tools/compile-shaders.ps1: only atmospheric_volumetric.frag.spv and shaders.manifest.json's source hash for that stage changed. Also files #421 (docs/ISSUES.md) for Campaign AR review finding F7: the directional-shadow pass's DirectionalShadowTransformBufferSet duplicates the main pass's N.5 instance SSBO instead of binding it, to be resolved once the planned GPU-culling step for shadow cascades lands. Updates the VM5 ledger row and outcome note in docs/plans/2026-08-22-visualmaster-campaign.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
6e76314b08
commit
b1e9912535
5 changed files with 42 additions and 3 deletions
|
|
@ -81,7 +81,7 @@ single-pass path darkens by ~10 %. Neither explains a scene-wide level.
|
|||
| VM2 | F3 — which retail detail path ran | **CLOSED 2026-08-22** — single-pass; see [cdb note](../research/2026-08-22-vm2-retail-detail-path-cdb.md) |
|
||||
| VM3 | F4 — linear-light post stack | automated + **owner visual** |
|
||||
| VM4 | F5 — overclaiming docs, incl. the reviewer's own | **CLOSED 2026-08-22** |
|
||||
| VM5 | F8 — volumetric banding; F7 filed | automated |
|
||||
| VM5 | F8 — volumetric banding; F7 filed | **CLOSED 2026-08-22** (#421) |
|
||||
| VM6 | Foliage wind | automated + **owner visual** |
|
||||
| VM7 | Closeout: full gates, register, roadmap, merge | **owner** |
|
||||
|
||||
|
|
@ -252,6 +252,9 @@ Add the VM0 numbers as the new baseline table. Docs only; no code.
|
|||
- File issue: the shadow pass uploads a second transform buffer; a future
|
||||
GPU-culling step should bind the main pass's instance SSBO. Not built here.
|
||||
|
||||
**OUTCOME (2026-08-22):** IGN jitter landed in atmospheric_volumetric.frag
|
||||
(pack-on only); F7 filed as #421.
|
||||
|
||||
## VM6 — Foliage wind (the feature)
|
||||
|
||||
### What "real movement" means here
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue