diff --git a/res/models/town_hall.glb b/res/models/town_hall.glb new file mode 100644 index 0000000..cf905ac Binary files /dev/null and b/res/models/town_hall.glb differ diff --git a/src/main.cpp b/src/main.cpp index 38cba7b..71692ce 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,8 +10,8 @@ int main() Window window(1920, 1080); scene.startRender( Camera{ - .position = glm::vec3(3, 3, 3), - .direction = glm::vec3(-1, -1, -1), + .position = glm::vec3(-2, 5, 5), + .target = glm::vec3(0, 0, 0), }, RenderParameter{ .width = 1920, @@ -26,7 +26,7 @@ int main() scene.startRender( Camera{ .position = glm::vec3(5, 5, 5), - .direction = glm::vec3(-1, -1, -1), + .target = glm::vec3(0, 0, 0), }, RenderParameter{ .width = 1920, diff --git a/src/scene/Renderer.cpp b/src/scene/Renderer.cpp index 81db0b3..b2111e6 100644 --- a/src/scene/Renderer.cpp +++ b/src/scene/Renderer.cpp @@ -7,7 +7,7 @@ Renderer::Renderer() { bvh.addDirectionalLight(DirectionalLight{ - .direction = glm::normalize(glm::vec3(-0.2f, -0.2f, -0.2f)), + .direction = glm::normalize(glm::vec3(-0.4f, -0.3f, -0.2f)), .color = glm::vec3(1, 1, 1), }); bvh.addModels(ModelLoader::loadModel("../res/models/cube.fbx"), @@ -18,7 +18,6 @@ Renderer::Renderer() Renderer::~Renderer() {} -static bool firstTime = true; void Renderer::startRender(Camera cam, RenderParameter params) { threadPool.cancel(); @@ -58,7 +57,7 @@ void Renderer::render(Camera camera, RenderParameter params) // #pragma omp parallel for for (int h = 0; h < params.height; ++h) { - Ray cam = Ray(camera.position, glm::normalize(camera.direction)); + Ray cam = Ray(camera.position, glm::normalize(camera.target - camera.position)); glm::vec3 cx = glm::normalize(glm::cross(cam.direction, abs(cam.direction.y) < 0.9 ? glm::vec3(0, 1, 0) : glm::vec3(0, 0, 1))), cy = glm::cross(cx, cam.direction); @@ -77,7 +76,6 @@ void Renderer::render(Camera camera, RenderParameter params) 0.5f) * sdim; glm::vec3 spos = cam.origin + cx * s.x + cy * s.y, lc = cam.origin + cam.direction * 0.035f; // sample on 3d sensor plane - glm::vec3 accrad = glm::vec3(0), accmat = glm::vec3(1); // initialize accumulated radiance and bxdf Ray r = Ray(lc, normalize(lc - spos)); // construct ray //-- setup lens diff --git a/src/scene/Scene.cpp b/src/scene/Scene.cpp index 42c37e8..4c38802 100644 --- a/src/scene/Scene.cpp +++ b/src/scene/Scene.cpp @@ -280,7 +280,7 @@ IntersectionInfo Scene::intersectModel(const ModelReference& reference, const Ra }, .brdf = { - .albedo = glm::vec3(texCoords, 0.0f), + .albedo = glm::vec3(0, 1, 0.0f), .emissive = glm::vec3(0.0f, 0.0f, 0.0f), }, }; diff --git a/src/util/BRDF.cpp b/src/util/BRDF.cpp index 9bf723a..c89c349 100644 --- a/src/util/BRDF.cpp +++ b/src/util/BRDF.cpp @@ -9,6 +9,6 @@ glm::vec3 BRDF::evaluate(HitInfo hit, glm::vec3 viewDir, glm::vec3 lightDir, glm glm::vec3 h = glm::normalize(lightDir + viewDir); float specular = pow(std::min(std::max(glm::dot(normal, h), 0.0f), 1.0f), shininess); - return (albedo * diffuse * lightColor); + return (albedo * diffuse * lightColor) + glm::vec3(0.03, 0.03, 0.03); //+(specularColor * specular); } diff --git a/src/util/Camera.h b/src/util/Camera.h index b6c9c25..44ec337 100644 --- a/src/util/Camera.h +++ b/src/util/Camera.h @@ -4,7 +4,7 @@ struct Camera { glm::vec3 position; - glm::vec3 direction; + glm::vec3 target; glm::vec2 sensorSize = glm::vec2(0.036, 0.024); float S_O = 6.9; float f = 0.7;