7#include "entt/entt.hpp"
8#include "meshoptimizer.h"
18class btCollisionShape;
36 std::filesystem::path
path;
74 std::filesystem::path
path;
75 std::future<EngineCore::ExrHeader>
future;
79 std::filesystem::path
path;
131 std::weak_ptr<EngineCore::SceneNode>
node;
186 std::vector<PrimitiveData>
data;
209 return {
static_cast<uint32_t
>(i0) |
210 (
static_cast<uint32_t
>(i1) << 8) |
211 (
static_cast<uint32_t
>(i2) << 16) };
237 std::vector<EngineCore::ClusterGroupData>
groups;
274 std::optional<PrimitiveData>
data = std::nullopt;
378 struct RawGeometryData;
This is the interface which is used to call a tick function on an object. Everything which should be ...
The mesh asset stores geometry data and.
A component which can be attached as many times to an actor as one wants. It makes it possible to ren...
Represents a node in the scene graph, containing information about its position, rotation,...
Data structs for the Entity Component System.
PackedTriangle UnpackedTriangle
AssetLoadingStage
Tracks the current stage of asset loading in the pipeline.
meshopt_Meshlet Meshlet
information about the vertex and index data of a single meshlet
Log category system implementation.
Tag for the active camera in the scene.
std::future< tinygltf::Image > future
std::filesystem::path path
Status information for asset loading pipeline.
Is a tag for asset loading. When an asset has been rquested for loading but isnt yet created this tag...
A bounding sphere for an entity. Used for frustum culling.
Camera properties for projection matrix calculation.
float fov
Vertical field of view in degrees.
Complete result of meshlet generation for all primitives of a mesh. This is returned from the backgro...
BoundingSphere meshBoundingSphere
std::vector< PrimitiveMeshletResult > primitiveResults
std::filesystem::path path
std::future< tinygltf::Model > future
Result of LOD hierarchy generation for a mesh primitive. Contains per-cluster and per-group data for ...
std::vector< EngineCore::ClusterLodData > clusters
Per-cluster data (all LOD levels combined)
UnpackedMeshletData unpackedData
Unpacked GPU data for LOD meshlets.
std::vector< EngineCore::ClusterGroupData > groups
MeshletData meshletData
Meshlet data for all clusters (extends base meshlet data)
size_t baseLevelClusterCount
Clusters at LOD 0 (finest level)
size_t lodLevelCount
Number of LOD levels generated.
EngineCore::PipelineNames type
EngineCore::MaterialData * data
Reference to a MeshComponent for ECS-based iteration. Allows efficient querying of all mesh component...
EngineCore::MeshComponent * component
The index of the mesh inside the scene. Used to query the mesh index of a scene.
std::vector< Ecs::MeshPrimitive > primitives
Ecs::BoundingSphere boundingSphere
std::optional< PrimitiveData > data
std::optional< UnpackedMeshletData > unpackedData
Pre-unpacked GPU-ready data.
std::optional< MeshletData > meshletData
Asset::Path materialPath
Reference to MaterialAsset for pipeline lookup.
std::optional< LodHierarchyResult > lodHierarchy
LOD hierarchy (if generated)
Ecs::BoundingSphere boundingSphere
std::vector< uint8_t > meshletTriangles
std::vector< meshopt_Meshlet > meshlets
std::vector< uint32_t > meshletVertices
std::future< tinygltf::Model > future
GPU-ready packed triangle data (matches shader layout). Stores 3 x 8-bit local indices packed into a ...
uint32_t packed
3 x 8-bit indices: (i2 << 16) | (i1 << 8) | i0
static PackedTriangle pack(uint8_t i0, uint8_t i1, uint8_t i2)
Pack 3 local indices into a single uint32_t.
Stores parent relationships.
Temporary holder for raw geometry data during pipeline execution This is used to pass data between pi...
std::vector< Asset::Path > materialPaths
Resolved material paths per primitive.
std::vector< PrimitiveData > data
std::vector< uint32_t > indices
std::vector< Vertex > vertices
Result of meshlet generation for a single primitive. Used to transfer data from background thread to ...
BoundingSphere boundingSphere
PrimitiveData optimizedData
Optimized vertices and indices.
UnpackedMeshletData unpackedData
GPU-ready unpacked vertex/triangle data.
std::optional< LodHierarchyResult > lodHierarchy
LOD hierarchy (if generated)
Raw mesh geometry data extracted from gltf file Contains unprocessed vertices and indices.
std::vector< uint32_t > indices
std::vector< Vertex > vertices
A struct which allows the engine to find out which SceneNode needs to propagate a dirty flag down the...
std::weak_ptr< EngineCore::SceneNode > node
Tag for EnTT which tags entities which should simulate physics.
btCollisionShape * collisionShape
EngineCore::MeshAsset * assetData
std::vector< StaticMeshData > meshData
Tag for everything which wants to receive tick events.
EngineCore::ITickable * tickable
Pre-packed GPU-ready data for a primitive's meshlets. Generated on background thread during meshlet g...
std::vector< PackedTriangle > triangles
Packed triangle indices (4 bytes each)
std::vector< Vertex > vertices
Unpacked vertex data per meshlet.