diff --git a/test/Materials.cpp b/test/Materials.cpp index c48758c516..e832af1fad 100644 --- a/test/Materials.cpp +++ b/test/Materials.cpp @@ -1535,6 +1535,70 @@ TEST_F(MaterialsTest, ParseNoShadowsFlag) EXPECT_EQ(material->getMaterialFlags() & Material::FLAG_NOSHADOWS, Material::FLAG_NOSHADOWS) << "Material should have noshadows set"; } +TEST_F(MaterialsTest, MaterialParserRemoteRenderMap) +{ + // Remote Render Map without map expression + auto material = GlobalMaterialManager().getMaterial("textures/parsertest/remoteRenderMap1"); + EXPECT_TRUE(material) << "Could not find the material textures/parsertest/remoteRenderMap1"; + + auto layers = material->getAllLayers(); + + EXPECT_EQ(layers.at(0)->getType(), IShaderLayer::BLEND); + EXPECT_EQ(layers.at(0)->getMapType(), IShaderLayer::MapType::RemoteRenderMap); + EXPECT_EQ(layers.at(0)->getRenderMapSize(), Vector2(232, 232)); + EXPECT_FALSE(layers.at(0)->getMapExpression()); + + // Remote Render Map with map expression + material = GlobalMaterialManager().getMaterial("textures/parsertest/remoteRenderMap2"); + EXPECT_TRUE(material) << "Could not find the material textures/parsertest/remoteRenderMap2"; + + layers = material->getAllLayers(); + + EXPECT_EQ(layers.at(0)->getType(), IShaderLayer::BLEND); + EXPECT_EQ(layers.at(0)->getMapType(), IShaderLayer::MapType::RemoteRenderMap); + EXPECT_EQ(layers.at(0)->getRenderMapSize(), Vector2(256, 128)); + EXPECT_TRUE(layers.at(0)->getMapExpression()); + EXPECT_EQ(layers.at(0)->getMapExpression()->getExpressionString(), "textures/common/mirror.tga"); +} + +TEST_F(MaterialsTest, MaterialParserMirrorRenderMap) +{ + // Mirror Render Map without map expression + auto material = GlobalMaterialManager().getMaterial("textures/parsertest/mirrorRenderMap1"); + EXPECT_TRUE(material) << "Could not find the material textures/parsertest/mirrorRenderMap1"; + + auto layers = material->getAllLayers(); + + EXPECT_EQ(layers.at(0)->getType(), IShaderLayer::BLEND); + EXPECT_EQ(layers.at(0)->getMapType(), IShaderLayer::MapType::MirrorRenderMap); + EXPECT_EQ(layers.at(0)->getRenderMapSize(), Vector2(256, 128)); + EXPECT_FALSE(layers.at(0)->getMapExpression()); + + // Mirror Render Map with map expression + material = GlobalMaterialManager().getMaterial("textures/parsertest/mirrorRenderMap2"); + EXPECT_TRUE(material) << "Could not find the material textures/parsertest/mirrorRenderMap2"; + + layers = material->getAllLayers(); + + EXPECT_EQ(layers.at(0)->getType(), IShaderLayer::BLEND); + EXPECT_EQ(layers.at(0)->getMapType(), IShaderLayer::MapType::MirrorRenderMap); + EXPECT_EQ(layers.at(0)->getRenderMapSize(), Vector2(256, 128)); + EXPECT_TRUE(layers.at(0)->getMapExpression()); + EXPECT_EQ(layers.at(0)->getMapExpression()->getExpressionString(), "textures/common/mirror.tga"); + + // Mirror Render Map without dimensions + material = GlobalMaterialManager().getMaterial("textures/parsertest/mirrorRenderMap3"); + EXPECT_TRUE(material) << "Could not find the material textures/parsertest/mirrorRenderMap3"; + + layers = material->getAllLayers(); + + EXPECT_EQ(layers.at(0)->getType(), IShaderLayer::BLEND); + EXPECT_EQ(layers.at(0)->getMapType(), IShaderLayer::MapType::MirrorRenderMap); + EXPECT_EQ(layers.at(0)->getRenderMapSize(), Vector2(0, 0)); + EXPECT_TRUE(layers.at(0)->getMapExpression()); + EXPECT_EQ(layers.at(0)->getMapExpression()->getExpressionString(), "textures/common/mirror.tga"); +} + TEST_F(MaterialsTest, ShaderExpressionEvaluation) { constexpr std::size_t TimeInMilliseconds = 200; diff --git a/test/resources/tdm/materials/parsertest.mtr b/test/resources/tdm/materials/parsertest.mtr index d2fdabb9b2..4ee6766652 100644 --- a/test/resources/tdm/materials/parsertest.mtr +++ b/test/resources/tdm/materials/parsertest.mtr @@ -1033,4 +1033,48 @@ textures/parsertest/noshadowsflag glass noShadows diffusemap _black +} + +textures/parsertest/remoteRenderMap1 +{ + { + red Parm0 + green Parm1 + blue Parm2 + remoteRenderMap 232 232 // width / height of render image, ie resolution of screen + } +} + +textures/parsertest/remoteRenderMap2 +{ + { + map textures/common/mirror.tga + remoteRenderMap 256 128 + } +} + +textures/parsertest/mirrorRenderMap1 +{ + { + blend blend + mirrorRenderMap 256 128 + } +} + +textures/parsertest/mirrorRenderMap2 +{ + { + blend blend + mirrorRenderMap 256 128 + map textures/common/mirror.tga + } +} + +textures/parsertest/mirrorRenderMap3 +{ + { + blend blend + map textures/common/mirror.tga + mirrorRenderMap + } } \ No newline at end of file