adding ambient lighting

This commit is contained in:
Dynamitos
2025-01-26 22:12:21 +01:00
parent e24bcd508c
commit c52a983faf
6 changed files with 8 additions and 10 deletions
Binary file not shown.
+3 -3
View File
@@ -10,8 +10,8 @@ int main()
Window window(1920, 1080); Window window(1920, 1080);
scene.startRender( scene.startRender(
Camera{ Camera{
.position = glm::vec3(3, 3, 3), .position = glm::vec3(-2, 5, 5),
.direction = glm::vec3(-1, -1, -1), .target = glm::vec3(0, 0, 0),
}, },
RenderParameter{ RenderParameter{
.width = 1920, .width = 1920,
@@ -26,7 +26,7 @@ int main()
scene.startRender( scene.startRender(
Camera{ Camera{
.position = glm::vec3(5, 5, 5), .position = glm::vec3(5, 5, 5),
.direction = glm::vec3(-1, -1, -1), .target = glm::vec3(0, 0, 0),
}, },
RenderParameter{ RenderParameter{
.width = 1920, .width = 1920,
+2 -4
View File
@@ -7,7 +7,7 @@
Renderer::Renderer() Renderer::Renderer()
{ {
bvh.addDirectionalLight(DirectionalLight{ 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), .color = glm::vec3(1, 1, 1),
}); });
bvh.addModels(ModelLoader::loadModel("../res/models/cube.fbx"), bvh.addModels(ModelLoader::loadModel("../res/models/cube.fbx"),
@@ -18,7 +18,6 @@ Renderer::Renderer()
Renderer::~Renderer() {} Renderer::~Renderer() {}
static bool firstTime = true;
void Renderer::startRender(Camera cam, RenderParameter params) void Renderer::startRender(Camera cam, RenderParameter params)
{ {
threadPool.cancel(); threadPool.cancel();
@@ -58,7 +57,7 @@ void Renderer::render(Camera camera, RenderParameter params)
// #pragma omp parallel for // #pragma omp parallel for
for (int h = 0; h < params.height; ++h) 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::vec3 cx =
glm::normalize(glm::cross(cam.direction, abs(cam.direction.y) < 0.9 ? glm::vec3(0, 1, 0) : glm::vec3(0, 0, 1))), 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); cy = glm::cross(cx, cam.direction);
@@ -77,7 +76,6 @@ void Renderer::render(Camera camera, RenderParameter params)
0.5f) * 0.5f) *
sdim; 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 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 Ray r = Ray(lc, normalize(lc - spos)); // construct ray
//-- setup lens //-- setup lens
+1 -1
View File
@@ -280,7 +280,7 @@ IntersectionInfo Scene::intersectModel(const ModelReference& reference, const Ra
}, },
.brdf = .brdf =
{ {
.albedo = glm::vec3(texCoords, 0.0f), .albedo = glm::vec3(0, 1, 0.0f),
.emissive = glm::vec3(0.0f, 0.0f, 0.0f), .emissive = glm::vec3(0.0f, 0.0f, 0.0f),
}, },
}; };
+1 -1
View File
@@ -9,6 +9,6 @@ glm::vec3 BRDF::evaluate(HitInfo hit, glm::vec3 viewDir, glm::vec3 lightDir, glm
glm::vec3 h = glm::normalize(lightDir + viewDir); glm::vec3 h = glm::normalize(lightDir + viewDir);
float specular = pow(std::min(std::max(glm::dot(normal, h), 0.0f), 1.0f), shininess); 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); //+(specularColor * specular);
} }
+1 -1
View File
@@ -4,7 +4,7 @@
struct Camera struct Camera
{ {
glm::vec3 position; glm::vec3 position;
glm::vec3 direction; glm::vec3 target;
glm::vec2 sensorSize = glm::vec2(0.036, 0.024); glm::vec2 sensorSize = glm::vec2(0.036, 0.024);
float S_O = 6.9; float S_O = 6.9;
float f = 0.7; float f = 0.7;