rendering: formalize legacy shader pass fallback
This commit is contained in:
@@ -459,7 +459,7 @@ TEST(RenderSceneExtractor_Test, FallsBackToEmbeddedMeshMaterialsWhenRendererHasN
|
||||
delete mesh;
|
||||
}
|
||||
|
||||
TEST(RenderMaterialUtility_Test, MatchesBuiltinForwardLitPassMetadata) {
|
||||
TEST(RenderMaterialUtility_Test, LegacyMaterialPassHintsCanDriveBuiltinPassMatching) {
|
||||
Material forwardMaterial;
|
||||
forwardMaterial.SetShaderPass("ForwardLit");
|
||||
forwardMaterial.SetTag("LightMode", "ForwardBase");
|
||||
@@ -478,7 +478,7 @@ TEST(RenderMaterialUtility_Test, MatchesBuiltinForwardLitPassMetadata) {
|
||||
EXPECT_FALSE(MatchesBuiltinPass(&depthOnlyMaterial, BuiltinMaterialPass::ForwardLit));
|
||||
}
|
||||
|
||||
TEST(RenderMaterialUtility_Test, MatchesBuiltinUnlitDepthAndObjectIdPassMetadata) {
|
||||
TEST(RenderMaterialUtility_Test, LegacyMaterialPassHintsSupportUnlitDepthAndObjectId) {
|
||||
Material unlitMaterial;
|
||||
unlitMaterial.SetShaderPass("Unlit");
|
||||
EXPECT_TRUE(MatchesBuiltinPass(&unlitMaterial, BuiltinMaterialPass::Unlit));
|
||||
@@ -525,6 +525,52 @@ TEST(RenderMaterialUtility_Test, ExplicitShaderPassMetadataDisablesImplicitForwa
|
||||
EXPECT_TRUE(MatchesBuiltinPass(&material, BuiltinMaterialPass::Unlit));
|
||||
}
|
||||
|
||||
TEST(RenderMaterialUtility_Test, ShaderMetadataOverridesConflictingLegacyMaterialPassHints) {
|
||||
Material material;
|
||||
auto* shader = new Shader();
|
||||
|
||||
ShaderPass forwardPass = {};
|
||||
forwardPass.name = "ForwardLit";
|
||||
shader->AddPass(forwardPass);
|
||||
|
||||
material.SetShader(ResourceHandle<Shader>(shader));
|
||||
material.SetShaderPass("ShadowCaster");
|
||||
material.SetTag("LightMode", "DepthOnly");
|
||||
|
||||
EXPECT_TRUE(MatchesBuiltinPass(&material, BuiltinMaterialPass::ForwardLit));
|
||||
EXPECT_FALSE(MatchesBuiltinPass(&material, BuiltinMaterialPass::ShadowCaster));
|
||||
EXPECT_FALSE(MatchesBuiltinPass(&material, BuiltinMaterialPass::DepthOnly));
|
||||
}
|
||||
|
||||
TEST(RenderMaterialUtility_Test, LegacyMaterialPassHintsRemainAvailableForShadersWithoutBuiltinMetadata) {
|
||||
Material material;
|
||||
auto* shader = new Shader();
|
||||
|
||||
ShaderPass defaultPass = {};
|
||||
defaultPass.name = "Default";
|
||||
shader->AddPass(defaultPass);
|
||||
|
||||
material.SetShader(ResourceHandle<Shader>(shader));
|
||||
material.SetShaderPass("ShadowCaster");
|
||||
|
||||
EXPECT_FALSE(MatchesBuiltinPass(&material, BuiltinMaterialPass::ForwardLit));
|
||||
EXPECT_TRUE(MatchesBuiltinPass(&material, BuiltinMaterialPass::ShadowCaster));
|
||||
}
|
||||
|
||||
TEST(RenderMaterialUtility_Test, ShadersWithoutBuiltinMetadataKeepImplicitForwardFallback) {
|
||||
Material material;
|
||||
auto* shader = new Shader();
|
||||
|
||||
ShaderPass defaultPass = {};
|
||||
defaultPass.name = "Default";
|
||||
shader->AddPass(defaultPass);
|
||||
|
||||
material.SetShader(ResourceHandle<Shader>(shader));
|
||||
|
||||
EXPECT_TRUE(MatchesBuiltinPass(&material, BuiltinMaterialPass::ForwardLit));
|
||||
EXPECT_FALSE(MatchesBuiltinPass(&material, BuiltinMaterialPass::Unlit));
|
||||
}
|
||||
|
||||
TEST(RenderMaterialUtility_Test, ResolvesBuiltinForwardMaterialContractFromCanonicalNamesAndAliases) {
|
||||
Material canonicalMaterial;
|
||||
canonicalMaterial.SetFloat4("baseColor", Vector4(0.2f, 0.4f, 0.6f, 0.8f));
|
||||
|
||||
Reference in New Issue
Block a user