Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
Mesh.h
Go to the documentation of this file.
1#pragma once
2
4#include "GltfLoader.h"
5#include "MeshPrimitive.h"
6
8#include <filesystem>
9#include <glm/glm.hpp>
10#include <vector>
11
12namespace EngineCore{
13 class Engine;
14 class Texture;
15 class AssetManager;
16
18 uint32_t meshIndex;
19 };
20
22 glm::mat4 model; // 16 bytes
23 };
24
25 class Mesh
26 {
28 public:
29 static const uint32_t textureCount = 1;
32 };
33
34 Mesh();
36 ~Mesh() = default;
37
38 void createResources();
39 void cleanup();
40 void reset();
41
42 std::atomic<bool> isReady = false;
43
44 [[nodiscard]] uint32_t getIndexCount() const;
45 uint32_t getMeshletTriangleCount() const;
46 uint32_t getMeshletCount() const;
47 static uint32_t getTextureCount();
48
49 [[nodiscard]] std::vector<MeshPrimitive> getPrimitives() const;
50 [[nodiscard]] const std::vector<MeshPrimitive>& getPrimitivesByReference() const;
51 [[nodiscard]] std::vector<MeshPrimitive>& getPrimitivesByReference();
52
53 [[nodiscard]] std::string getName() const;
54
55 static std::string createMeshName(const std::filesystem::path& path, const std::string& meshName);
56 [[nodiscard]] Transform getSceneTransform() const;
57 [[nodiscard]] float getBoundingSphereRadius() const;
58
68
69 private:
70
71 std::optional<PipelineNames> materialName;
72
73 std::string name;
75
77
78 Renderer* renderer = nullptr;
80
82 Engine* engine = nullptr;
83
85
86 std::vector<MeshPrimitive> meshPrimitives{};
87 uint32_t descriptorIndex = 0u;
88 };
89
90}
91
The application context is the core class which stores the basic openxr and vulkan objects.
std::optional< PipelineNames > materialName
Definition Mesh.h:71
static const uint32_t textureCount
Definition Mesh.h:29
std::atomic< bool > isReady
Definition Mesh.h:42
ApplicationContext * context
Definition Mesh.h:79
Transform sceneTransform
Definition Mesh.h:84
Engine * engine
Definition Mesh.h:82
std::string getName() const
Definition Mesh.cpp:139
Renderer * renderer
Definition Mesh.h:78
const std::vector< MeshPrimitive > & getPrimitivesByReference() const
Definition Mesh.cpp:129
uint32_t getIndexCount() const
Definition Mesh.cpp:92
static std::string createMeshName(const std::filesystem::path &path, const std::string &meshName)
Definition Mesh.cpp:144
uint32_t getMeshletCount() const
Definition Mesh.cpp:113
GltfLoader::GltfMeshData meshData
Definition Mesh.h:76
uint32_t getMeshletTriangleCount() const
Definition Mesh.cpp:102
float boundingSphereRadius
Definition Mesh.h:74
static uint32_t getTextureCount()
Definition Mesh.cpp:170
Transform getSceneTransform() const
Definition Mesh.cpp:151
std::string name
Definition Mesh.h:73
MaterialShader material
Definition Mesh.h:81
uint32_t descriptorIndex
Definition Mesh.h:87
friend AssetManager
Definition Mesh.h:27
void createResources()
Definition Mesh.cpp:37
void reset()
Definition Mesh.cpp:87
std::vector< MeshPrimitive > getPrimitives() const
Definition Mesh.cpp:124
void cleanup()
Definition Mesh.cpp:85
std::vector< MeshPrimitive > meshPrimitives
Definition Mesh.h:86
PipelineNames getShaderName() const
Gets the name of the shader assigned to this object.
Definition Mesh.cpp:161
float getBoundingSphereRadius() const
Definition Mesh.cpp:156
Log category system implementation.