Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
RenderDragonRenderingBackend.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/oreui/debug/FrameDebugData.h"
7#include "mc/client/gui/oreui/interface/IRenderingBackend.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/deps/minecraft_renderer/framebuilder/GamefaceBatchDraw.h"
10#include "mc/deps/minecraft_renderer/framebuilder/GamefaceBatchDrawMesh.h"
11#include "mc/deps/minecraft_renderer/framebuilder/GamefacePipelineState.h"
12#include "mc/deps/minecraft_renderer/framebuilder/GamefaceRenderTarget.h"
13#include "mc/external/gameface/renoir/CBType.h"
14#include "mc/external/gameface/renoir/ConstantBufferObject.h"
15#include "mc/external/gameface/renoir/IndexBufferObject.h"
16#include "mc/external/gameface/renoir/IndexBufferType.h"
17#include "mc/external/gameface/renoir/PipelineStateObject.h"
18#include "mc/external/gameface/renoir/RendererBackend.h"
19#include "mc/external/gameface/renoir/ResourcesCommandsStage.h"
20#include "mc/external/gameface/renoir/VertexBufferObject.h"
21#include "mc/external/gameface/renoir/VertexType.h"
22#include "mc/external/render_dragon/mesh/VertexFormat.h"
23#include "mc/external/render_dragon/resources/ServerResourcePointer.h"
24
25// auto generated forward declare list
26// clang-format off
27namespace Gameface { class IRenderingBackendTextureStorage; }
28namespace Gameface { class TemporaryTextureHolder; }
29namespace OreUI { struct FrameDebugData; }
30namespace dragon { struct ResolvedIndexBufferResource; }
31namespace dragon { struct ResolvedVertexBufferResource; }
32namespace mce { class ShaderGroup; }
33namespace renoir { struct DepthStencilTexture; }
34namespace renoir { struct DepthStencilTextureObject; }
35namespace renoir { struct PipelineState; }
36namespace renoir { struct RendererCaps; }
37namespace renoir { struct Sampler2D; }
38namespace renoir { struct Sampler2DObject; }
39namespace renoir { struct Texture2D; }
40namespace renoir { struct Texture2DObject; }
41namespace renoir { struct TextureObject; }
42namespace renoir { struct UpdateBox; }
43namespace renoir { struct float2; }
44// clang-format on
45
46namespace OreUI {
47
48class RenderDragonRenderingBackend : public ::OreUI::IRenderingBackend {
49public:
50 // RenderDragonRenderingBackend inner types declare
51 // clang-format off
52 struct VertexBuffer;
53 struct GetGamefaceStride;
54 struct IndexBuffer;
55 struct ConstantBuffer;
56 // clang-format on
57
58 // RenderDragonRenderingBackend inner types define
59 struct VertexBuffer {
60 public:
61 // VertexBuffer inner types declare
62 // clang-format off
63 struct DragonVertexBuffer;
64 struct DragonInstanceData;
65 // clang-format on
66
67 // VertexBuffer inner types define
68 struct DragonVertexBuffer {
69 public:
70 // member variables
71 // NOLINTBEGIN
72 ::ll::TypedStorage<8, 136, ::dragon::mesh::VertexFormat> dragonFormat;
73 ::ll::TypedStorage<8, 16, ::mce::ServerResourcePointer<::dragon::ResolvedVertexBufferResource>>
74 dragonVertexBuffer;
75 // NOLINTEND
76 };
77
78 struct DragonInstanceData {
79 public:
80 // DragonInstanceData inner types define
81 using BufferConvert = void (*)(::std::vector<uchar> const&, ::std::vector<uchar>&, uint64);
82
83 public:
84 // member variables
85 // NOLINTBEGIN
86 ::ll::TypedStorage<
87 8,
88 8,
89 ::gsl::not_null<void (*)(::std::vector<uchar> const&, ::std::vector<uchar>&, uint64)>>
90 mGamefaceToDragon;
91 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mDragonInstanceBuffer;
92 ::ll::TypedStorage<1, 1, uchar> mGamefaceStride;
93 // NOLINTEND
94 };
95
96 using DragonStorage = ::std::variant<
97 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonVertexBuffer,
98 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonInstanceData>;
99
100 public:
101 // member variables
102 // NOLINTBEGIN
103 ::ll::TypedStorage<4, 4, uint> count;
104 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> data;
105 ::ll::TypedStorage<
106 8,
107 160,
108 ::std::variant<
109 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonVertexBuffer,
110 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonInstanceData>>
111 mDragonStorage;
112 // NOLINTEND
113 };
114
115 struct GetGamefaceStride {};
116
117 struct IndexBuffer {
118 public:
119 // member variables
120 // NOLINTBEGIN
121 ::ll::TypedStorage<4, 4, uint> count;
122 ::ll::TypedStorage<1, 1, uchar> mStride;
123 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> data;
124 ::ll::TypedStorage<8, 16, ::mce::ServerResourcePointer<::dragon::ResolvedIndexBufferResource>>
125 dragonIndexBuffer;
126 // NOLINTEND
127 };
128
129 struct ConstantBuffer {
130 public:
131 // member variables
132 // NOLINTBEGIN
133 ::ll::TypedStorage<4, 4, ::renoir::CBType> type;
134 ::ll::TypedStorage<4, 2048, ::glm::vec4[128]> data;
135 ::ll::TypedStorage<8, 8, uint64> size;
136 // NOLINTEND
137 };
138
139 using PipelineStateData = ::mce::framebuilder::GamefacePipelineState;
140
141 using BatchDraw = ::mce::framebuilder::GamefaceBatchDraw;
142
143public:
144 // member variables
145 // NOLINTBEGIN
146 ::ll::TypedStorage<8, 8, ::OreUI::FrameDebugData&> mFrameDebugData;
147 ::ll::TypedStorage<
148 8,
149 64,
150 ::std::unordered_map<::renoir::PipelineStateObject, ::mce::framebuilder::GamefacePipelineState>>
151 mPipelineStates;
152 ::ll::TypedStorage<
153 8,
154 64,
155 ::std::unordered_map<::renoir::VertexBufferObject, ::OreUI::RenderDragonRenderingBackend::VertexBuffer>>
156 mVertexBuffers;
157 ::ll::TypedStorage<4, 8, ::std::array<::renoir::VertexBufferObject, 2>> mCurrentVertexBuffers;
158 ::ll::TypedStorage<4, 4, int> mNumVertexBuffersActive;
159 ::ll::TypedStorage<
160 8,
161 64,
162 ::std::unordered_map<::renoir::IndexBufferObject, ::OreUI::RenderDragonRenderingBackend::IndexBuffer>>
163 mIndexBuffers;
164 ::ll::TypedStorage<4, 4, ::renoir::IndexBufferObject> mCurrentIndexBuffer;
165 ::ll::TypedStorage<
166 8,
167 64,
168 ::std::unordered_map<::renoir::ConstantBufferObject, ::OreUI::RenderDragonRenderingBackend::ConstantBuffer>>
169 mConstantBuffers;
170 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::Gameface::IRenderingBackendTextureStorage>>> mTextures;
171 ::ll::TypedStorage<4, 36, ::mce::framebuilder::GamefacePipelineState> mCurrentPipelineState;
172 ::ll::TypedStorage<8, 88, ::mce::framebuilder::GamefaceRenderTarget> mCurrentRenderTarget;
173 ::ll::TypedStorage<1, 1, uchar> mCurrentStencilRef;
174 ::ll::TypedStorage<8, 416, ::mce::framebuilder::GamefaceBatchDrawMesh> mMesh;
175 ::ll::TypedStorage<8, 24, ::mce::framebuilder::GamefaceBatchDraw> mBatch;
176 // NOLINTEND
177
178public:
179 // prevent constructor by default
180 RenderDragonRenderingBackend& operator=(RenderDragonRenderingBackend const&);
181 RenderDragonRenderingBackend(RenderDragonRenderingBackend const&);
182 RenderDragonRenderingBackend();
183
184public:
185 // virtual functions
186 // NOLINTBEGIN
187 virtual ~RenderDragonRenderingBackend() /*override*/ = default;
188
189 virtual void initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup> const&) /*override*/;
190
191 virtual void onAppPreSuspended() /*override*/;
192
193 virtual void BeginCommands() /*override*/;
194
195 virtual void FillCaps(::renoir::RendererCaps& outCaps) /*override*/;
196
197 virtual void WrapUserRenderTarget(
198 void* userObject,
199 ::renoir::Texture2D const& description,
200 ::renoir::Texture2DObject object,
201 void* depthStencil,
202 ::renoir::DepthStencilTexture const& dsDescription,
203 ::renoir::DepthStencilTextureObject dsObject
204 ) /*override*/;
205
206 virtual void WrapUserTexture(
207 void* userObject,
208 ::renoir::Texture2D const& description,
209 ::renoir::Texture2DObject object
210 ) /*override*/;
211
212 virtual bool
213 CreatePipelineState(::renoir::PipelineState const& state, ::renoir::PipelineStateObject object) /*override*/;
214
215 virtual void DestroyPipelineState(::renoir::PipelineStateObject object) /*override*/;
216
217 virtual bool
218 CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject object, bool) /*override*/;
219
220 virtual void DestroyVertexBuffer(::renoir::VertexBufferObject object) /*override*/;
221
222 virtual void* MapVertexBuffer(::renoir::VertexBufferObject object) /*override*/;
223
224 virtual void UnmapVertexBuffer(::renoir::VertexBufferObject object, uint count) /*override*/;
225
226 virtual bool CreateIndexBuffer(
227 ::renoir::IndexBufferType format,
228 uint count,
229 ::renoir::IndexBufferObject object,
230 bool
231 ) /*override*/;
232
233 virtual void DestroyIndexBuffer(::renoir::IndexBufferObject object) /*override*/;
234
235 virtual void* MapIndexBuffer(::renoir::IndexBufferObject object) /*override*/;
236
237 virtual void UnmapIndexBuffer(::renoir::IndexBufferObject object, uint elemCount) /*override*/;
238
239 virtual bool
240 CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject object, uint size) /*override*/;
241
242 virtual void DestroyConstantBuffer(::renoir::ConstantBufferObject object) /*override*/;
243
244 virtual bool CreateTexture(
245 ::renoir::Texture2DObject object,
246 ::renoir::Texture2D const& description,
247 void const* data,
248 uint dataLen
249 ) /*override*/;
250
251 virtual void DestroyTexture(::renoir::Texture2DObject object) /*override*/;
252
253 virtual void UpdateTexture(
254 ::renoir::Texture2DObject object,
255 ::renoir::Texture2D const& description,
256 ::renoir::UpdateBox* boxes,
257 void const** newBytes,
258 uint count,
259 bool
260 ) /*override*/;
261
262 virtual bool CreateDepthStencilTexture(
263 ::renoir::DepthStencilTextureObject object,
264 ::renoir::DepthStencilTexture const& description
265 ) /*override*/;
266
267 virtual void DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject object) /*override*/;
268
269 virtual void CopyTextureToTexture(
270 ::renoir::Texture2DObject,
271 ::renoir::Texture2DObject,
272 ::renoir::UpdateBox,
273 ::renoir::float2
274 ) /*override*/;
275
276 virtual bool CreateSampler2D(::renoir::Sampler2DObject object, ::renoir::Sampler2D const& description) /*override*/;
277
278 virtual void DestroySampler2D(::renoir::Sampler2DObject object) /*override*/;
279
280 virtual bool ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox const&, void*) /*override*/;
281
282 virtual void ExecuteRendering(
283 ::renoir::RendererBackend::BackendCommandsBuffer const* buffers,
284 uint buffersCount,
285 ::renoir::RendererBackend::ConstantBufferUpdateData const* cboUpdates,
286 uint numCboUpdates
287 ) /*override*/;
288
289 virtual void ExecuteResourceCommands(
290 ::renoir::RendererBackend::BackendResourceCommandsBuffer const* buffers,
291 uint buffersCount,
292 ::renoir::ResourcesCommandsStage
293 ) /*override*/;
294
295 virtual void EndCommands() /*override*/;
296 // NOLINTEND
297
298public:
299 // member functions
300 // NOLINTBEGIN
302 ::OreUI::FrameDebugData& frameDebugData,
303 ::Gameface::TemporaryTextureHolder& temporaryTextureHolder
304 );
305
306 MCNAPI void _drawIndexedInstanced(uint indexCount, uint indexOffset, uint instanceCount, uint instanceOffset);
307
308 MCNAPI void _flush(::OreUI::FrameDebugData::FlushTrigger trigger);
309 // NOLINTEND
310
311public:
312 // constructor thunks
313 // NOLINTBEGIN
314 MCNAPI void*
315 $ctor(::OreUI::FrameDebugData& frameDebugData, ::Gameface::TemporaryTextureHolder& temporaryTextureHolder);
316 // NOLINTEND
317
318public:
319 // virtual function thunks
320 // NOLINTBEGIN
322
323 MCNAPI void $onAppPreSuspended();
324
325 MCNAPI void $BeginCommands();
326
327 MCNAPI void $FillCaps(::renoir::RendererCaps& outCaps);
328
330 void* userObject,
331 ::renoir::Texture2D const& description,
333 void* depthStencil,
334 ::renoir::DepthStencilTexture const& dsDescription,
336 );
337
338 MCNAPI void
339 $WrapUserTexture(void* userObject, ::renoir::Texture2D const& description, ::renoir::Texture2DObject object);
340
342
344
345 MCNAPI bool $CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject object, bool);
346
348
350
351 MCNAPI void $UnmapVertexBuffer(::renoir::VertexBufferObject object, uint count);
352
353 MCNAPI bool
354 $CreateIndexBuffer(::renoir::IndexBufferType format, uint count, ::renoir::IndexBufferObject object, bool);
355
357
359
360 MCNAPI void $UnmapIndexBuffer(::renoir::IndexBufferObject object, uint elemCount);
361
362 MCNAPI bool $CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject object, uint size);
363
365
366 MCNAPI bool $CreateTexture(
368 ::renoir::Texture2D const& description,
369 void const* data,
370 uint dataLen
371 );
372
374
375 MCNAPI void $UpdateTexture(
377 ::renoir::Texture2D const& description,
378 ::renoir::UpdateBox* boxes,
379 void const** newBytes,
380 uint count,
381 bool
382 );
383
386 ::renoir::DepthStencilTexture const& description
387 );
388
390
396 );
397
398 MCNAPI bool $CreateSampler2D(::renoir::Sampler2DObject object, ::renoir::Sampler2D const& description);
399
401
403
404 MCNAPI void $ExecuteRendering(
406 uint buffersCount,
408 uint numCboUpdates
409 );
410
413 uint buffersCount,
414 ::renoir::ResourcesCommandsStage
415 );
416
417 MCNAPI void $EndCommands();
418 // NOLINTEND
419};
420
421} // namespace OreUI
Definition NonOwnerPointer.h:9
Definition IRenderingBackendTextureStorage.h:7
Definition TemporaryTextureHolder.h:7
Definition RenderDragonRenderingBackend.h:7
MCAPI void $UnmapIndexBuffer(::renoir::IndexBufferObject object, uint elemCount)
MCAPI void $WrapUserTexture(void *userObject, ::renoir::Texture2D const &description, ::renoir::Texture2DObject object)
MCAPI void $DestroySampler2D(::renoir::Sampler2DObject object)
MCAPI void $ExecuteResourceCommands(::renoir::RendererBackend::BackendResourceCommandsBuffer const *buffers, uint buffersCount, ::renoir::ResourcesCommandsStage)
MCAPI void _drawIndexedInstanced(uint indexCount, uint indexOffset, uint instanceCount, uint instanceOffset)
MCAPI void * $MapVertexBuffer(::renoir::VertexBufferObject object)
MCAPI void $UpdateTexture(::renoir::Texture2DObject object, ::renoir::Texture2D const &description, ::renoir::UpdateBox *boxes, void const **newBytes, uint count, bool)
MCAPI void $DestroyIndexBuffer(::renoir::IndexBufferObject object)
MCAPI bool $CreateIndexBuffer(::renoir::IndexBufferType format, uint count, ::renoir::IndexBufferObject object, bool)
MCAPI bool $ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox const &, void *)
MCAPI void * $ctor(::OreUI::FrameDebugData &frameDebugData, ::Gameface::TemporaryTextureHolder &temporaryTextureHolder)
MCAPI bool $CreateDepthStencilTexture(::renoir::DepthStencilTextureObject object, ::renoir::DepthStencilTexture const &description)
MCAPI void $DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject object)
MCAPI void $UnmapVertexBuffer(::renoir::VertexBufferObject object, uint count)
MCAPI void $DestroyConstantBuffer(::renoir::ConstantBufferObject object)
MCAPI RenderDragonRenderingBackend(::OreUI::FrameDebugData &frameDebugData, ::Gameface::TemporaryTextureHolder &temporaryTextureHolder)
MCAPI void $CopyTextureToTexture(::renoir::Texture2DObject, ::renoir::Texture2DObject, ::renoir::UpdateBox, ::renoir::float2)
MCAPI void $ExecuteRendering(::renoir::RendererBackend::BackendCommandsBuffer const *buffers, uint buffersCount, ::renoir::RendererBackend::ConstantBufferUpdateData const *cboUpdates, uint numCboUpdates)
MCAPI void $DestroyPipelineState(::renoir::PipelineStateObject object)
MCAPI bool $CreateSampler2D(::renoir::Sampler2DObject object, ::renoir::Sampler2D const &description)
MCAPI bool $CreateTexture(::renoir::Texture2DObject object, ::renoir::Texture2D const &description, void const *data, uint dataLen)
MCAPI void $WrapUserRenderTarget(void *userObject, ::renoir::Texture2D const &description, ::renoir::Texture2DObject object, void *depthStencil, ::renoir::DepthStencilTexture const &dsDescription, ::renoir::DepthStencilTextureObject dsObject)
MCAPI bool $CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject object, uint size)
MCAPI bool $CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject object, bool)
MCAPI void _flush(::OreUI::FrameDebugData::FlushTrigger trigger)
MCAPI void $FillCaps(::renoir::RendererCaps &outCaps)
MCAPI void * $MapIndexBuffer(::renoir::IndexBufferObject object)
MCAPI void $initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup > const &)
MCAPI void $DestroyVertexBuffer(::renoir::VertexBufferObject object)
MCAPI void $DestroyTexture(::renoir::Texture2DObject object)
MCAPI bool $CreatePipelineState(::renoir::PipelineState const &state, ::renoir::PipelineStateObject object)
Definition ShaderGroup.h:7
Definition FrameDebugData.h:7
Definition RenderDragonRenderingBackend.h:36
Definition RenderDragonRenderingBackend.h:32
Definition RenderDragonRenderingBackend.h:34
Definition RenderDragonRenderingBackend.h:18
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition ConstantBufferObject.h:7
Definition DepthStencilTextureObject.h:7
Definition DepthStencilTexture.h:7
Definition IndexBufferObject.h:7
Definition PipelineStateObject.h:7
Definition PipelineState.h:7
Definition RendererBackend.h:19
Definition RendererCaps.h:7
Definition Sampler2DObject.h:7
Definition Sampler2D.h:7
Definition Texture2DObject.h:7
Definition Texture2D.h:7
Definition TextureObject.h:7
Definition UpdateBox.h:7
Definition VertexBufferObject.h:7
Definition float2.h:7