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>
389 lines
10 KiB
JSON
389 lines
10 KiB
JSON
{
|
|
"note": "Campaign V slice V6c. Regenerate with tools/compile-shaders.ps1.",
|
|
"shaders": [
|
|
{
|
|
"name": "atmospheric_bloom_blur",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "81222e42a52d0b560f5916b0f312bcc5370e42e596c821477d71c61883c3d025",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "4b22872f61b462cdbc82d4af38c7693212bc7446c7c68faa32dd5585b08c43ae",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmospheric_bloom_downsample",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "81222e42a52d0b560f5916b0f312bcc5370e42e596c821477d71c61883c3d025",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "a01f09dfcc62acc5376f6e61be6aa2e8c5b0506550c0fa318f4434cbf3e6a17a",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmospheric_filmic",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "81222e42a52d0b560f5916b0f312bcc5370e42e596c821477d71c61883c3d025",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "240d2fe5e13e3850ceb79f178f1c248c71875fdc1973ff8cab1c274660ebbc4b",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmospheric_sun_occlusion",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "c21f381f2de05afc4415b2e348884a3cf6440da279b57d9a05a5d6ae5e9ac453",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "bfbc8c508b21dec84b21b2760877bfcb736c4f233e8557f6d1f8b83600683d5e",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmospheric_sun_rays",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "81222e42a52d0b560f5916b0f312bcc5370e42e596c821477d71c61883c3d025",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "13875d9f6fd28f1049d1f94741db13086f72cc7170659eb73c369b4c99b00a4f",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmospheric_volumetric",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "81222e42a52d0b560f5916b0f312bcc5370e42e596c821477d71c61883c3d025",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "0195fa5fdfb3850e090bed6f144981d454edfed526b79efe8dd5300b610b2f0f",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "debug_line",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "069ef7c89eea80c68e28f44b9e065c5cd3cc9220e8ba63261d345377025c2ea1",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "5db0714b88329f2465f4b8b949116e4295e37bf17360d81c108eacccb102a336",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "directional_shadow_terrain",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "e863894aa1d66508daad86806af2b2a3509088109754c491a3607477f78ed644",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "2b9ebbabc96c3ba53ce58cea175c52932c81d1d93820550f29a0734131dba5a3",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "directional_shadow_terrain_multiview",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "2f7d7bba3aa19a4891c30000e29c0bb84a2afdc26a44248d4c48bd0ffed8a04a",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "2b9ebbabc96c3ba53ce58cea175c52932c81d1d93820550f29a0734131dba5a3",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "directional_shadow_world_cutout",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "8331583c1d63ee59b3f7898e25b2e9730df98fd9da28273661caad948fb46ae5",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "cd9c404a9379715061358cb18a99b9310acbdd5062f0ad982ee9a37cd9f99922",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "directional_shadow_world_cutout_multiview",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "a4bb3b86283af310a22d3943dd1afadb8a72b42c9e5501efc9abf2b5124a1446",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "cd9c404a9379715061358cb18a99b9310acbdd5062f0ad982ee9a37cd9f99922",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "directional_shadow_world_opaque",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "c2586df5f09518c40d052bbacdfff2c00a82b1eefec4868749d0580571198067",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "2b9ebbabc96c3ba53ce58cea175c52932c81d1d93820550f29a0734131dba5a3",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "directional_shadow_world_opaque_multiview",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "35b4d524153623691ab523a049212aa35551f96c169c28c08f62d93e31d9e68d",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "2b9ebbabc96c3ba53ce58cea175c52932c81d1d93820550f29a0734131dba5a3",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "mesh_atmospheric",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "d4f8bc12ee84379ced84f5b703cf8be95798a23a7063773e214bc1eb6ebbb65e",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "62b001a72080ea74bdaef0fb2a4ed92533feaeab76187ce4215813c6327432e7",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "mesh_detail",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "3b03a153a439aa54fcd0bcb575274c8e1da888b8ae85ee15fae020ccb1d3bf49",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "e037fd28cf71453792c17522c97c4c7797193823ed78ca629a4331b632f177b1",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "mesh_modern",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "2c37aa0fd1ee4af5ee1f6541b00e6a7226d4173988e748b1fb1c271b0a9b91b2",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "12f2ceec9a8420bd273650e95251ca56c3bf3c3691fce1a539e4c5aea7abaabf",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "particle",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "921c32617708b3931a6304b4697ee96d728077d96f489d6c09eea4c5fe225b63",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "6f2a5769670087bf58b0c1a7a007c1853952354dfd9106973656311bcbb855cd",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "particle_mesh",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "19db8757c1a61a2fbec8e56ce89d56b6dd6d66a123cedcdae40915af07d58c0e",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "73c8db72aeb44e88054dd79fd722c7f683b27a8bc03368b5201f05adffd92728",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "portal_depth",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "6214fc04936d92320594acb722e63f1cd1f7106dd4d0af60ed985abc2a50c4a9",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "711ba97649f27f890f0cad5f355552fd8f707cbe801af4ac14afbee1b8f800c9",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "sky",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "a89580f54c8d36b33d50b84b9fb61024861c737bb0b5bd7a4df0704bf010c3c3",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "2ddf210d69b0c4a3c0870eecfb0ccba2097d93b365729739402bfe91e3b120d0",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "terrain_atmospheric",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "06258c7ead0e123740e325c802156987ed17dabe355d591d0e90facb420b8e04",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "9927abe9cc4fb83429d3e2ec8ee8d13f0b1936cebf484a4e529dcfdab431c3b8",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "terrain_modern",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "a3f8592d482793622f7a69c08f8ba828a4e071f2fb5e1763f865be84797bceb7",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "a9f0ad2e679b68ee2de6c4877202f6f5e5089d0f7368fcedd6048891c6848915",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ui_text",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "4ddc52f18ea953b33e9263dc2703397f63f4b104bc45d67edc06531145bd9d53",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "43cb53aa8c933f7800142b72ea81bafc923fd7039fd460022d55543081d0aee5",
|
|
"compiled": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "vk_probe",
|
|
"vulkanReady": true,
|
|
"stages": [
|
|
{
|
|
"stage": "vert",
|
|
"sourceSha256": "1f3f73aa4e9448c36f3b577e63b2142815736a4195bbc4395e1d674a9be92f43",
|
|
"compiled": true
|
|
},
|
|
{
|
|
"stage": "frag",
|
|
"sourceSha256": "8093adcacb925258ea79371a3ac3415de4f270f95eb12a621c759912992a5614",
|
|
"compiled": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|