Navigation Menu

Skip to content

Commit

Permalink
#5565: Export alphatest
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Mar 26, 2021
1 parent c7eba3a commit 3ae66b7
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 0 deletions.
6 changes: 6 additions & 0 deletions radiantcore/shaders/MaterialSourceGenerator.cpp
Expand Up @@ -79,6 +79,12 @@ std::ostream& operator<<(std::ostream& stream, Doom3ShaderLayer& layer)
} // switch
}

// Alpha Test
if (layer.hasAlphaTest())
{
stream << "\t\talphaTest " << layer.getAlphaTestExpression()->getExpressionString() << "\n";
}

// Texture Filter
if (layer.getStageFlags() & IShaderLayer::FLAG_FILTER_NEAREST)
{
Expand Down
24 changes: 24 additions & 0 deletions test/MaterialExport.cpp
Expand Up @@ -880,4 +880,28 @@ TEST_F(MaterialExportTest, StageTransforms)
expectDefinitionDoesNotContainAnyOf(material, { "shear", "centerScale", "scroll" });
}


TEST_F(MaterialExportTest, StageAlphaTest)
{
auto material = GlobalMaterialManager().getMaterial("textures/exporttest/empty");

EXPECT_EQ(string::trim_copy(material->getDefinition()), "");

auto layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND));
layer->setAlphaTestExpressionFromString("sinTable[time]");
expectDefinitionContains(material, "alphaTest sinTable[time]");

material->revertModifications();

layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND));
layer->setAlphaTestExpressionFromString("0.775");
expectDefinitionContains(material, "alphaTest 0.775");

material->revertModifications();

layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND));
layer->setAlphaTestExpressionFromString("");
expectDefinitionDoesNotContain(material, "alphaTest");
}

}
15 changes: 15 additions & 0 deletions test/Materials.cpp
Expand Up @@ -1213,4 +1213,19 @@ TEST_F(MaterialsTest, MaterialParserStagePrivatePolygonOffset)
EXPECT_EQ(material->getAllLayers().at(0)->getPrivatePolygonOffset(), -45.9f);
}

TEST_F(MaterialsTest, MaterialParserStageAlphaTest)
{
auto material = GlobalMaterialManager().getMaterial("textures/parsertest/transform/notransform");
EXPECT_FALSE(material->getAllLayers().at(0)->hasAlphaTest());
EXPECT_EQ(material->getAllLayers().at(0)->getAlphaTest(), 0.0f);

material = GlobalMaterialManager().getMaterial("textures/parsertest/alphaTest");

auto layer = material->getAllLayers().at(0);
layer->evaluateExpressions(0);
EXPECT_TRUE(layer->hasAlphaTest());
EXPECT_EQ(layer->getAlphaTest(), 0.0f); // sinTable[0] evaluates to 0.0
EXPECT_EQ(layer->getAlphaTestExpression()->getExpressionString(), "sinTable[time]");
}

}
9 changes: 9 additions & 0 deletions test/resources/tdm/materials/parsertest.mtr
Expand Up @@ -886,3 +886,12 @@ textures/parsertest/privatePolygonOffset
privatePolygonOffset -45.9
}
}

textures/parsertest/alphaTest
{
{
blend diffusemap
map _white
alphaTest sinTable[time]
}
}

0 comments on commit 3ae66b7

Please sign in to comment.