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);
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,
+2 -4
View File
@@ -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
+1 -1
View File
@@ -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),
},
};
+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);
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);
}
+1 -1
View File
@@ -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;