Commit 91426a21 authored by hybrid's avatar hybrid

New test for filtering 2d renders through 2dmaterial.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@3506 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 7988585f
......@@ -2,11 +2,14 @@
using namespace irr;
// This test renders a 3d scene and a gui on top of it. The GUI is
// filtered via 2dmaterial (blurred).
// TODO: Works only for OpenGL right now
static bool addBlend2d(video::E_DRIVER_TYPE type)
{
SIrrlichtCreationParameters params;
params.AntiAlias = 0;
params.Bits = 16;
params.AntiAlias = 2;
params.Bits = 32;
params.WindowSize = core::dimension2d<u32>(160, 120);
params.DriverType = type;
......@@ -21,6 +24,8 @@ static bool addBlend2d(video::E_DRIVER_TYPE type)
scene::IAnimatedMesh* mesh = smgr->getMesh("../media/sydney.md2");
if (!mesh)
{
device->closeDevice();
device->run();
device->drop();
return false;
}
......@@ -66,7 +71,6 @@ static bool addBlend2d(video::E_DRIVER_TYPE type)
material2D.TextureLayer[n].BilinearFilter = true;
material2D.TextureLayer[n].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
material2D.TextureLayer[n].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
material2D.TextureLayer[n].LODBias = 8;
}
material2D.AntiAliasing=video::EAAM_FULL_BASIC;
......@@ -77,7 +81,57 @@ static bool addBlend2d(video::E_DRIVER_TYPE type)
driver->enableMaterial2D(false);
driver->endScene();
bool result = takeScreenshotAndCompareAgainstReference(driver, "-addBlend2D.png", 98.66f);
bool result = takeScreenshotAndCompareAgainstReference(driver, "-addBlend2D.png");
device->closeDevice();
device->run();
device->drop();
return result;
}
// This test renders 4 times the same image. Two via IGUIImage, two via draw2DImage
// 3 of the 4 images are filtered via 2dmaterial and bilinear filter, only the one
// at the bottom left is not.
static bool moreFilterTests(video::E_DRIVER_TYPE type)
{
IrrlichtDevice* device = irr::createDevice(type, core::dimension2du(160,120));
if (!device)
return true;
video::IVideoDriver* driver = device->getVideoDriver();
gui::IGUIEnvironment* gui = device->getGUIEnvironment();
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
video::ITexture* tex = driver->getTexture("../media/irrlichtlogo.jpg");
gui::IGUIImage* image = gui->addImage(core::recti(0,0,64,64));
image->setScaleImage(true);
image->setImage(tex);
image->setUseAlphaChannel(true);
driver->getMaterial2D().TextureLayer[0].BilinearFilter=true;
{
driver->beginScene(true, true, irr::video::SColor(255,255,255,255));
// all three logos should be with bilinear filtering
driver->enableMaterial2D();
driver->getMaterial2D().setTexture(0, tex);
driver->draw2DImage(tex, irr::core::rect<irr::s32>(64, 64, 128, 128), irr::core::rect<irr::s32>(0, 0, 88, 31));
driver->getMaterial2D().setTexture(0, 0);
driver->draw2DImage(tex, irr::core::rect<irr::s32>(64, 0, 128, 64), irr::core::rect<irr::s32>(0, 0, 88, 31));
gui->drawAll();
// the next gui image should be without filter
driver->enableMaterial2D(false);
image->setRelativePosition(core::recti(0,64,64,128));
gui->drawAll();
driver->endScene();
}
bool result = takeScreenshotAndCompareAgainstReference(driver, "-2dmatFilter.png");
device->closeDevice();
device->run();
......@@ -91,5 +145,11 @@ bool twodmaterial()
result &= addBlend2d(video::EDT_DIRECT3D9);
result &= addBlend2d(video::EDT_DIRECT3D8);
result &= addBlend2d(video::EDT_BURNINGSVIDEO);
result &= moreFilterTests(video::EDT_OPENGL);
result &= moreFilterTests(video::EDT_DIRECT3D9);
result &= moreFilterTests(video::EDT_DIRECT3D8);
result &= moreFilterTests(video::EDT_BURNINGSVIDEO);
return result;
}
......@@ -112,7 +112,6 @@ int main(int argumentCount, char * arguments[])
TEST(twodmaterial);
TEST(viewPort);
TEST(mrt);
// TODO: Needs to be fixed first.
TEST(projectionMatrix);
// large scenes/long rendering
// shadows are slow
......
tests/media/Direct3D 9.0-addBlend2D.png

6.16 KB | W: | H:

tests/media/Direct3D 9.0-addBlend2D.png

5.98 KB | W: | H:

tests/media/Direct3D 9.0-addBlend2D.png
tests/media/Direct3D 9.0-addBlend2D.png
tests/media/Direct3D 9.0-addBlend2D.png
tests/media/Direct3D 9.0-addBlend2D.png
  • 2-up
  • Swipe
  • Onion skin
tests/media/OpenGL-addBlend2D.png

6.88 KB | W: | H:

tests/media/OpenGL-addBlend2D.png

6.25 KB | W: | H:

tests/media/OpenGL-addBlend2D.png
tests/media/OpenGL-addBlend2D.png
tests/media/OpenGL-addBlend2D.png
tests/media/OpenGL-addBlend2D.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -298,8 +298,8 @@ bool transparentMaterials(void)
result &= testTransparentAddColor(EDT_OPENGL);
result &= testTransparentAddColor(EDT_BURNINGSVIDEO);
result &= testTransparentReflection2Layer(EDT_DIRECT3D9);
result &= testTransparentReflection2Layer(EDT_OPENGL);
result &= testTransparentReflection2Layer(EDT_DIRECT3D9);
result &= testTransparentReflection2Layer(EDT_BURNINGSVIDEO);
result &= testTransparentVertexAlphaMore(EDT_DIRECT3D9);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment