2013-11-10 20:14:10 +00:00
|
|
|
#include "BaseTestCase.h"
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-11-10 16:03:07 +00:00
|
|
|
#include <cmath>
|
2013-12-09 10:59:57 +00:00
|
|
|
#include "SoftwareRenderer.h"
|
2013-11-14 17:47:03 +00:00
|
|
|
#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"
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
static Color _postProcessFragment(SoftwareRenderer*, Vector3 location, void*)
|
2013-05-28 12:56:50 +00:00
|
|
|
{
|
|
|
|
/* 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))
|
2013-05-28 12:56:50 +00:00
|
|
|
{
|
|
|
|
return COLOR_WHITE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return COLOR_BLACK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-10 20:14:10 +00:00
|
|
|
TEST(Render, quad)
|
2013-05-28 12:56:50 +00:00
|
|
|
{
|
2013-06-14 11:39:45 +00:00
|
|
|
Color col;
|
2013-12-09 10:59:57 +00:00
|
|
|
SoftwareRenderer renderer;
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
renderer.render_width = 800;
|
|
|
|
renderer.render_height = 600;
|
|
|
|
renderer.render_quality = 1;
|
|
|
|
renderer.render_area->setToneMapping(ColorProfile(ColorProfile::TONE_MAPPING_CLAMP, 0.0));
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
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);
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
RenderArea::RenderParams params = {renderer.render_width, renderer.render_height, 1, 1};
|
|
|
|
renderer.render_area->setParams(params);
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
renderer.render_area->setBackgroundColor(COLOR_BLUE);
|
|
|
|
renderer.render_area->clear();
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
renderer.pushQuad(v3(-1.0, 0.0, 1.0), v3(-1.0, 0.0, -1.0), v3(1.0, 0.0, -1.0), v3(1.0, 0.0, 1.0), _postProcessFragment, NULL);
|
|
|
|
renderer.render_area->postProcess(System::getCoreCount());
|
2013-05-28 12:56:50 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
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);
|
2013-12-09 10:59:57 +00:00
|
|
|
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);
|
2013-12-09 10:59:57 +00:00
|
|
|
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);
|
2013-12-09 10:59:57 +00:00
|
|
|
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);
|
2013-06-14 11:39:45 +00:00
|
|
|
|
2013-12-09 10:59:57 +00:00
|
|
|
renderer.render_area->saveToFile("./output/test_render_quad.png");
|
2013-05-28 12:56:50 +00:00
|
|
|
}
|