Files
inferno-cpu/src/definitions/primatives/mesh.cpp
2019-08-22 00:28:52 +01:00

29 lines
593 B
C++

#include "mesh.hpp"
#include <iostream>
#include "../../acceleration/accel.hpp"
#include "../ray.hpp"
#include "triangle.hpp"
Mesh::Mesh(std::vector<Triangle*> tris) {
Triangles = tris;
}
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);
}
return m_accelerator->Intersect(ray, intersect, t);
}