26static_assert(
sizeof(
ModelVertex) == 48,
"ModelVertex size mismatch — check padding");
27static_assert(offsetof(
ModelVertex, normal) == 12,
"ModelVertex normal offset mismatch");
28static_assert(offsetof(
ModelVertex, texCoord) == 24,
"ModelVertex texCoord offset mismatch");
29static_assert(offsetof(
ModelVertex, tangent) == 32,
"ModelVertex tangent offset mismatch");
bool loadModel(const std::string &path, LoadedModel &outModel, bool flipUVs=false)
Load a model file via Assimp and decode its embedded textures.
Definition ModelLoader.cpp:371
AlphaMode
glTF alpha blending mode.
Definition ModelLoader.hpp:33
Everything returned by loadModel().
Definition ModelLoader.hpp:76
std::vector< MeshData > meshes
Definition ModelLoader.hpp:77
std::vector< TextureData > textures
Definition ModelLoader.hpp:78
PBR material scalar parameters extracted from Assimp/glTF.
Definition ModelLoader.hpp:41
float aoStrength
Definition ModelLoader.hpp:45
float metallicFactor
Default dielectric (non-metal).
Definition ModelLoader.hpp:43
float alphaCutoff
Threshold for AlphaMode::Mask.
Definition ModelLoader.hpp:49
glm::vec4 emissiveFactor
rgb in xyz, w unused.
Definition ModelLoader.hpp:47
AlphaMode alphaMode
Definition ModelLoader.hpp:48
glm::vec4 baseColorFactor
Definition ModelLoader.hpp:42
float roughnessFactor
Default mid-roughness.
Definition ModelLoader.hpp:44
float normalScale
Definition ModelLoader.hpp:46
CPU-side mesh data ready for GPU upload.
Definition ModelLoader.hpp:54
int metallicRoughnessTexIndex
Combined metallic-roughness (glTF convention).
Definition ModelLoader.hpp:59
int diffuseTexIndex
Base colour / albedo texture.
Definition ModelLoader.hpp:57
std::vector< uint32_t > indices
Definition ModelLoader.hpp:56
int normalTexIndex
Normal map texture.
Definition ModelLoader.hpp:58
int emissiveTexIndex
Emissive texture.
Definition ModelLoader.hpp:61
std::vector< ModelVertex > vertices
Definition ModelLoader.hpp:55
int aoTexIndex
Ambient occlusion texture.
Definition ModelLoader.hpp:60
MaterialData material
Scalar PBR factors.
Definition ModelLoader.hpp:62
One vertex in a loaded 3-D model (PBR-ready).
Definition ModelLoader.hpp:19
glm::vec3 normal
Definition ModelLoader.hpp:21
glm::vec2 texCoord
Definition ModelLoader.hpp:22
glm::vec3 position
Definition ModelLoader.hpp:20
glm::vec4 tangent
xyz = tangent direction, w = bitangent handedness (±1).
Definition ModelLoader.hpp:23
RGBA pixel data for one texture (decoded from embedded PNG/JPEG).
Definition ModelLoader.hpp:67
int height
Definition ModelLoader.hpp:70
std::vector< uint8_t > pixels
Row-major RGBA, 4 bytes per pixel.
Definition ModelLoader.hpp:68
bool isSRGB
True for color textures (albedo, emissive); false for data (normal, MR).
Definition ModelLoader.hpp:71
int width
Definition ModelLoader.hpp:69