feat(render): implement Campaign AR and terrain fidelity

This commit is contained in:
Erik 2026-08-22 13:13:29 +02:00
parent 99cf26e00c
commit 7a5f96ede5
368 changed files with 50611 additions and 950 deletions

View file

@ -126,6 +126,12 @@ public sealed class VulkanShaderDescriptorContractTests
.SelectMany(ReadResources),
];
private static bool IsOptInPackShaderModule(string module) =>
module.StartsWith("atmospheric_", StringComparison.Ordinal)
|| module.StartsWith("directional_shadow_", StringComparison.Ordinal)
|| module.StartsWith("mesh_atmospheric.", StringComparison.Ordinal)
|| module.StartsWith("terrain_atmospheric.", StringComparison.Ordinal);
/// <summary>
/// The regression itself, named. <c>TerrainClip</c> is the only uniform block
/// <c>terrain_modern.vert</c> declares besides <c>SceneLighting</c>, so
@ -153,8 +159,8 @@ public sealed class VulkanShaderDescriptorContractTests
/// <summary>
/// The general rule the specific case is an instance of: a uniform block may
/// only live at a binding <see cref="VulkanPipelineLayouts.CreateUniformSetLayout"/>
/// actually declares, in the set it declares them in.
/// only live in retail set 1 at a retail binding, or in opt-in set 3 at one
/// of render-pack ABI v1's sparse bindings 5..8.
/// </summary>
[Fact]
public void EveryUniformBlockLandsAtADeclaredUniformBinding()
@ -164,13 +170,31 @@ public sealed class VulkanShaderDescriptorContractTests
.. AllResources()
.Where(r => r.StorageClass == SpirvStorageClass.Uniform)
.Where(r =>
r.Set != GpuBindingModel.UniformSet
|| r.Binding is null
|| !VulkanPipelineLayouts.IsDeclaredUniformBinding(r.Binding.Value))
r.Binding is null
|| !(r.Set == GpuBindingModel.UniformSet
&& VulkanPipelineLayouts.IsDeclaredUniformBinding(r.Binding.Value))
&& !(r.Set == GpuBindingModel.RenderPackUniformSet
&& VulkanPipelineLayouts.IsDeclaredPackUniformBinding(r.Binding.Value)))
.Select(r =>
$"{r.Module}: uniform block %{r.Id} is at set {r.Set?.ToString() ?? "(none)"} "
+ $"binding {r.Binding?.ToString() ?? "(none)"}; set 1 declares "
+ $"[{string.Join(", ", VulkanPipelineLayouts.DeclaredUniformBindings)}]."),
+ $"binding {r.Binding?.ToString() ?? "(none)"}; retail set 1 declares "
+ $"[{string.Join(", ", VulkanPipelineLayouts.DeclaredUniformBindings)}] "
+ "and opt-in set 3 declares [5, 6, 7, 8]."),
];
Assert.Empty(violations);
}
[Fact]
public void RetailShaderModulesNeverDeclareOptInSetThree()
{
string[] violations =
[
.. AllResources()
.Where(r => r.Set == GpuBindingModel.RenderPackUniformSet)
.Where(r => !IsOptInPackShaderModule(r.Module))
.Select(r =>
$"{r.Module}: resource %{r.Id} declares opt-in set 3 binding {r.Binding}."),
];
Assert.Empty(violations);