rendering: formalize unity-style shader pass contracts
This commit is contained in:
@@ -295,6 +295,30 @@ TEST(BuiltinForwardPipeline_Test, BuildsBuiltinPassResourceBindingPlanFromExplic
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST(BuiltinForwardPipeline_Test, BuildsBuiltinPassResourceBindingPlanFromImplicitForwardContract) {
|
||||
ShaderPass pass = {};
|
||||
pass.name = "ForwardLit";
|
||||
|
||||
ShaderPassTagEntry tag = {};
|
||||
tag.name = "LightMode";
|
||||
tag.value = "ForwardBase";
|
||||
pass.tags.PushBack(tag);
|
||||
|
||||
BuiltinPassResourceBindingPlan plan = {};
|
||||
String error;
|
||||
EXPECT_TRUE(TryBuildBuiltinPassResourceBindingPlan(pass, plan, &error)) << error.CStr();
|
||||
EXPECT_TRUE(plan.perObject.IsValid());
|
||||
EXPECT_TRUE(plan.lighting.IsValid());
|
||||
EXPECT_TRUE(plan.material.IsValid());
|
||||
EXPECT_TRUE(plan.shadowReceiver.IsValid());
|
||||
EXPECT_TRUE(plan.baseColorTexture.IsValid());
|
||||
EXPECT_TRUE(plan.linearClampSampler.IsValid());
|
||||
EXPECT_TRUE(plan.shadowMapTexture.IsValid());
|
||||
EXPECT_TRUE(plan.shadowMapSampler.IsValid());
|
||||
EXPECT_EQ(plan.firstDescriptorSet, 0u);
|
||||
EXPECT_EQ(plan.descriptorSetCount, 8u);
|
||||
}
|
||||
|
||||
TEST(BuiltinForwardPipeline_Test, BuildsBuiltinPassResourceBindingPlanFromExplicitUnlitResources) {
|
||||
ShaderLoader loader;
|
||||
LoadResult result = loader.Load(GetBuiltinUnlitShaderPath());
|
||||
@@ -529,6 +553,45 @@ TEST(BuiltinObjectIdPass_Test, BuildsBuiltinPassResourceBindingPlanFromExplicitO
|
||||
delete shader;
|
||||
}
|
||||
|
||||
TEST(BuiltinObjectIdPass_Test, BuildsBuiltinPassResourceBindingPlanFromImplicitObjectIdContract) {
|
||||
ShaderPass pass = {};
|
||||
pass.name = "ObjectId";
|
||||
|
||||
ShaderPassTagEntry tag = {};
|
||||
tag.name = "LightMode";
|
||||
tag.value = "ObjectId";
|
||||
pass.tags.PushBack(tag);
|
||||
|
||||
BuiltinPassResourceBindingPlan plan = {};
|
||||
String error;
|
||||
EXPECT_TRUE(TryBuildBuiltinPassResourceBindingPlan(pass, plan, &error)) << error.CStr();
|
||||
ASSERT_EQ(plan.bindings.Size(), 1u);
|
||||
EXPECT_TRUE(plan.perObject.IsValid());
|
||||
EXPECT_FALSE(plan.material.IsValid());
|
||||
EXPECT_EQ(plan.firstDescriptorSet, 0u);
|
||||
EXPECT_EQ(plan.descriptorSetCount, 1u);
|
||||
}
|
||||
|
||||
TEST(BuiltinDepthStylePass_Test, BuildsBuiltinPassResourceBindingPlanFromImplicitDepthOnlyContract) {
|
||||
ShaderPass pass = {};
|
||||
pass.name = "DepthOnly";
|
||||
|
||||
ShaderPassTagEntry tag = {};
|
||||
tag.name = "LightMode";
|
||||
tag.value = "DepthOnly";
|
||||
pass.tags.PushBack(tag);
|
||||
|
||||
BuiltinPassResourceBindingPlan plan = {};
|
||||
String error;
|
||||
EXPECT_TRUE(TryBuildBuiltinPassResourceBindingPlan(pass, 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, 0u);
|
||||
EXPECT_EQ(plan.descriptorSetCount, 4u);
|
||||
}
|
||||
|
||||
TEST(BuiltinObjectIdPass_Test, UsesFloat3PositionInputLayoutForStaticMeshVertices) {
|
||||
const InputLayoutDesc inputLayout = BuiltinObjectIdPass::BuildInputLayout();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user