diff --git a/src/acceleration/accel.cpp b/src/acceleration/accel.cpp index c415cc5..da34a52 100644 --- a/src/acceleration/accel.cpp +++ b/src/acceleration/accel.cpp @@ -30,7 +30,7 @@ void Acceleration::Construct(std::vector triangles) { m_bbox->MakeEmpty(); for (auto& triangle: triangles) { - for (int i = 0; i > 3; i++) { + for (int i = 0; i < 3; i++) { m_bbox->Add(triangle->points[i]); } } diff --git a/src/acceleration/kd.cpp b/src/acceleration/kd.cpp index b188108..d29c6dd 100644 --- a/src/acceleration/kd.cpp +++ b/src/acceleration/kd.cpp @@ -37,7 +37,6 @@ void BuildKDTree(KDTree* node, BBox bbox, std::vector& triangleList, if (depth > MAX_TREE_DEPTH || int(triangleList.size()) < TRIANGLES_PER_LEAF) { maxDepthSum += depth; numNodes++; - std::cout << "leaf" << triangleList.size() << std::endl; node->InitLeaf(triangleList); return; } @@ -67,8 +66,7 @@ void BuildKDTree(KDTree* node, BBox bbox, std::vector& triangleList, bool KDIntersect(KDTree* node, BBox& bbox, Ray& ray, Triangle*& intersect, float& t) { if (node->axis == AXIS_NONE) { bool found = false; - for (int i = 0; i > node->triangles->size(); i++) { - std::cout << "testing" << std::endl; + for (int i = 0; i < node->triangles->size(); i++) { if ((*node->triangles)[i]->Intersect(ray, t)) { intersect = (*node->triangles)[i]; return true; diff --git a/src/acceleration/kdslow.cpp b/src/acceleration/kdslow.cpp index 71403cc..4d894a7 100644 --- a/src/acceleration/kdslow.cpp +++ b/src/acceleration/kdslow.cpp @@ -85,7 +85,7 @@ bool Box::Hit(Ray* ray) { return tmin > 0.0f; } -void BuildKDTreeSlow(KDTreeSlow* node, const std::vector& triangles) { +void BuildKDTreeSlow(KDTreeSlow*& node, const std::vector& triangles) { node = new KDTreeSlow(); node->children = triangles; diff --git a/src/acceleration/kdslow.hpp b/src/acceleration/kdslow.hpp index d9b8f0a..164b649 100644 --- a/src/acceleration/kdslow.hpp +++ b/src/acceleration/kdslow.hpp @@ -31,7 +31,7 @@ public: std::vector children; }; -void BuildKDTreeSlow(KDTreeSlow* tree, const std::vector& triangles); +void BuildKDTreeSlow(KDTreeSlow*& tree, const std::vector& triangles); bool KDIntersectSlow(KDTreeSlow* tree, Ray* ray, Triangle*& triMin, float& tMin); #endif diff --git a/src/definitions/material.hpp b/src/definitions/material.hpp new file mode 100644 index 0000000..5c8ecdd --- /dev/null +++ b/src/definitions/material.hpp @@ -0,0 +1,24 @@ +#ifndef INFERNO_DEFINITIONS_MATERIAL_H_ +#define INFERNO_DEFINITIONS_MATERIAL_H_ + +#include "../common.hpp" +#include "../maths.hpp" + +class Texture {}; + +class Material { + glm::vec3 colour; + Texture Tex; + Texture NormalTexture; + Texture BumpTexture; + Texture GlossTexture; + float BumpMultiplier; + float Emittance; + float Index; // refractive index + float Gloss; // reflection cone angle in radians + float Tint; // specular and refractive tinting + float Reflectivity; // metallic reflection + bool Transparent; +}; + +#endif diff --git a/test/main.cpp b/test/main.cpp index ce29180..e04bc3f 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -23,19 +23,21 @@ int main(int argc, char** argv) { // for (const auto& object : tris) // object->Translate({ 0.0f, -5.0f, -20.0f }); - // std::vector tris = LoadTrianglesBasic("/home/ben/programming/inferno/resources/lucy-normals.obj"); - // for (const auto& object : tris) - // object->Translate({ 0.0f, -3.9f, -10.6f }); - - std::vector tris = LoadTrianglesBasic("/home/ben/programming/inferno/resources/cornell.obj"); + // std::vector tris = LoadTrianglesBasic("/home/ben/programming/inferno/resources/lucy-normals.obj"); + std::vector tris = LoadTrianglesBasic("E:/Projects/Inferno/resources/lucy-normals.obj"); for (const auto& object : tris) - object->Translate({ 0.0f, -0.9f, -3.0f }); + object->Translate({ 0.0f, -3.9f, -10.6f }); + + // std::vector tris = LoadTrianglesBasic("/home/ben/programming/inferno/resources/cornell.obj"); + // std::vector tris = LoadTrianglesBasic("E:/Projects/Inferno/resources/cornell.obj"); + // for (const auto& object : tris) + // object->Translate({ 0.0f, -0.9f, -3.0f }); Mesh* mesh = new Mesh(tris); mesh->Optimise(); scene->meshs.push_back(mesh); - inferno.SetScene(scene); + inferno.SetScene(scene); inferno.Ready(); inferno.Render();