From 9a728fff2bbebb1eedd86e1ac89f657d43191609 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Sokolov" Date: Sun, 20 Jan 2019 12:16:45 +0100 Subject: [PATCH] diffuse lighting --- out.jpg | Bin 34411 -> 47627 bytes tinyraytracer.cpp | 24 +++++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/out.jpg b/out.jpg index 56601262a265b36f3386c2312b21d17be1fbbed5..1cf4f117104e56c7ef5bdf864bb3be25307ec214 100644 GIT binary patch literal 47627 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 SiomA`e2T#D7lDHxn12U8PET$C literal 34411 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 #include "geometry.h" +struct Light { + Light(const Vec3f &p, const float &i) : position(p), intensity(i) {} + Vec3f position; + float intensity; +}; + struct Material { Material(const Vec3f &color) : diffuse_color(color) {} Material() : diffuse_color() {} @@ -46,7 +52,7 @@ bool scene_intersect(const Vec3f &orig, const Vec3f &dir, const std::vector &spheres) { +Vec3f cast_ray(const Vec3f &orig, const Vec3f &dir, const std::vector &spheres, const std::vector &lights) { Vec3f point, N; Material material; @@ -54,10 +60,15 @@ Vec3f cast_ray(const Vec3f &orig, const Vec3f &dir, const std::vector &s return Vec3f(0.2, 0.7, 0.8); // background color } - return material.diffuse_color; + float diffuse_light_intensity = 0; + for (size_t i=0; i &spheres) { +void render(const std::vector &spheres, const std::vector &lights) { const int width = 1024; const int height = 768; const int fov = M_PI/2.; @@ -69,7 +80,7 @@ void render(const std::vector &spheres) { float x = (2*(i + 0.5)/(float)width - 1)*tan(fov/2.)*width/(float)height; float y = -(2*(j + 0.5)/(float)height - 1)*tan(fov/2.); Vec3f dir = Vec3f(x, y, -1).normalize(); - framebuffer[i+j*width] = cast_ray(Vec3f(0,0,0), dir, spheres); + framebuffer[i+j*width] = cast_ray(Vec3f(0,0,0), dir, spheres, lights); } } @@ -94,7 +105,10 @@ int main() { spheres.push_back(Sphere(Vec3f( 1.5, -0.5, -18), 3, red_rubber)); spheres.push_back(Sphere(Vec3f( 7, 5, -18), 4, ivory)); - render(spheres); + std::vector lights; + lights.push_back(Light(Vec3f(-20, 20, 20), 1.5)); + + render(spheres, lights); return 0; }