adding ambient lighting
This commit is contained in:
Binary file not shown.
+3
-3
@@ -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,
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user