3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/checked_resource_service/ClientResourcePointer.h"
7#include "mc/deps/core/debug/brstd/static_vector.h"
8#include "mc/deps/core_graphics/enums/PrimitiveMode.h"
9#include "mc/deps/minecraft_renderer/renderer/MeshData.h"
10#include "mc/deps/minecraft_renderer/renderer/MeshDebugString.h"
11#include "mc/deps/minecraft_renderer/resources/IndexBufferContainer.h"
12#include "mc/deps/renderer/VertexField.h"
13#include "mc/deps/renderer/VertexLayout.h"
14#include "mc/deps/renderer/hal/interface/Buffer.h"
25namespace dragon::mesh {
class Mesh; }
38class Mesh :
public ::mce::IndexBufferContainer {
43 using TextureList = ::brstd::static_vector<
44 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
50 ::ll::TypedStorage<8, 24, ::std::variant<::std::monostate, uint64, ::glm::ivec3>> mCacheKey;
51 ::ll::TypedStorage<1, 1, bool> mTemporary;
52 ::ll::TypedStorage<1, 1, ::mce::PrimitiveMode> mPrimitiveMode;
53 ::ll::TypedStorage<1, 1, ::mce::MeshDebugString> mDebugName;
54 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
55 ::ll::TypedStorage<8, 312, ::mce::MeshData> mMeshData;
59 ::mce::ClientResourcePointer<::std::variant<
62 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
63 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
68 ::mce::ClientResourcePointer<::std::variant<
71 ::mce::ClientResourcePointer<::dragon::ResolvedVertexBufferResource>,
72 ::mce::ClientResourcePointer<::dragon::ResolvedIndexBufferResource>>>>
74 ::ll::TypedStorage<4, 8, ::std::optional<uint>> mVertexCount;
75 ::ll::TypedStorage<2, 70, ::mce::VertexLayout> mVertexLayout;
76 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mRawData;
81 Mesh& operator=(Mesh
const&);
88 MCAPI Mesh(::mce::Mesh&& c);
90 MCAPI Mesh(::mce::Mesh
const& rhs);
93 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
94 ::mce::MeshData&& data,
96 ::std::string_view debugName
99 MCAPI
bool _loadBlankData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName)
const;
101 MCAPI
bool _loadRawData(::mce::BufferResourceService& bufferResourceService, ::std::string_view debugName)
const;
103 MCAPI
void _move(::mce::Mesh& rhs);
105 MCAPI
void _renderMesh(
106 ::mce::MeshContext& meshContext,
107 ::mce::MaterialPtr
const& materialPtr,
108 ::brstd::static_vector<
109 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>,
111 uint offscreenCaptureDescription,
115 ::UIActorOffscreenCaptureDescription,
116 ::UIThumbnailMeshOffscreenCaptureDescription,
117 ::UIMeshOffscreenCaptureDescription,
118 ::UIStructureVolumeOffscreenCaptureDescription>
const&,
119 ::mce::IndexBufferContainer
const*,
120 ::std::optional<::dragon::RenderMetadata>
123 MCAPI
bool areBuffersValid()
const;
125 MCAPI
void generateHALData(::mce::VertexLayout
const* forcedLayout,
bool splitStream)
const;
127 MCAPI uint64 getMeshVertexCount()
const;
129 MCAPI ::gsl::span<uchar const> getRawData()
const;
131 MCAPI ::mce::VertexFormat
const& getVertexFormat(uint stream)
const;
133 MCFOLD ::mce::VertexLayout
const& getVertexLayout()
const;
135 MCAPI
bool hasField(::mce::VertexField type)
const;
137 MCFOLD
bool isTemporary()
const;
139 MCAPI
bool isValid()
const;
141 MCAPI
void load(::mce::BufferResourceService& bufferResourceService);
143 MCAPI
explicit operator ::dragon::mesh::Mesh()
const;
145 MCAPI ::mce::Mesh& operator=(::mce::Mesh&& rhs);
147 MCAPI
void prepareAsEmptyData(::mce::VertexLayout
const& forcedLayout)
const;
149 MCAPI
void prepareRenderData(::mce::VertexLayout
const& forcedLayout)
const;
151 MCAPI
void releaseVertexBuffer();
153 MCAPI
void renderMesh(
154 ::mce::MeshContext& meshContext,
155 ::mce::MaterialPtr
const& materialPtr,
160 ::UIActorOffscreenCaptureDescription,
161 ::UIThumbnailMeshOffscreenCaptureDescription,
162 ::UIMeshOffscreenCaptureDescription,
163 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
164 ::mce::IndexBufferContainer
const* overrideIndexBuffer
167 MCFOLD
void renderMesh(
168 ::mce::MeshContext& meshContext,
169 ::mce::MaterialPtr
const& materialPtr,
170 ::std::initializer_list<::std::reference_wrapper<::mce::Texture const>> textures,
173 ::mce::IndexBufferContainer
const* overrideIndexBuffer
176 MCAPI
void renderMesh(
177 ::mce::MeshContext& meshContext,
178 ::mce::MaterialPtr
const& materialPtr,
179 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>
const& texture,
184 ::UIActorOffscreenCaptureDescription,
185 ::UIThumbnailMeshOffscreenCaptureDescription,
186 ::UIMeshOffscreenCaptureDescription,
187 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
188 ::mce::IndexBufferContainer
const* overrideIndexBuffer
191 MCAPI
void renderMesh(
192 ::mce::MeshContext& meshContext,
193 ::mce::MaterialPtr
const& materialPtr,
194 ::gsl::span<::mce::ServerTexture const*> textures,
199 ::UIActorOffscreenCaptureDescription,
200 ::UIThumbnailMeshOffscreenCaptureDescription,
201 ::UIMeshOffscreenCaptureDescription,
202 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
203 ::mce::IndexBufferContainer
const* overrideIndexBuffer
206 MCAPI
void renderMesh(
207 ::mce::MeshContext& meshContext,
208 ::mce::MaterialPtr
const& materialPtr,
209 ::gsl::span<::mce::TexturePtr const> textures,
214 ::UIActorOffscreenCaptureDescription,
215 ::UIThumbnailMeshOffscreenCaptureDescription,
216 ::UIMeshOffscreenCaptureDescription,
217 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
218 ::mce::IndexBufferContainer
const* overrideIndexBuffer
221 MCAPI
void renderMesh(
222 ::mce::MeshContext& meshContext,
223 ::mce::MaterialPtr
const& materialPtr,
224 ::gsl::span<::mce::ClientTexture const*> textures,
229 ::UIActorOffscreenCaptureDescription,
230 ::UIThumbnailMeshOffscreenCaptureDescription,
231 ::UIMeshOffscreenCaptureDescription,
232 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
233 ::mce::IndexBufferContainer
const* overrideIndexBuffer
236 MCAPI
void renderMesh(
237 ::mce::MeshContext& meshContext,
238 ::mce::MaterialPtr
const& materialPtr,
239 ::std::initializer_list<::std::reference_wrapper<::mce::TexturePtr const>> textures,
244 ::UIActorOffscreenCaptureDescription,
245 ::UIThumbnailMeshOffscreenCaptureDescription,
246 ::UIMeshOffscreenCaptureDescription,
247 ::UIStructureVolumeOffscreenCaptureDescription>
const& offscreenCaptureDescription,
248 ::mce::IndexBufferContainer
const* overrideIndexBuffer
251 MCAPI
void renderMesh(
252 ::mce::MeshContext& meshContext,
253 ::dragon::RenderMetadata
const& renderMetadata,
254 ::mce::MaterialPtr
const& materialPtr,
255 ::std::variant<::std::monostate, ::mce::TexturePtr, ::mce::ClientTexture, ::mce::ServerTexture>
const& texture,
258 ::mce::IndexBufferContainer
const* overrideIndexBuffer
271 MCAPI
void*
$ctor(::mce::Mesh&& c);
273 MCAPI
void*
$ctor(::mce::Mesh
const& rhs);
276 ::std::shared_ptr<::mce::BufferResourceService>& bufferResourceService,
277 ::mce::MeshData&& data,
279 ::std::string_view debugName
Definition MaterialPtr.h:15
Definition MeshContext.h:7
Definition TexturePtr.h:7
Definition UIActorOffscreenCaptureDescription.h:5
Definition UIMeshOffscreenCaptureDescription.h:5
Definition UIStructureVolumeOffscreenCaptureDescription.h:5
Definition UIThumbnailMeshOffscreenCaptureDescription.h:5
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition BufferResourceService.h:7
Definition ClientTexture.h:7
Definition ServerTexture.h:7