Generalize builtin pass resource binding plan
This commit is contained in:
@@ -10,6 +10,8 @@
|
||||
|
||||
using namespace XCEngine::Rendering::Pipelines;
|
||||
using namespace XCEngine::Rendering::Passes;
|
||||
using namespace XCEngine::Rendering;
|
||||
using namespace XCEngine::Containers;
|
||||
using namespace XCEngine::Resources;
|
||||
using namespace XCEngine::RHI;
|
||||
|
||||
@@ -76,6 +78,48 @@ TEST(BuiltinForwardPipeline_Test, BuiltinForwardShaderDeclaresExplicitForwardRes
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST(BuiltinForwardPipeline_Test, BuildsBuiltinPassResourceBindingPlanFromExplicitForwardResources) {
|
||||
ShaderLoader loader;
|
||||
LoadResult result = loader.Load(GetBuiltinForwardLitShaderPath());
|
||||
ASSERT_TRUE(result);
|
||||
ASSERT_NE(result.resource, nullptr);
|
||||
|
||||
Shader* shader = static_cast<Shader*>(result.resource);
|
||||
ASSERT_NE(shader, nullptr);
|
||||
|
||||
const ShaderPass* pass = shader->FindPass("ForwardLit");
|
||||
ASSERT_NE(pass, nullptr);
|
||||
|
||||
BuiltinPassResourceBindingPlan plan = {};
|
||||
String error;
|
||||
EXPECT_TRUE(TryBuildBuiltinPassResourceBindingPlan(pass->resources, plan, &error)) << error.CStr();
|
||||
EXPECT_TRUE(plan.perObject.IsValid());
|
||||
EXPECT_TRUE(plan.material.IsValid());
|
||||
EXPECT_TRUE(plan.baseColorTexture.IsValid());
|
||||
EXPECT_TRUE(plan.linearClampSampler.IsValid());
|
||||
EXPECT_EQ(plan.firstDescriptorSet, 1u);
|
||||
EXPECT_EQ(plan.descriptorSetCount, 4u);
|
||||
EXPECT_TRUE(plan.usesConstantBuffers);
|
||||
EXPECT_TRUE(plan.usesTextures);
|
||||
EXPECT_TRUE(plan.usesSamplers);
|
||||
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST(BuiltinForwardPipeline_Test, BuildsBuiltinPassResourceBindingPlanFromLegacyFallbackResources) {
|
||||
const Array<ShaderResourceBindingDesc> bindings = BuildLegacyBuiltinForwardPassResourceBindings();
|
||||
ASSERT_EQ(bindings.Size(), 4u);
|
||||
|
||||
BuiltinPassResourceBindingPlan plan = {};
|
||||
String error;
|
||||
EXPECT_TRUE(TryBuildBuiltinPassResourceBindingPlan(bindings, plan, &error)) << error.CStr();
|
||||
ASSERT_EQ(plan.bindings.Size(), 4u);
|
||||
EXPECT_EQ(plan.perObject.set, 1u);
|
||||
EXPECT_EQ(plan.material.set, 2u);
|
||||
EXPECT_EQ(plan.baseColorTexture.set, 3u);
|
||||
EXPECT_EQ(plan.linearClampSampler.set, 4u);
|
||||
}
|
||||
|
||||
TEST(BuiltinObjectIdPass_Test, UsesFloat3PositionInputLayoutForStaticMeshVertices) {
|
||||
const InputLayoutDesc inputLayout = BuiltinObjectIdPass::BuildInputLayout();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user