From f5685a45e1bb0a4d1e6a3879d79e908000d06aaa Mon Sep 17 00:00:00 2001 From: Godzil Date: Wed, 4 Mar 2020 16:42:43 +0000 Subject: [PATCH] Add AlignCheck UV Pattern --- README.md | 5 ++- output/uvmap_aligncheckplane.png | Bin 0 -> 14364 bytes source/uvpattern/uv_aligncheck.h | 39 +++++++++++++++++++++ tests/CMakeLists.txt | 4 +++ tests/pattern_test.cpp | 37 ++++++++++++++++++++ tests/uvmap_aligncheckplane.cpp | 58 +++++++++++++++++++++++++++++++ 6 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 output/uvmap_aligncheckplane.png create mode 100644 source/uvpattern/uv_aligncheck.h create mode 100644 tests/uvmap_aligncheckplane.cpp diff --git a/README.md b/README.md index d076a69..1c19e59 100644 --- a/README.md +++ b/README.md @@ -90,4 +90,7 @@ Planar mapping: ![Planar mapping](output/uvmap_checkeredplane.png) Cylindrical mapping: -![Cylindrical mapping](output/uvmap_checkeredcylinder.png) \ No newline at end of file +![Cylindrical mapping](output/uvmap_checkeredcylinder.png) + +Aligncheck plane: +![Aligncheck plane](output/uvmap_aligncheckplane.png) \ No newline at end of file diff --git a/output/uvmap_aligncheckplane.png b/output/uvmap_aligncheckplane.png new file mode 100644 index 0000000000000000000000000000000000000000..c405781c661acd3a28a2d48ec350a0b9641cf8b9 GIT binary patch literal 14364 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 0.8) + { + if (u < 0.2) { return this->ul; } + if (u > 0.8) { return this->ur; } + } + else if (v < 0.2) + { + if (u < 0.2) { return this->bl; } + if (u > 0.8) { return this->br; } + } + + /* main is stored in A or B */ + return this->a; + }; +}; + + +#endif /* DORAYME_UV_ALIGNCHECK_H */ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2e6222f..9345318 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -83,6 +83,9 @@ target_sources(uvmap_checkeredplane PRIVATE uvmap_checkeredplane.cpp) add_executable(uvmap_checkeredcylinder) target_sources(uvmap_checkeredcylinder PRIVATE uvmap_checkeredcylinder.cpp) +add_executable(uvmap_aligncheckplane) +target_sources(uvmap_aligncheckplane PRIVATE uvmap_aligncheckplane.cpp) + add_test(NAME Chapter05_Test COMMAND $) add_test(NAME Chapter06_Test COMMAND $) add_test(NAME Chapter07_Test COMMAND $) @@ -99,6 +102,7 @@ add_test(NAME AreaLight_Test COMMAND $) add_test(NAME UVMap_CheckeredSphere COMMAND $) add_test(NAME UVMap_CheckeredPlane COMMAND $) add_test(NAME UVMap_CheckeredCylinder COMMAND $) +add_test(NAME UVMap_AlignCheckPlane COMMAND $) add_test(NAME Test_Rendering COMMAND $) add_test(NAME Triangle_RenderTest COMMAND $) add_test(NAME ChristmasBall_Rendering COMMAND $) diff --git a/tests/pattern_test.cpp b/tests/pattern_test.cpp index 5044c5e..82ba139 100644 --- a/tests/pattern_test.cpp +++ b/tests/pattern_test.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #ifdef ENABLE_LUA_SUPPORT @@ -429,4 +430,40 @@ TEST(PatternTest, Using_a_cylindrical_mapping_on_a_3d_point) ASSERT_TRUE(double_equal(u, testResults[i][0])); ASSERT_TRUE(double_equal(v, testResults[i][1])); } +} + +TEST(PatternTest, Layout_of_the_align_check_pattern) +{ + Colour main = Colour(1, 1, 1); + Colour ul = Colour(1, 0, 0); + Colour ur = Colour(1, 1, 0); + Colour bl = Colour(0, 1, 0); + Colour br = Colour(0, 1, 1); + + double testList[][2] = { + { 0.5, 0.5 }, + { 0.1, 0.9 }, + { 0.9, 0.9 }, + { 0.1, 0.1 }, + { 0.9, 0.1 }, + }; + + Colour testResults[] { + main, + ul, + ur, + bl, + br, + }; + + int testCount = sizeof(testList)/sizeof((testList)[0]); + int i; + + UVAlignCheck uvac = UVAlignCheck(main, ul, ur, bl, br); + + for(i = 0; i < testCount; i++) + { + Colour ret = uvac.uvPatternAt(testList[i][0], testList[i][1]); + ASSERT_EQ(ret, testResults[i]); + } } \ No newline at end of file diff --git a/tests/uvmap_aligncheckplane.cpp b/tests/uvmap_aligncheckplane.cpp new file mode 100644 index 0000000..b8412b3 --- /dev/null +++ b/tests/uvmap_aligncheckplane.cpp @@ -0,0 +1,58 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Render test for chapter 10 + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +int main() +{ + World w = World(); + + Light light = Light(POINT_LIGHT, Point(-10, 10, -10), Colour(1, 1, 1)); + w.addLight(&light); + + Plane sp = Plane(); + UVAlignCheck checkers = UVAlignCheck(Colour(1, 1, 1), + Colour(1, 0, 0), + Colour(1, 1, 0), + Colour(0, 1, 0), + Colour(0, 1, 1) + ); + TextureMap tm = TextureMap(PLANAR_MAP, &checkers); + sp.material.pattern = &tm; + sp.material.ambient = 0.1; + sp.material.diffuse = 0.8; + + w.addObject(&sp); + + /* Set the camera */ + Camera camera = Camera(400, 400, 0.5); + camera.setTransform(viewTransform(Point(1, 2, -5), + Point(0, 0, 0), + Vector(0, 1, 0))); + + /* Now render it */ + Canvas image = camera.render(w); + + image.SaveAsPNG("uvmap_aligncheckplane.png"); + + return 0; +} \ No newline at end of file