Skip to content

Commit

Permalink
#5565: Export texture quality flags
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Mar 26, 2021
1 parent bc16ae8 commit b232684
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 0 deletions.
16 changes: 16 additions & 0 deletions radiantcore/shaders/MaterialSourceGenerator.cpp
Expand Up @@ -90,6 +90,22 @@ std::ostream& operator<<(std::ostream& stream, Doom3ShaderLayer& layer)
stream << "\t\tlinear\n";
}

// Texture Quality
if (layer.getStageFlags() & IShaderLayer::FLAG_HIGHQUALITY)
{
stream << "\t\thighQuality\n";
}

if (layer.getStageFlags() & IShaderLayer::FLAG_FORCE_HIGHQUALITY)
{
stream << "\t\tforceHighQuality\n";
}

if (layer.getStageFlags() & IShaderLayer::FLAG_NO_PICMIP)
{
stream << "\t\tnopicmip\n";
}

stream << "\t}\n";

return stream;
Expand Down
29 changes: 29 additions & 0 deletions test/MaterialExport.cpp
Expand Up @@ -547,4 +547,33 @@ TEST_F(MaterialExportTest, TextureFilter)
expectDefinitionDoesNotContain(material, "linear");
}

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

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

auto layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND));
layer->setStageFlag(IShaderLayer::FLAG_HIGHQUALITY);
expectDefinitionContains(material, "highQuality");
expectDefinitionDoesNotContain(material, "uncompressed");

layer->clearStageFlag(IShaderLayer::FLAG_HIGHQUALITY);
expectDefinitionDoesNotContain(material, "highQuality");
expectDefinitionDoesNotContain(material, "uncompressed");

layer->setStageFlag(IShaderLayer::FLAG_FORCE_HIGHQUALITY);
expectDefinitionContains(material, "forceHighQuality");
expectDefinitionDoesNotContain(material, "highQuality");

layer->clearStageFlag(IShaderLayer::FLAG_FORCE_HIGHQUALITY);
expectDefinitionDoesNotContain(material, "forceHighQuality");

layer->setStageFlag(IShaderLayer::FLAG_NO_PICMIP);
expectDefinitionContains(material, "nopicmip");

layer->clearStageFlag(IShaderLayer::FLAG_NO_PICMIP);
expectDefinitionDoesNotContain(material, "nopicmip");
}

}
15 changes: 15 additions & 0 deletions test/Materials.cpp
Expand Up @@ -1000,4 +1000,19 @@ TEST_F(MaterialsTest, MaterialParserTextureFiltering)
EXPECT_NE(material->getAllLayers().front()->getStageFlags() & IShaderLayer::FLAG_FILTER_LINEAR, 0);
}

TEST_F(MaterialsTest, MaterialParserTextureQuality)
{
auto material = GlobalMaterialManager().getMaterial("textures/parsertest/texturequality/highquality");
EXPECT_NE(material->getAllLayers().front()->getStageFlags() & IShaderLayer::FLAG_HIGHQUALITY, 0);

material = GlobalMaterialManager().getMaterial("textures/parsertest/texturequality/uncompressed");
EXPECT_NE(material->getAllLayers().front()->getStageFlags() & IShaderLayer::FLAG_HIGHQUALITY, 0);

material = GlobalMaterialManager().getMaterial("textures/parsertest/texturequality/forcehighquality");
EXPECT_NE(material->getAllLayers().front()->getStageFlags() & IShaderLayer::FLAG_FORCE_HIGHQUALITY, 0);

material = GlobalMaterialManager().getMaterial("textures/parsertest/texturequality/nopicmip");
EXPECT_NE(material->getAllLayers().front()->getStageFlags() & IShaderLayer::FLAG_NO_PICMIP, 0);
}

}
37 changes: 37 additions & 0 deletions test/resources/tdm/materials/parsertest.mtr
Expand Up @@ -598,3 +598,40 @@ textures/parsertest/texturefilter/linear
linear
}
}

textures/parsertest/texturequality/highquality
{
{
blend diffusemap
map _white
highquality
}
}

// uncompressed is the same as highquality
textures/parsertest/texturequality/uncompressed
{
{
blend diffusemap
map _white
uncompressed
}
}

textures/parsertest/texturequality/forcehighquality
{
{
blend diffusemap
map _white
forcehighquality
}
}

textures/parsertest/texturequality/nopicmip
{
{
blend diffusemap
map _white
nopicmip
}
}

0 comments on commit b232684

Please sign in to comment.