From 25a49f52d8e41196814a88b15dedbdb10ff7b553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Thu, 20 Jun 2013 12:33:18 +0200 Subject: [PATCH] Added rendering tests for bruneton aerial paerspective --- src/rendering/render.c | 2 +- src/testing/main.c | 2 + src/testing/test_bruneton.c | 81 +++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/testing/test_bruneton.c diff --git a/src/rendering/render.c b/src/rendering/render.c index 4f0e74e..b27bccc 100644 --- a/src/rendering/render.c +++ b/src/rendering/render.c @@ -682,7 +682,7 @@ void renderPostProcess(RenderArea* area, int nbchunks) loops = 0; while ((y < ny && !area->renderer->render_interrupt) || running > 0) { - timeSleepMs(100); + timeSleepMs(50); for (i = 0; i < nbchunks; i++) { diff --git a/src/testing/main.c b/src/testing/main.c index e220580..4b3bc0d 100644 --- a/src/testing/main.c +++ b/src/testing/main.c @@ -11,6 +11,7 @@ extern void test_clouds_case(Suite* s); extern void test_render_case(Suite* s); extern void test_noise_case(Suite* s); extern void test_terrain_painting_case(Suite* s); +extern void test_bruneton_case(Suite* s); int main(int argc, char** argv) { @@ -28,6 +29,7 @@ int main(int argc, char** argv) test_render_case(s); test_noise_case(s); test_terrain_painting_case(s); + test_bruneton_case(s); SRunner *sr = srunner_create(s); srunner_run_all(sr, CK_NORMAL); diff --git a/src/testing/test_bruneton.c b/src/testing/test_bruneton.c new file mode 100644 index 0000000..f4d98cf --- /dev/null +++ b/src/testing/test_bruneton.c @@ -0,0 +1,81 @@ +#include "testing/common.h" +#include "rendering/system.h" +#include "rendering/scenery.h" + +#define OUTPUT_WIDTH 400 +#define OUTPUT_HEIGHT 300 + +static Color _postProcessFragment(Renderer* renderer, Vector3 location, void* data) +{ + return renderer->atmosphere->applyAerialPerspective(renderer, location, COLOR_BLACK).final; +} + +START_TEST(testBrunetonAerialPerspective) +{ + Renderer* renderer = sceneryCreateStandardRenderer(); + renderer->render_width = 800; + renderer->render_height = 600; + renderer->render_quality = 1; + + cameraSetLocation(renderer->render_camera, VECTOR_ZERO); + cameraSetTarget(renderer->render_camera, VECTOR_EAST); + cameraSetRenderSize(renderer->render_camera, renderer->render_width, renderer->render_height); + + RenderParams params = {renderer->render_width, renderer->render_height, 1, 1}; + renderSetParams(renderer->render_area, params); + renderSetBackgroundColor(renderer->render_area, &COLOR_BLACK); + renderClear(renderer->render_area); + + renderer->pushQuad(renderer, v3(50.0, -10.0, -50.0), v3(1.0, -10.0, -50.0), v3(1.0, -10.0, 50.0), v3(50.0, -10.0, 50.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(10.0, -10.0, -10.0), v3(10.0, -10.0, -5.0), v3(10.0, 50.0, -5.0), v3(10.0, 50.0, -10.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(15.0, -10.0, -5.0), v3(15.0, -10.0, 0.0), v3(15.0, 50.0, 0.0), v3(15.0, 50.0, -5.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(20.0, -10.0, 5.0), v3(20.0, -10.0, 10.0), v3(20.0, 50.0, 10.0), v3(20.0, 50.0, 5.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(30.0, -10.0, 25.0), v3(30.0, -10.0, 30.0), v3(30.0, 50.0, 30.0), v3(30.0, 50.0, 25.0), _postProcessFragment, NULL); + renderPostProcess(renderer->render_area, tests_cpu_count); + + renderSaveToFile(renderer->render_area, "./output/test_bruneton_perspective.png"); + + rendererDelete(renderer); +} +END_TEST + +START_TEST(testBrunetonAerialPerspective1) +{ + AtmosphereDefinition* atmo = AtmosphereDefinitionClass.create(); + sceneryGetAtmosphere(atmo); + atmo->hour = 6; + atmo->minute = 30; + scenerySetAtmosphere(atmo); + AtmosphereDefinitionClass.destroy(atmo); + + Renderer* renderer = sceneryCreateStandardRenderer(); + renderer->render_width = 800; + renderer->render_height = 600; + renderer->render_quality = 1; + + cameraSetLocation(renderer->render_camera, VECTOR_ZERO); + cameraSetTarget(renderer->render_camera, VECTOR_EAST); + cameraSetRenderSize(renderer->render_camera, renderer->render_width, renderer->render_height); + + RenderParams params = {renderer->render_width, renderer->render_height, 1, 1}; + renderSetParams(renderer->render_area, params); + renderSetBackgroundColor(renderer->render_area, &COLOR_BLACK); + renderClear(renderer->render_area); + + renderer->pushQuad(renderer, v3(50.0, -10.0, -50.0), v3(1.0, -10.0, -50.0), v3(1.0, -10.0, 50.0), v3(50.0, -10.0, 50.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(10.0, -10.0, -10.0), v3(10.0, -10.0, -5.0), v3(10.0, 50.0, -5.0), v3(10.0, 50.0, -10.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(15.0, -10.0, -5.0), v3(15.0, -10.0, 0.0), v3(15.0, 50.0, 0.0), v3(15.0, 50.0, -5.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(20.0, -10.0, 5.0), v3(20.0, -10.0, 10.0), v3(20.0, 50.0, 10.0), v3(20.0, 50.0, 5.0), _postProcessFragment, NULL); + renderer->pushQuad(renderer, v3(30.0, -10.0, 25.0), v3(30.0, -10.0, 30.0), v3(30.0, 50.0, 30.0), v3(30.0, 50.0, 25.0), _postProcessFragment, NULL); + renderPostProcess(renderer->render_area, tests_cpu_count); + + renderSaveToFile(renderer->render_area, "./output/test_bruneton_perspective1.png"); + + rendererDelete(renderer); +} +END_TEST + +TEST_CASE(bruneton, + testBrunetonAerialPerspective, + testBrunetonAerialPerspective1) +