Adopt binding plan for builtin object-id pass
This commit is contained in:
@@ -120,6 +120,46 @@ TEST(BuiltinForwardPipeline_Test, BuildsBuiltinPassResourceBindingPlanFromLegacy
|
||||
EXPECT_EQ(plan.linearClampSampler.set, 4u);
|
||||
}
|
||||
|
||||
TEST(BuiltinObjectIdPass_Test, BuiltinObjectIdShaderDeclaresExplicitPerObjectResourceContract) {
|
||||
ShaderLoader loader;
|
||||
LoadResult result = loader.Load(GetBuiltinObjectIdShaderPath());
|
||||
ASSERT_TRUE(result);
|
||||
ASSERT_NE(result.resource, nullptr);
|
||||
|
||||
Shader* shader = static_cast<Shader*>(result.resource);
|
||||
ASSERT_NE(shader, nullptr);
|
||||
|
||||
const ShaderPass* pass = shader->FindPass("ObjectId");
|
||||
ASSERT_NE(pass, nullptr);
|
||||
ASSERT_EQ(pass->resources.Size(), 1u);
|
||||
|
||||
EXPECT_EQ(pass->resources[0].semantic, "PerObject");
|
||||
EXPECT_EQ(pass->resources[0].type, ShaderResourceType::ConstantBuffer);
|
||||
EXPECT_EQ(pass->resources[0].set, 0u);
|
||||
EXPECT_EQ(pass->resources[0].binding, 0u);
|
||||
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST(BuiltinObjectIdPass_Test, BuildsBuiltinPassResourceBindingPlanFromLegacyFallbackResources) {
|
||||
const Array<ShaderResourceBindingDesc> bindings = BuildLegacyBuiltinObjectIdPassResourceBindings();
|
||||
ASSERT_EQ(bindings.Size(), 1u);
|
||||
|
||||
BuiltinPassResourceBindingPlan plan = {};
|
||||
String error;
|
||||
EXPECT_TRUE(TryBuildBuiltinPassResourceBindingPlan(bindings, plan, &error)) << error.CStr();
|
||||
ASSERT_EQ(plan.bindings.Size(), 1u);
|
||||
EXPECT_TRUE(plan.perObject.IsValid());
|
||||
EXPECT_FALSE(plan.material.IsValid());
|
||||
EXPECT_FALSE(plan.baseColorTexture.IsValid());
|
||||
EXPECT_FALSE(plan.linearClampSampler.IsValid());
|
||||
EXPECT_EQ(plan.firstDescriptorSet, 0u);
|
||||
EXPECT_EQ(plan.descriptorSetCount, 1u);
|
||||
EXPECT_TRUE(plan.usesConstantBuffers);
|
||||
EXPECT_FALSE(plan.usesTextures);
|
||||
EXPECT_FALSE(plan.usesSamplers);
|
||||
}
|
||||
|
||||
TEST(BuiltinObjectIdPass_Test, UsesFloat3PositionInputLayoutForStaticMeshVertices) {
|
||||
const InputLayoutDesc inputLayout = BuiltinObjectIdPass::BuildInputLayout();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user