From 57eff4830e43762f4008bb5f3821ec99fa1e433a Mon Sep 17 00:00:00 2001 From: Godzil Date: Fri, 6 Mar 2020 21:55:32 +0000 Subject: [PATCH] Sample scene for CSG \o/ --- README.md | 74 ++++++++++--------------- output/ch16_test.png | Bin 0 -> 114143 bytes source/canvas.cpp | 8 +-- source/include/csg.h | 2 + source/intersection.cpp | 2 +- source/shapes/csg.cpp | 5 ++ source/shapes/group.cpp | 4 +- source/shapes/light.cpp | 1 - source/shapes/objfile.cpp | 1 - tests/ch16_test.cpp | 111 ++++++++++++++++++++++++++++++++++---- tests/cylinder_test.cpp | 2 +- tests/plane_test.cpp | 1 - tests/test_render.cpp | 2 +- tests/uvmap_skybox.cpp | 2 +- tests/world_test.cpp | 4 +- 15 files changed, 147 insertions(+), 72 deletions(-) create mode 100644 output/ch16_test.png diff --git a/README.md b/README.md index db89468..8acde64 100644 --- a/README.md +++ b/README.md @@ -17,101 +17,83 @@ as texture, also use [NanoJPEG](https://keyj.emphy.de/nanojpeg/) to use jpeg fil Examples outputs ---------------- -**From chapter 05 - Sphere intersections:** - +#### From chapter 05 - Sphere intersections: ![Chapter 5 rendering test](output/ch5_test.png) -**From Chapter 06 - Phong shading:** - +#### From Chapter 06 - Phong shading: ![Chapter 6 rendering test](output/ch6_test.png) -**From Chapter 07 - World / Camera / Scenes:** - +#### From Chapter 07 - World / Camera / Scenes: ![Chapter 7 rendering test](output/ch7_test.png) -**From Chapter 08 - Shadows:** - +#### From Chapter 08 - Shadows: ![Chapter 8 rendering test](output/ch8_test.png) -**From Chapter 09 - Planes:** - +#### From Chapter 09 - Planes: ![Chapter 9 rendering test](output/ch9_test.png) -**From Chapter 10 - Patterns:** - +#### From Chapter 10 - Patterns: ![Chapter 10 rendering test](output/ch10_test.png) -**From Chapter 11 - Reflections, Transparency & Refractions:** - +#### From Chapter 11 - Reflections, Transparency & Refractions: ![Chapter 11 reflections rendering test](output/ch11_reflection.png) -Bonus: Zooming on a reflective ball: +###### Bonus: Zooming on a reflective ball: ![Chapter 11 zooming on a ball](output/ch11_zooming_on_reflective_ball.png) -Zooming on a reflection on that ball: +###### Zooming on a reflection on that ball: ![Chapter 11 zooming on a reflection](output/ch11_reflection_on_ball.png) ![Chapter 11 refraction rendering test](output/ch11_refraction.png) ![Chapter 11 rendering test](output/ch11_test.png) -**From Chapter 12 - Cubes:** - +#### From Chapter 12 - Cubes: ![Chapter 12 rendering test](output/ch12_test.png) -**From Chapter 13 - Cylinders:** - +#### From Chapter 13 - Cylinders: ![Chapter 13 rendering test](output/ch13_test.png) -Bonus: +###### Bonus: ![Chapter 13 cone test](output/ch13_cone.png) -**From Chapter 14 - Groups & Bounding boxes:** +#### From Chapter 14 - Groups & Bounding boxes: ![Chapter 14 rendering test](output/ch14_test.png) -**From Chapter 15 - Triangles, Wavefrom OBJ files - Smooth trianges:** +#### From Chapter 15 - Triangles, Wavefrom OBJ files - Smooth trianges: ![Chapter 15 Triangles and teapots](output/ch15_teapot_objfile.png) -**Bonus (from the forum):** +#### From Chapter 16 - Constructive Solid Geomety: +![Chapter 16 CSG](output/ch16_test.png) +#### Bonus (from the forum): [Merry Christmas](https://forum.raytracerchallenge.com/thread/16/merry-christmas-scene-description) ![Merry Christmas](output/christmasball.png) - (about 1min render time using OpenMP on a 2.6Ghz Core i7 3720QM) -**Bonus chapter - Soft shadow / Area light** - -Without jitter: +#### Bonus chapter - Soft shadow / Area light +###### Without jitter: ![Area light without jitter](output/arealight_test_nojitter.png) - -With jitter: +###### With jitter: ![Area light witht jitter](output/arealight_test.png) -**Bonus chapter - Texture mapping** - -Spherical mapping: - +#### Bonus chapter - Texture mapping +###### Spherical mapping: ![Spherical mapping](output/uvmap_checkeredsphere.png) -Planar mapping: - +######Planar mapping: ![Planar mapping](output/uvmap_checkeredplane.png) -Cylindrical mapping: - +###### Cylindrical mapping: ![Cylindrical mapping](output/uvmap_checkeredcylinder.png) -Aligncheck plane: - +###### Aligncheck plane: ![Aligncheck plane](output/uvmap_aligncheckplane.png) -Cubical mapping: - +###### Cubical mapping: ![Cubical mapping](output/uvmap_checkeredcube.png) -Image mapping: - +###### Image mapping: ![Image mapping](output/uvmap_earth.png) -Skybox: - +###### Skybox: ![Skybox](output/uvmap_skybox.png) \ No newline at end of file diff --git a/output/ch16_test.png b/output/ch16_test.png new file mode 100644 index 0000000000000000000000000000000000000000..c385d3b8a604ba5d66f502834222d0aefe647fdf GIT binary patch literal 114143 zcmY(KV{~0@w6?>>X>2yOZQHi3#Z%8F7*@ObcGU|>ix(&DOMV34O^VBin15TL)1$|m}Nfp?e6h>NIufnRFKWDQa` zR^^3@MEY#>d^$jFAG&&0(CaJ*kw}TFJDxWxNQx_dzMg!3ysQm=29&dmB=N(rL@-OM z2@4~H-%5oCt>i&}$KEfb3RBj!aQRq^Lsd&94`t`*htU

`>LpiQHKxR8%{9;mzr4@HFJk?-4uE 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 z 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 RAAkV=WF-|P>cxyh{|`TrLyZ6c literal 0 HcmV?d00001 diff --git a/source/canvas.cpp b/source/canvas.cpp index 208eb46..e4f03bb 100644 --- a/source/canvas.cpp +++ b/source/canvas.cpp @@ -132,12 +132,12 @@ Canvas::~Canvas() } } -void Canvas::putPixel(uint32_t x, uint32_t y, Tuple colour) +void Canvas::putPixel(uint32_t x, uint32_t y, Tuple c) { uint32_t offset = y * this->stride + x * BytePP; - this->bitmap[offset + 0] = MAX(MIN(colour.x * 255, 255), 0); - this->bitmap[offset + 1] = MAX(MIN(colour.y * 255, 255), 0); - this->bitmap[offset + 2] = MAX(MIN(colour.z * 255, 255), 0); + this->bitmap[offset + 0] = MAX(MIN(c.x * 255, 255), 0); + this->bitmap[offset + 1] = MAX(MIN(c.y * 255, 255), 0); + this->bitmap[offset + 2] = MAX(MIN(c.z * 255, 255), 0); } Colour Canvas::getPixel(uint32_t x, uint32_t y) diff --git a/source/include/csg.h b/source/include/csg.h index 51f505f..4b34400 100644 --- a/source/include/csg.h +++ b/source/include/csg.h @@ -42,6 +42,8 @@ protected: public: CSG(OperationType operation, Shape *left, Shape *right); + Intersect intersect(Ray r); + bool includes(Shape *b); void updateTransform(); diff --git a/source/intersection.cpp b/source/intersection.cpp index 20d0249..a63e1f5 100644 --- a/source/intersection.cpp +++ b/source/intersection.cpp @@ -45,7 +45,7 @@ Computation Intersection::prepareComputation(Ray r, Intersect *xs) if ((xs != nullptr) && (xs->hit().object->material.transparency > 0)) { List containers; - int j, k; + int j; for (j = 0 ; j < xs->count() ; j++) { diff --git a/source/shapes/csg.cpp b/source/shapes/csg.cpp index ce11bc7..5d193c0 100644 --- a/source/shapes/csg.cpp +++ b/source/shapes/csg.cpp @@ -40,6 +40,11 @@ Intersect CSG::localIntersect(Ray r) return ret; } +Intersect CSG::intersect(Ray r) +{ + return localIntersect(r); +} + Tuple CSG::localNormalAt(Tuple point, Intersection *hit) { return Vector(1, 0, 0); diff --git a/source/shapes/group.cpp b/source/shapes/group.cpp index d040135..2839e18 100644 --- a/source/shapes/group.cpp +++ b/source/shapes/group.cpp @@ -18,11 +18,11 @@ Group::Group() : Shape(SHAPE_GROUP) { stats.addGroup(); this->allocatedObjectCount = MIN_ALLOC; - this->objectList = (Shape **)calloc(sizeof(Shape *), MIN_ALLOC); + this->objectList = (Shape **)calloc(sizeof(Shape **), MIN_ALLOC); this->objectCount = 0; this->allocatedUnboxableObjectCount = MIN_ALLOC; - this->unboxableObjectList = (Shape **)calloc(sizeof(Shape *), MIN_ALLOC); + this->unboxableObjectList = (Shape **)calloc(sizeof(Shape **), MIN_ALLOC); this->unboxableObjectCount = 0; } diff --git a/source/shapes/light.cpp b/source/shapes/light.cpp index 5cb5ecb..ff7d5b8 100644 --- a/source/shapes/light.cpp +++ b/source/shapes/light.cpp @@ -41,7 +41,6 @@ double Light::intensityAt(World &w, Tuple point) } } return total / this->samples; - break; } } diff --git a/source/shapes/objfile.cpp b/source/shapes/objfile.cpp index 2db80ae..2b68c1a 100644 --- a/source/shapes/objfile.cpp +++ b/source/shapes/objfile.cpp @@ -299,7 +299,6 @@ static int parseFaceVertex(char *buf, uint32_t &v, uint32_t &vt, uint32_t &vn) { uint32_t bufPos = 0; uint32_t lineLength = strlen(buf); - char *tmp = buf; vt = INT32_MAX; vn = INT32_MAX; int ret = 0; diff --git a/tests/ch16_test.cpp b/tests/ch16_test.cpp index 56e2589..101249a 100644 --- a/tests/ch16_test.cpp +++ b/tests/ch16_test.cpp @@ -33,21 +33,37 @@ int main() World w = World(); /* Add lights */ - Light light1 = Light(POINT_LIGHT, Point(100, 100, -100), Colour(1, 1, 1)); + Light light1 = Light(POINT_LIGHT, Point(6, 10, 10), Colour(0.5, 0.4, 0.5)); w.addLight(&light1); + /* Add lights */ + Light light2 = Light(POINT_LIGHT, Point(6, 10, -2.5), Colour(0.5, 0.6, 0.5)); + w.addLight(&light2); + /* ----------------------------- */ - /* White background */ + /* Floor */ Plane p = Plane(); - p.setTransform(translation(0, 0, 100) * rotationX(1.5708)); - p.material.colour = Colour(1, 1, 1); - p.material.ambient = 1; - p.material.diffuse = 0; + CheckersPattern checkered = CheckersPattern(Colour(0.35, 0.35, 0.35), Colour(0.4, 0.4, 0.4)); + p.material.pattern = &checkered; + p.material.ambient = 0.2; + p.material.diffuse = 1; p.material.specular = 0; + p.material.reflective = 0.1; + p.setTransform(translation(0, 0, 0)); w.addObject(&p); + Plane p2 = Plane(); + p2.setTransform(translation(0, 0, -3) * rotationX(M_PI/2)); + p2.material.pattern = &checkered; + p2.material.ambient = 0.2; + p2.material.diffuse = 1; + p2.material.specular = 0; + w.addObject(&p2); + /* ----------------------------- */ + + /* Funky cube */ Cylinder c1 = Cylinder(); c1.minCap = -2; c1.maxCap = 2; @@ -77,22 +93,95 @@ int main() CSG leaf2 = CSG(CSG::UNION, &leaf1, &c3); Cube cb = Cube(); - //cb.materialSet = true; - //cb.material.reflective = 1; + cb.materialSet = true; + cb.material.reflective = 0.5; + cb.material.colour = Colour(0.3, 0.3, 0.3); + cb.material.ambient = 0; + cb.material.diffuse = 0.3; + cb.material.specular = 0.3; + cb.material.shininess = 20; Sphere sp = Sphere(); sp.setTransform(scaling(1.35, 1.35, 1.35)); + sp.materialSet = true; + sp.material.colour = Colour(0, 0, 0); + sp.material.ambient = 0; + sp.material.specular = 0.3; + sp.material.shininess = 20; + sp.material.reflective = 0.05; + sp.material.diffuse = 0.3; CSG leaf3 = CSG(CSG::INTERSECTION, &sp, &cb); CSG leaf4 = CSG(CSG::DIFFERENCE, &leaf3, &leaf2); - + leaf4.setTransform(translation(0, 1, 0.8) * rotationY(-0.45)); w.addObject(&leaf4); /* ----------------------------- */ + /* Tricylinder weirdy */ + Cylinder sp1 = Cylinder(); + sp1.minCap = -2; + sp1.maxCap = 2; + sp1.isClosed = true; + sp1.materialSet = true; + sp1.material.colour = Colour(1, 0, 0); + Cylinder sp2 = Cylinder(); + sp2.minCap = -2; + sp2.maxCap = 2; + sp2.isClosed = true; + sp2.materialSet = true; + sp2.setTransform(rotationX(M_PI/2)); + sp2.material.colour = Colour(0, 1, 0); + Cylinder sp3 = Cylinder(); + sp3.minCap = -2; + sp3.maxCap = 2; + sp3.isClosed = true; + sp3.materialSet = true; + sp3.setTransform(rotationZ(M_PI/2)); + sp3.material.colour = Colour(0, 0, 1); + + CSG spleaf1 = CSG(CSG::INTERSECTION, &sp1, &sp2); + CSG spleaf2 = CSG(CSG::INTERSECTION, &spleaf1, &sp3); + + spleaf2.setTransform(translation(4, 1, -0.1) * rotationY(0.35)); + w.addObject(&spleaf2); + + /* ----------------------------- */ + + Group grp = Group(); + int i; +#define SLICE_NUM (12) + for(i = 0; i < SLICE_NUM; i++) + { + Cube *c = new Cube(); + + c->setTransform(rotationY((2*M_PI / SLICE_NUM) * i) * scaling(0.1, 1.1, 0.7) * translation(0, 0, 0.9)); + c->dropShadow = false; + grp.addObject(c); + } + + grp.materialSet = true; + grp.dropShadow = false; + grp.material.ambient = 0; + grp.material.diffuse = 0.1; + grp.material.specular = 0; + grp.material.transparency = 1; + grp.material.reflective = 1; + grp.material.refractiveIndex = 1; + + Sphere ballSp = Sphere(); + ballSp.materialSet = true; + ballSp.material.colour = Colour(0.7, 0.2, 0.1); + CSG ballLeaf = CSG(CSG::INTERSECTION, &grp, &ballSp); + + ballLeaf.setTransform(translation(-4, 1, -0.1) * rotationY(-0.35) * rotationZ(0.1)); + w.addObject(&ballLeaf); + + /* ----------------------------- */ + /* Set the camera */ - Camera camera = Camera(800, 400, M_PI / 2); - camera.setTransform(viewTransform(Point(-4, 4, -9), + Camera camera = Camera(80, 40, M_PI / 2); + camera.setTransform(viewTransform(Point(0, 3, 5), Point(0, 1, 0), Vector(0, 1, 0))); diff --git a/tests/cylinder_test.cpp b/tests/cylinder_test.cpp index c99ba0b..81d85e7 100644 --- a/tests/cylinder_test.cpp +++ b/tests/cylinder_test.cpp @@ -59,7 +59,7 @@ TEST(CylinderTest, A_ray_hit_a_cylinder) double t0s[] = { 5, 4, 6.80798 }; double t1s[] = { 5, 6, 7.08872 }; - int i, j; + int i; for(i = 0; i < 3; i++) { Tuple direction = Directions[i].normalise(); diff --git a/tests/plane_test.cpp b/tests/plane_test.cpp index 36aee8a..8d943d8 100644 --- a/tests/plane_test.cpp +++ b/tests/plane_test.cpp @@ -73,7 +73,6 @@ TEST(PlaneTest, A_ray_intersecting_a_plane_from_below) TEST(PlaneTest, The_bounding_box_of_a_plane) { Plane t = Plane(); - BoundingBox b = BoundingBox(Point(-8, -5, -8), Point(8, 8, 8)); BoundingBox res = t.getBounds(); ASSERT_FALSE(res.min.isRepresentable()); diff --git a/tests/test_render.cpp b/tests/test_render.cpp index 827a66b..a3ecb42 100644 --- a/tests/test_render.cpp +++ b/tests/test_render.cpp @@ -54,7 +54,7 @@ int main() Plane p4 = Plane(); p3.setTransform(translation(6, 0, 0) * rotationZ(M_PI/2) ); p3.material.pattern = new CheckersPattern(Colour(1, 1, 1), Colour(0.1, 0.1, 0.1)); - w.addObject(&p3); + w.addObject(&p4); Plane p5 = Plane(); p5.material.pattern = new CheckersPattern(Colour(1, 1, 1), Colour(0.1, 0.1, 0.1)); diff --git a/tests/uvmap_skybox.cpp b/tests/uvmap_skybox.cpp index f463e92..bf54b12 100644 --- a/tests/uvmap_skybox.cpp +++ b/tests/uvmap_skybox.cpp @@ -31,7 +31,7 @@ int main() Light light = Light(POINT_LIGHT, Point(0, 100, 0), Colour(1, 1, 1)); w.addLight(&light); - Sphere sp = Sphere();; + Sphere sp = Sphere(); sp.setTransform(translation(0, 0, 5) * scaling(0.75, 0.75, 0.75)); sp.material.diffuse = 0.4; sp.material.specular = 0.6; diff --git a/tests/world_test.cpp b/tests/world_test.cpp index 36ee043..0564a83 100644 --- a/tests/world_test.cpp +++ b/tests/world_test.cpp @@ -44,7 +44,7 @@ TEST(WorldTest, The_default_world) ASSERT_TRUE(w.lightIsIn(l)); ASSERT_TRUE(w.objectIsIn(s1)); ASSERT_TRUE(w.objectIsIn(s2)); -}; +} TEST(WorldTest, Intersect_a_world_with_a_ray) { @@ -169,7 +169,7 @@ TEST(WorldTest, Shade_hit_is_given_an_intersection_in_shadow) Tuple c = w.shadeHit(comps); ASSERT_EQ(c, Colour(0.1, 0.1, 0.1)); -}; +} TEST(WorldTest, The_reflected_colour_for_a_non_reflective_material) {