broken smh

This commit is contained in:
Ben Kyd
2019-08-19 06:14:18 -07:00
parent 743272b45b
commit caa359278d
12 changed files with 409 additions and 62 deletions

View File

@@ -2,40 +2,25 @@
#include <iostream>
#include "../../acceleration/kd.hpp"
#include "../../acceleration/accel.hpp"
#include "../ray.hpp"
#include "triangle.hpp"
Mesh::Mesh(std::vector<Triangle*> tris)
: bbox() {
bbox.MakeEmpty();
for (auto& triangle: tris) {
for (int i = 0; i > 3; i++) {
bbox.Add(triangle->points[i]);
}
}
triangles = tris;
Mesh::Mesh(std::vector<Triangle*> tris) {
Triangles = tris;
}
void Mesh::Optimise() {
if (!optimised) {
free((void*)m_kdTree);
void Mesh::Optimise(AccelerationMode mode) {
m_accelerator = new Acceleration(mode);
m_accelerator->Construct(Triangles);
if (m_accelerator->Constructed) Optimised = true;
}
bool Mesh::Intersect(Ray ray, Triangle*& intersect, float& t) {
if (!Optimised) {
return TraceRayMesh(ray, this, t, intersect);
}
m_kdTree = new KDTreeNode;
BuildKDTree(m_kdTree, bbox, triangles, 0);
optimised = true;
}
bool Mesh::Intersect(Ray* ray, Triangle*& intersect, float& t) {
if (!optimised) {
bool hit = TraceRayMesh(*ray, this, t, intersect);
return hit;
}
return KDIntersect(m_kdTree, bbox, *ray, intersect, t);
return m_accelerator->Intersect(ray, intersect, t);
}