From c52a983fafe1bc56f6229331f818a760b6f02fb7 Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Sun, 26 Jan 2025 22:12:21 +0100 Subject: [PATCH] adding ambient lighting --- res/models/town_hall.glb | Bin 0 -> 5108 bytes src/main.cpp | 6 +++--- src/scene/Renderer.cpp | 6 ++---- src/scene/Scene.cpp | 2 +- src/util/BRDF.cpp | 2 +- src/util/Camera.h | 2 +- 6 files changed, 8 insertions(+), 10 deletions(-) create mode 100644 res/models/town_hall.glb diff --git a/res/models/town_hall.glb b/res/models/town_hall.glb new file mode 100644 index 0000000000000000000000000000000000000000..cf905ac454fa8e7f5e4cf7b4fba550e9f7b7777a GIT binary patch literal 5108 zcmb_gU2GIp6h4JYL5t!KSOujHh(9dL{Os<`mbN=fp<1j|+loY@cH2(dP1;@D-J+yc zn)v&`LqlSs#>ANTq)#RW9<1(?CMFsP{=E1XUVZUFBM-hPe&^2I?(9#eZQ_u<_uMnz z`ObIGJu}lVJ~`OEj)<<^PPEWObY!6K=!}xe=beJmHlvI?87G%2WOGWJ^4LT!o5|)| z#}U$caMH<)I=R-K{e7*cB4HyOF_n;V%E{%^*$lvXSXE|2N`3?cN}K9gd8O^djFL%B z!KVy}dm$y09d-DI`t0np<<*Qb<>V(ssD~fSzLuTU?vssG-FTJz^S~ zrN>N5hh)u+sg|y(5nNH#FfH~OS}bm9G0lh>F;$CMp*6`CTg*?0Gg~^$uIXVXtg0F- z&ZVc)h4d*8kSY{%>EY=DFK3h|`UZLid-{%wgFV{U|9G-jY12Z=;Njz4eSQ6ho>!GN zeKw?|Go$Gd4l&ASj2N!ja)gnPA_=3FgfTy%=_k}?Mbo85kSm|fxm`3oJvQd#j-{O! zh02la)X8kd$rJ`ppG4nAH9ZzmMzYfxJRzpeY%igE<6$GtS4^{_hN_!JC=#-&eO$UU z9*-0IBH@VJUh$|AGb0AhDzvX2z95n+#}0QHc%aa!K5?kqO5%dTp?&q?dQEnmOl`Pu ziqdEi9Eg{Gpexy%?5|+}pq8OrTn+cV;)aZH+%Qd5)Agussb)+wL)J>w#QmV{qe)iE z9uzKgF5ej}z8qd#J+xtM_Hy+MyfvzdhwYRP-`}aCONUPvoL(n0UcfukiXk~W`o_k@ zi=4?)xp97{8lotQ&qgob~F^X`r z`dkS=8%8qN27>6Ki&@SVJRYW=y#+bMg*nKUdKeREBi9n9!oGazY>6|CjcrH<+jDjq zQ)`cnZ4(-RxfpDVTplLSPP#mt~89*|?vOn0of*OU<_Q2idRCoXEwPYFpOfqkqm6SF%6* z^Grfw>e-vYA8wcvJj>Zv46KQu~^DWW3Df%@sTnBj6ue!a8f%47Cxsg}eYZ+u$pyfRRVHg6Yx#%jWCKD;lf{}}Wz-qk7fy7go{*N6A}EAp`(uJfGMTx6c@i(Bli zsKdsd?~4;H&)KwVae@8U+V>0p@u%Jv{`r5ecZ&0gG#9(iT`RJm*R*?af#=biUlsmC z;28%G^Rs>x{9MnWH$E&jF&_NvzZ?AQkGynM;OW5P0>{mR=c{(J^zG{&9(vjT7WnS# zFiY>xTm{b-x{I3d+e?K|ARd+Cb|uuBUx;58X|>Fz%vOx|i;wtr)k`ZS)|p zJ2CF0+rhG#6pRX(Hd6y_!?+ErB;7%GQi%3YC&o@XM32D79=3RXgm%-z)Pk{vwnIT9 z-H-8psAzz$y%_g`$)E%s#(0=ww2mI4D8?vRq|*(w5w=AK@K1-$s{?d1-Aem0?x&k@ zOwF_j<0g85OzNgCj9t`5aXLut7~4rjR*gC^b|AA&5$wvw5C7Ry{`;EqEHK}i!C$twB+D2VFaO?f{Y&pFewMsT`gr-j+5C)qmwY$! za`pD5OW_jHP$^=(VDo#xUC-O@dZ^^C$#mzr#Cz`^0RA15=O6z*lUQqf13H+{Lqv_} gly$IpZa{Z8VcvjWBRb|L^u{K1^Ja9)Mq#t{ADuM!Q~&?~ literal 0 HcmV?d00001 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;