From 74c8f3d8bd2695a9d4c7d24cfe3165c81e8e61dd Mon Sep 17 00:00:00 2001 From: codereader Date: Fri, 5 Aug 2022 09:28:29 +0200 Subject: [PATCH] #6052: mirrorRenderMap and RemoteRenderMap are allowed to have map expressions in their stage block --- .../shaders/MaterialSourceGenerator.cpp | 14 +++++++++++++ test/MaterialExport.cpp | 20 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/radiantcore/shaders/MaterialSourceGenerator.cpp b/radiantcore/shaders/MaterialSourceGenerator.cpp index 602881c75b..27ef3e3e76 100644 --- a/radiantcore/shaders/MaterialSourceGenerator.cpp +++ b/radiantcore/shaders/MaterialSourceGenerator.cpp @@ -316,10 +316,24 @@ void writeBlendMap(std::ostream& stream, Doom3ShaderLayer& layer) case IShaderLayer::MapType::MirrorRenderMap: stream << "\t\tmirrorRenderMap " << static_cast(layer.getRenderMapSize().x()) << ", " << static_cast(layer.getRenderMapSize().y()) << "\n"; + + // Mirror render stages are allowed to have map expressions + if (mapExpr) + { + stream << "\t\tmap " << (mapExpr ? mapExpr->getExpressionString() : "") << "\n"; + } + break; case IShaderLayer::MapType::RemoteRenderMap: stream << "\t\tremoteRenderMap " << static_cast(layer.getRenderMapSize().x()) << ", " << static_cast(layer.getRenderMapSize().y()) << "\n"; + + // Remote render stages are allowed to have map expressions + if (mapExpr) + { + stream << "\t\tmap " << (mapExpr ? mapExpr->getExpressionString() : "") << "\n"; + } + break; case IShaderLayer::MapType::VideoMap: { diff --git a/test/MaterialExport.cpp b/test/MaterialExport.cpp index 17603f5b4c..8f9eac38c6 100644 --- a/test/MaterialExport.cpp +++ b/test/MaterialExport.cpp @@ -498,10 +498,30 @@ TEST_F(MaterialExportTest, StageMaps) material->revertModifications(); + // Mirror Render Map with extra map expression + layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND)); + layer->setMapType(IShaderLayer::MapType::MirrorRenderMap); + layer->setMapExpressionFromString("textures/common/mirror.tga"); + layer->setRenderMapSize(Vector2(512, 256)); + expectDefinitionContains(material, "mirrorRenderMap 512, 256"); + expectDefinitionContains(material, "map textures/common/mirror.tga"); + + material->revertModifications(); + + layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND)); + layer->setMapType(IShaderLayer::MapType::RemoteRenderMap); + layer->setRenderMapSize(Vector2(512, 256)); + expectDefinitionContains(material, "remoteRenderMap 512, 256"); + + material->revertModifications(); + + // Remote Render Map with extra map expression layer = material->getEditableLayer(material->addLayer(IShaderLayer::BLEND)); layer->setMapType(IShaderLayer::MapType::RemoteRenderMap); layer->setRenderMapSize(Vector2(512, 256)); + layer->setMapExpressionFromString("textures/remoteRender.tga"); expectDefinitionContains(material, "remoteRenderMap 512, 256"); + expectDefinitionContains(material, "map textures/remoteRender.tga"); material->revertModifications();