2025-01-23 15:55:24 +01:00
|
|
|
#pragma once
|
|
|
|
|
#include "Minimal.h"
|
2025-01-26 15:27:43 +01:00
|
|
|
#include "Material.h"
|
2025-01-23 17:19:53 +01:00
|
|
|
#include "scene/AABB.h"
|
2025-01-24 21:54:46 +01:00
|
|
|
#include <optional>
|
2025-01-25 18:05:47 +01:00
|
|
|
#include <vector>
|
2025-01-23 15:55:24 +01:00
|
|
|
|
2025-01-24 18:21:34 +01:00
|
|
|
struct IntersectionInfo
|
|
|
|
|
{
|
2025-01-26 15:27:43 +01:00
|
|
|
HitInfo hitInfo;
|
|
|
|
|
MaterialInfo shadingInfo;
|
2025-01-24 18:21:34 +01:00
|
|
|
};
|
2025-01-23 15:55:24 +01:00
|
|
|
class Model
|
|
|
|
|
{
|
2025-01-23 16:10:28 +01:00
|
|
|
public:
|
2025-01-25 18:05:47 +01:00
|
|
|
AABB boundingBox;
|
|
|
|
|
std::vector<glm::vec3> positions;
|
2025-01-25 19:20:12 +01:00
|
|
|
std::vector<glm::vec2> texCoords;
|
2025-01-25 19:14:22 +01:00
|
|
|
std::vector<glm::uvec3> indices;
|
2025-01-25 18:45:02 +01:00
|
|
|
std::vector<glm::vec3> edges;
|
2025-01-25 18:05:47 +01:00
|
|
|
std::vector<glm::vec3> faceNormals;
|
|
|
|
|
void transform(glm::mat4 matrix);
|
2025-01-23 15:55:24 +01:00
|
|
|
};
|
|
|
|
|
DECLARE_REF(Model)
|