paysages3d/src/tests/Render_Test.cpp

66 lines
1.9 KiB
C++
Raw Normal View History

2013-11-10 20:14:10 +00:00
#include "BaseTestCase.h"
2013-11-10 16:03:07 +00:00
#include <cmath>
#include "SoftwareRenderer.h"
#include "CameraDefinition.h"
2013-11-19 11:51:26 +00:00
#include "ColorProfile.h"
2013-11-10 20:14:10 +00:00
#include "System.h"
static Color _postProcessFragment(SoftwareRenderer*, Vector3 location, void*)
{
/* Checker-board */
double x = fmod(location.x, 0.2);
double z = fmod(location.z, 0.2);
if (x < 0.0)
{
x = 0.2 + x;
}
if (z < 0.0)
{
z = 0.2 + z;
}
2013-05-28 14:25:29 +00:00
if ((x > 0.1) ^ (z > 0.1))
{
return COLOR_WHITE;
}
else
{
return COLOR_BLACK;
}
}
2013-11-10 20:14:10 +00:00
TEST(Render, quad)
{
Color col;
SoftwareRenderer renderer;
renderer.render_width = 800;
renderer.render_height = 600;
renderer.render_quality = 1;
renderer.render_area->setToneMapping(ColorProfile(ColorProfile::TONE_MAPPING_CLAMP, 0.0));
renderer.render_camera->setLocationCoords(0.0, 0.5, 2.0);
renderer.render_camera->setTargetCoords(0.0, 0.5, 0.0);
renderer.render_camera->setRenderSize(renderer.render_width, renderer.render_height);
RenderArea::RenderParams params = {renderer.render_width, renderer.render_height, 1, 1};
renderer.render_area->setParams(params);
renderer.render_area->setBackgroundColor(COLOR_BLUE);
renderer.render_area->clear();
2013-12-11 10:32:10 +00:00
renderer.pushQuad(Vector3(-1.0, 0.0, 1.0), Vector3(-1.0, 0.0, -1.0), Vector3(1.0, 0.0, -1.0), Vector3(1.0, 0.0, 1.0), _postProcessFragment, NULL);
renderer.render_area->postProcess(System::getCoreCount());
col = renderer.render_area->getPixel(399, 599 - 435);
2013-11-10 20:14:10 +00:00
ASSERT_COLOR_RGBA(col, 1.0, 1.0, 1.0, 1.0);
col = renderer.render_area->getPixel(399, 599 - 436);
2013-11-10 20:14:10 +00:00
ASSERT_COLOR_RGBA(col, 0.0, 0.0, 0.0, 1.0);
col = renderer.render_area->getPixel(400, 599 - 435);
2013-11-10 20:14:10 +00:00
ASSERT_COLOR_RGBA(col, 0.0, 0.0, 0.0, 1.0);
col = renderer.render_area->getPixel(400, 599 - 436);
2013-11-10 20:14:10 +00:00
ASSERT_COLOR_RGBA(col, 1.0, 1.0, 1.0, 1.0);
renderer.render_area->saveToFile("./output/test_render_quad.png");
}