feat(render): implement Campaign AR and terrain fidelity
This commit is contained in:
parent
99cf26e00c
commit
7a5f96ede5
368 changed files with 50611 additions and 950 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue