diff --git a/src/definitions/primatives/sphere.cpp b/src/definitions/primatives/sphere.cpp index 3e8a8b5..32119f4 100644 --- a/src/definitions/primatives/sphere.cpp +++ b/src/definitions/primatives/sphere.cpp @@ -16,9 +16,9 @@ bool Sphere::DoesIntersect(Ray& ray, float& t) { if (t0 < t1) t = t0; else t = t1; - return true; // (t0 > t1 && t1 > 0.0f) ? t1 > 0.0f : t0 > 0.0f; + return true; } - + glm::vec3 Sphere::SurfaceNormal(glm::vec3 hitPoint) { return glm::normalize(hitPoint - center); } @@ -26,7 +26,7 @@ glm::vec3 Sphere::SurfaceNormal(glm::vec3 hitPoint) { glm::vec2 Sphere::TexCoords(glm::vec3 hitPoint) { glm::vec3 hit = hitPoint - center; return { (1.0 + atan2(hit.z, hit.x) / PI) * 0.5, - acos(hit.y / radius) / PI }; + acos(hit.y / radius) / PI }; } void Sphere::Translate(glm::vec3 trans) { diff --git a/src/engine/progressiverenderer.cpp b/src/engine/progressiverenderer.cpp index 05c8846..dbe1397 100644 --- a/src/engine/progressiverenderer.cpp +++ b/src/engine/progressiverenderer.cpp @@ -4,8 +4,10 @@ #include "../pixel.hpp" #include "../display/displayinterface.hpp" +#include "../definitions/primatives/primative.hpp" #include "../definitions/camera.hpp" #include "../definitions/scene.hpp" +#include "../definitions/ray.hpp" ProgressiveRenderer::ProgressiveRenderer() { @@ -31,7 +33,14 @@ void ProgressiveRenderer::Render() { for (int x = 0; x < m_scene->w; x++) for (int y = 0; y < m_scene->h; y++) { + Ray ray = GeneratePrimaryRay(x, y, m_scene); + for (int i = 0; i < m_scene->objects.size(); i++) { + float t = 0; + if (m_scene->objects[i]->DoesIntersect(ray, t)) { + m_interface->SetPixelSafe(x, y, rgb888(0, 255, 0)); + } + } } // Swap framebuffers