diff options
author | Fate Bussey <lafayette_bussey@brown.edu> | 2023-12-12 14:00:56 -0500 |
---|---|---|
committer | Fate Bussey <lafayette_bussey@brown.edu> | 2023-12-12 14:00:56 -0500 |
commit | 2117034251eaa124ec9c6bec4524e490a0ee9ec0 (patch) | |
tree | 2b6ef68677e779ff118a6f5b342a5f57464b8593 /src/raytracer | |
parent | 58c896801817ac67913644ccd9373cd18774232a (diff) |
potentially buggy normals and first update to phong
Diffstat (limited to 'src/raytracer')
-rw-r--r-- | src/raytracer/raytracer.cpp | 9 | ||||
-rw-r--r-- | src/raytracer/raytracer.h | 30 |
2 files changed, 18 insertions, 21 deletions
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp index acb229a..b393d40 100644 --- a/src/raytracer/raytracer.cpp +++ b/src/raytracer/raytracer.cpp @@ -127,12 +127,9 @@ glm::vec4 RayTracer::getPixelFromRay( } } - glm::vec3 normalObject = getNormal(closestIntersectionObj, intersectedShape, scene); - glm::vec3 normalWorld = - ( - glm::inverse(glm::transpose(intersectedShape.ctm)) - * glm::vec4(normalObject, 0.f) - ).xyz(); + glm::vec4 normalObject = glm::normalize(getNormal(closestIntersectionObj, intersectedShape, scene)); + // update + glm::vec4 normalWorld = glm::inverse(glm::transpose(intersectedShape.ctm)) * glm::vec4(normalObject); return illuminatePixel(closestIntersectionWorld, normalWorld, -dWorld, intersectedShape, scene, depth); } diff --git a/src/raytracer/raytracer.h b/src/raytracer/raytracer.h index 9bbeb5c..f8b3721 100644 --- a/src/raytracer/raytracer.h +++ b/src/raytracer/raytracer.h @@ -59,7 +59,7 @@ public: const RenderShapeData &shape, glm::vec4 illuminationToInterpolate); - glm::vec3 getNormal( + glm::vec4 getNormal( glm::vec4 intersectPointObject, const RenderShapeData &shape, const RayTraceScene &scene); @@ -97,9 +97,9 @@ public: const RayTraceScene &scene, int depth); glm::vec4 illuminatePixel( - glm::vec3 intersectionWorld, - glm::vec3 normalWorld, - glm::vec3 directionToCamera, + glm::vec4 intersectionWorld, + glm::vec4 normalWorld, + glm::vec4 directionToCamera, const RenderShapeData &shape, const RayTraceScene &scene, int depth); @@ -107,26 +107,26 @@ public: // shading, and helpers for each type of light glm::vec4 - phong(glm::vec4 lightColor, float attenuation, glm::vec3 directionFromIntersectionToLight, - glm::vec3 directionToCamera, - glm::vec3 intersectionWorld, glm::vec3 normalWorld, const RenderShapeData &shape, const RayTraceScene &scene); + phong(glm::vec4 lightColor, float attenuation, glm::vec4 directionFromIntersectionToLight, + glm::vec4 directionToCamera, + glm::vec4 intersectionWorld, glm::vec4 normalWorld, const RenderShapeData &shape, const RayTraceScene &scene); glm::vec4 - illuminationFromPointLight(const SceneLightData &light, glm::vec3 intersectionWorld, glm::vec3 normalWorld, - glm::vec3 directionToCamera, const RenderShapeData &shape, + illuminationFromPointLight(const SceneLightData &light, glm::vec4 intersectionWorld, glm::vec4 normalWorld, + glm::vec4 directionToCamera, const RenderShapeData &shape, const RayTraceScene &scene); - glm::vec4 illuminationFromSpotLight(const SceneLightData &light, glm::vec3 intersectionWorld, glm::vec3 normalWorld, - glm::vec3 directionToCamera, const RenderShapeData &shape, + glm::vec4 illuminationFromSpotLight(const SceneLightData &light, glm::vec4 intersectionWorld, glm::vec4 normalWorld, + glm::vec4 directionToCamera, const RenderShapeData &shape, const RayTraceScene &scene); glm::vec4 - illuminationFromDirectionalLight(const SceneLightData &light, glm::vec3 intersectionWorld, glm::vec3 normalWorld, - glm::vec3 directionToCamera, const RenderShapeData &shape, + illuminationFromDirectionalLight(const SceneLightData &light, glm::vec4 intersectionWorld, glm::vec4 normalWorld, + glm::vec4 directionToCamera, const RenderShapeData &shape, const RayTraceScene &scene); - glm::vec4 illuminationFromAreaLight(const SceneLightData &light, glm::vec3 intersectionWorld, glm::vec3 normalWorld, - glm::vec3 directionToCamera, const RenderShapeData &shape, + glm::vec4 illuminationFromAreaLight(const SceneLightData &light, glm::vec4 intersectionWorld, glm::vec4 normalWorld, + glm::vec4 directionToCamera, const RenderShapeData &shape, const RayTraceScene &scene); |