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
3
#include "
Engine/World/Transform.h
"
4
#include "
GltfLoader.h
"
5
#include "
MeshPrimitive.h
"
6
7
#include <
Engine/Material/MaterialShader.h
>
8
#include <filesystem>
9
#include <glm/glm.hpp>
10
#include <vector>
11
12
namespace
EngineCore
{
13
class
Engine
;
14
class
Texture
;
15
class
AssetManager
;
16
17
struct
PushConstants
{
18
uint32_t
meshIndex
;
19
};
20
21
struct
UniformBufferObject
{
22
glm::mat4
model
;
// 16 bytes
23
};
24
25
class
Mesh
26
{
27
friend
AssetManager
;
28
public
:
29
static
const
uint32_t
textureCount
= 1;
30
enum
TextureNames
{
31
COLOR
= 0
32
};
33
34
Mesh
();
35
Mesh
(
GltfLoader::GltfMeshData
meshData
,
ApplicationContext
*
context
,
Renderer
*
renderer
);
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
67
PipelineNames
getShaderName
()
const
;
68
69
private
:
70
71
std::optional<PipelineNames>
materialName
;
72
73
std::string
name
;
74
float
boundingSphereRadius
= 0.0f;
75
76
GltfLoader::GltfMeshData
meshData
;
77
78
Renderer
*
renderer
=
nullptr
;
79
ApplicationContext
*
context
=
nullptr
;
80
81
MaterialShader
material
;
82
Engine
*
engine
=
nullptr
;
83
84
Transform
sceneTransform
;
85
86
std::vector<MeshPrimitive>
meshPrimitives
{};
87
uint32_t
descriptorIndex
= 0u;
88
};
89
90
}
91
GltfLoader.h
MaterialShader.h
MeshPrimitive.h
Transform.h
EngineCore::ApplicationContext
The application context is the core class which stores the basic openxr and vulkan objects.
Definition
ApplicationContext.h:36
EngineCore::AssetManager
Definition
AssetManager.h:123
EngineCore::Engine
Definition
Engine.h:36
EngineCore::Mesh::materialName
std::optional< PipelineNames > materialName
Definition
Mesh.h:71
EngineCore::Mesh::textureCount
static const uint32_t textureCount
Definition
Mesh.h:29
EngineCore::Mesh::TextureNames
TextureNames
Definition
Mesh.h:30
EngineCore::Mesh::COLOR
@ COLOR
Definition
Mesh.h:31
EngineCore::Mesh::isReady
std::atomic< bool > isReady
Definition
Mesh.h:42
EngineCore::Mesh::context
ApplicationContext * context
Definition
Mesh.h:79
EngineCore::Mesh::sceneTransform
Transform sceneTransform
Definition
Mesh.h:84
EngineCore::Mesh::engine
Engine * engine
Definition
Mesh.h:82
EngineCore::Mesh::getName
std::string getName() const
Definition
Mesh.cpp:139
EngineCore::Mesh::renderer
Renderer * renderer
Definition
Mesh.h:78
EngineCore::Mesh::getPrimitivesByReference
const std::vector< MeshPrimitive > & getPrimitivesByReference() const
Definition
Mesh.cpp:129
EngineCore::Mesh::getIndexCount
uint32_t getIndexCount() const
Definition
Mesh.cpp:92
EngineCore::Mesh::createMeshName
static std::string createMeshName(const std::filesystem::path &path, const std::string &meshName)
Definition
Mesh.cpp:144
EngineCore::Mesh::getMeshletCount
uint32_t getMeshletCount() const
Definition
Mesh.cpp:113
EngineCore::Mesh::meshData
GltfLoader::GltfMeshData meshData
Definition
Mesh.h:76
EngineCore::Mesh::getMeshletTriangleCount
uint32_t getMeshletTriangleCount() const
Definition
Mesh.cpp:102
EngineCore::Mesh::boundingSphereRadius
float boundingSphereRadius
Definition
Mesh.h:74
EngineCore::Mesh::getTextureCount
static uint32_t getTextureCount()
Definition
Mesh.cpp:170
EngineCore::Mesh::getSceneTransform
Transform getSceneTransform() const
Definition
Mesh.cpp:151
EngineCore::Mesh::name
std::string name
Definition
Mesh.h:73
EngineCore::Mesh::material
MaterialShader material
Definition
Mesh.h:81
EngineCore::Mesh::descriptorIndex
uint32_t descriptorIndex
Definition
Mesh.h:87
EngineCore::Mesh::AssetManager
friend AssetManager
Definition
Mesh.h:27
EngineCore::Mesh::createResources
void createResources()
Definition
Mesh.cpp:37
EngineCore::Mesh::reset
void reset()
Definition
Mesh.cpp:87
EngineCore::Mesh::getPrimitives
std::vector< MeshPrimitive > getPrimitives() const
Definition
Mesh.cpp:124
EngineCore::Mesh::cleanup
void cleanup()
Definition
Mesh.cpp:85
EngineCore::Mesh::Mesh
Mesh()
Definition
Mesh.cpp:14
EngineCore::Mesh::meshPrimitives
std::vector< MeshPrimitive > meshPrimitives
Definition
Mesh.h:86
EngineCore::Mesh::getShaderName
PipelineNames getShaderName() const
Gets the name of the shader assigned to this object.
Definition
Mesh.cpp:161
EngineCore::Mesh::getBoundingSphereRadius
float getBoundingSphereRadius() const
Definition
Mesh.cpp:156
EngineCore::Mesh::~Mesh
~Mesh()=default
EngineCore::Texture
Definition
Texture.h:21
EngineCore::Transform
Definition
Transform.h:42
EngineCore
Log category system implementation.
Definition
CameraComponent.cpp:8
EngineCore::PipelineNames
PipelineNames
Definition
MaterialTypes.h:9
Renderer
Definition
XrVkInstance.h:3
EngineCore::GltfLoader::GltfMeshData
Definition
GltfLoader.h:413
EngineCore::MaterialShader
Definition
MaterialShader.h:18
EngineCore::PushConstants
Definition
Mesh.h:17
EngineCore::PushConstants::meshIndex
uint32_t meshIndex
Definition
Mesh.h:18
EngineCore::UniformBufferObject
Definition
Mesh.h:21
EngineCore::UniformBufferObject::model
glm::mat4 model
Definition
Mesh.h:22
Engine
include
Engine
Mesh
Mesh.h
Generated by
1.14.0