28 #ifndef BERSERK_MESH_HPP
29 #define BERSERK_MESH_HPP
42 #include <unordered_map>
98 uint32 mMaterialIndex = 0xffffffff;
110 const float *
uvs =
nullptr;
227 std::vector<Ref<Material>> mMaterials;
228 std::vector<Ref<SubMesh>> mSubMeshes;
229 std::unordered_map<StringName, uint32> mSubMeshLookUp;
231 uint32 mVerticesCount = 0;
#define BRK_NS_END
Definition: Config.hpp:48
#define BRK_API
Definition: Config.hpp:32
std::int32_t int32
Definition: Typedefs.hpp:43
std::uint32_t uint32
Definition: Typedefs.hpp:44
Contains vertex array-based geometry.
Definition: Mesh.hpp:130
BRK_API const Ref< RHIVertexBuffer > & GetSkinningData() const
Definition: Mesh.hpp:210
BRK_API void AddSubMesh(const StringName &name, RHIPrimitivesType primitivesType, const Aabbf &aabb, uint32 baseVertex, RHIIndexType indexType, uint32 indicesCount, const Ref< Data > &indexData)
Add new indexed sub-mesh to the mesh.
Definition: Mesh.cpp:110
BRK_API Ref< const SubMesh > FindSubMesh(const StringName &name) const
Definition: Mesh.cpp:162
BRK_API void SetSubMeshMaterial(const StringName &name, uint32 index)
Set sub-mesh material.
Definition: Mesh.cpp:146
BRK_API uint32 GetVerticesCount() const
Definition: Mesh.hpp:203
BRK_API const Ref< RHIVertexBuffer > & GetVertexData() const
Definition: Mesh.hpp:206
BRK_API void SetAabb(const Aabbf &aabb)
Definition: Mesh.cpp:101
BRK_API const std::unordered_map< StringName, uint32 > & GetSubMeshLookUp() const
Definition: Mesh.hpp:200
BRK_API const Ref< RHIVertexBuffer > & GetAttributeData() const
Definition: Mesh.hpp:208
BRK_API void AddMaterial(Ref< Material > material)
Definition: Mesh.cpp:105
BRK_API const StringName & GetName() const
Definition: Mesh.hpp:189
BRK_API ~Mesh() override=default
BRK_API void SetName(StringName name)
Definition: Mesh.cpp:97
BRK_API const Aabbf & GetAabb() const
Definition: Mesh.hpp:193
BRK_API bool HasVertexData() const
Definition: Mesh.hpp:215
BRK_API const Ref< RHIVertexDeclaration > & GetDeclaration() const
Definition: Mesh.hpp:213
BRK_API bool HasAttributeData() const
Definition: Mesh.hpp:216
BRK_API const std::vector< Ref< SubMesh > > & GetSubMeshes() const
Definition: Mesh.hpp:198
BRK_API const std::vector< Ref< Material > > & GetMaterials() const
Definition: Mesh.hpp:196
BRK_API bool HasSkinningData() const
Definition: Mesh.hpp:217
BRK_API Mesh(MeshFormat format, uint32 verticesCount, const Ref< Data > &vertexData, const Ref< Data > &attributeData, const Ref< Data > &skinningData)
Creates mesh from raw vertex data.
Definition: Mesh.cpp:34
BRK_API const MeshFormat & GetFormat() const
Definition: Mesh.hpp:191
Reference counted base object.
Definition: RefCnt.hpp:52
bool IsNotNull() const
Definition: Ref.hpp:94
Cached shared utf-8 string id.
Definition: StringName.hpp:61
Separate sufficient entity inside mesh object.
Definition: Mesh.hpp:56
BRK_API const StringName & GetName() const
Definition: Mesh.hpp:62
BRK_API SubMesh()=default
BRK_API RHIPrimitivesType GetPrimitivesType() const
Definition: Mesh.hpp:67
BRK_API uint32 GetBaseVertex() const
Definition: Mesh.hpp:76
BRK_API RHIIndexType GetIndexType() const
Definition: Mesh.hpp:69
BRK_API uint32 GetVerticesCount() const
Definition: Mesh.hpp:74
BRK_API const Aabbf & GetAabb() const
Definition: Mesh.hpp:71
BRK_API bool IsIndexed() const
Definition: Mesh.hpp:83
BRK_API ~SubMesh() override=default
BRK_API uint32 GetIndicesCount() const
Definition: Mesh.hpp:78
BRK_API uint32 GetMaterialIndex() const
Definition: Mesh.hpp:80
BRK_API const Ref< RHIIndexBuffer > & GetIndexBuffer() const
Definition: Mesh.hpp:65
RHIIndexType
Definition: RHIDefs.hpp:57
RHIPrimitivesType
Definition: RHIDefs.hpp:220
Definition: GLDevice.cpp:46
Struct describing mesh data per attribute.
Definition: Mesh.hpp:105
const float * normals
Definition: Mesh.hpp:107
const float * positions
Definition: Mesh.hpp:106
const float * weights
Definition: Mesh.hpp:112
const float * uvs2
Definition: Mesh.hpp:111
const float * tangents
Definition: Mesh.hpp:108
const float * uvs
Definition: Mesh.hpp:110
const int32 * bones
Definition: Mesh.hpp:113
const float * colors
Definition: Mesh.hpp:109