3#include "mc/_HeaderOutputPredefine.h"
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/external/gameface/renoir/CBType.h"
13#include "mc/external/gameface/renoir/ConstantBufferObject.h"
14#include "mc/external/gameface/renoir/IndexBufferObject.h"
15#include "mc/external/gameface/renoir/IndexBufferType.h"
16#include "mc/external/gameface/renoir/PipelineStateObject.h"
17#include "mc/external/gameface/renoir/RendererBackend.h"
18#include "mc/external/gameface/renoir/ResourcesCommandsStage.h"
19#include "mc/external/gameface/renoir/VertexBufferObject.h"
20#include "mc/external/gameface/renoir/VertexType.h"
21#include "mc/external/render_dragon/mesh/VertexFormat.h"
22#include "mc/external/render_dragon/resources/ServerResourcePointer.h"
42namespace renoir {
struct float2; }
71 ::ll::TypedStorage<8, 136, ::dragon::mesh::VertexFormat> dragonFormat;
72 ::ll::TypedStorage<8, 24, ::mce::ServerResourcePointer<::dragon::ResolvedVertexBufferResource>>
80 using BufferConvert = void (*)(::std::vector<uchar>
const&, ::std::vector<uchar>&, uint64);
88 ::gsl::not_null<void (*)(::std::vector<uchar>
const&, ::std::vector<uchar>&, uint64)>>
90 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mDragonInstanceBuffer;
91 ::ll::TypedStorage<1, 1, uchar> mGamefaceStride;
95 using DragonStorage = ::std::variant<
96 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonVertexBuffer,
97 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonInstanceData>;
102 ::ll::TypedStorage<4, 4, uint> count;
103 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> data;
108 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonVertexBuffer,
109 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonInstanceData>>
120 ::ll::TypedStorage<4, 4, uint> count;
121 ::ll::TypedStorage<1, 1, uchar> mStride;
122 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> data;
123 ::ll::TypedStorage<8, 24, ::mce::ServerResourcePointer<::dragon::ResolvedIndexBufferResource>>
132 ::ll::TypedStorage<4, 4, ::renoir::CBType> type;
133 ::ll::TypedStorage<4, 2048, ::glm::vec4[128]> data;
134 ::ll::TypedStorage<8, 8, uint64> size;
138 using PipelineStateData = ::mce::framebuilder::GamefacePipelineState;
140 using BatchDraw = ::mce::framebuilder::GamefaceBatchDraw;
145 ::ll::TypedStorage<8, 8, ::OreUI::FrameDebugData&> mFrameDebugData;
149 ::std::unordered_map<::renoir::PipelineStateObject, ::mce::framebuilder::GamefacePipelineState>>
154 ::std::unordered_map<::renoir::VertexBufferObject, ::OreUI::RenderDragonRenderingBackend::VertexBuffer>>
156 ::ll::TypedStorage<4, 8, ::std::array<::renoir::VertexBufferObject, 2>> mCurrentVertexBuffers;
157 ::ll::TypedStorage<4, 4, int> mNumVertexBuffersActive;
161 ::std::unordered_map<::renoir::IndexBufferObject, ::OreUI::RenderDragonRenderingBackend::IndexBuffer>>
163 ::ll::TypedStorage<4, 4, ::renoir::IndexBufferObject> mCurrentIndexBuffer;
167 ::std::unordered_map<::renoir::ConstantBufferObject, ::OreUI::RenderDragonRenderingBackend::ConstantBuffer>>
169 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::Gameface::IRenderingBackendTextureStorage>>> mTextures;
170 ::ll::TypedStorage<8, 144, ::mce::framebuilder::GamefacePipelineState> mCurrentPipelineState;
171 ::ll::TypedStorage<8, 424, ::mce::framebuilder::GamefaceBatchDrawMesh> mMesh;
172 ::ll::TypedStorage<8, 24, ::mce::framebuilder::GamefaceBatchDraw> mBatch;
177 RenderDragonRenderingBackend& operator=(RenderDragonRenderingBackend
const&);
178 RenderDragonRenderingBackend(RenderDragonRenderingBackend
const&);
179 RenderDragonRenderingBackend();
184 virtual ~RenderDragonRenderingBackend() =
default;
186 virtual void initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup>
const&) ;
188 virtual void onAppPreSuspended() ;
190 virtual void BeginCommands() ;
192 virtual void FillCaps(::renoir::RendererCaps& outCaps) ;
194 virtual void WrapUserRenderTarget(
196 ::renoir::Texture2D
const& description,
197 ::renoir::Texture2DObject
object,
199 ::renoir::DepthStencilTexture
const& dsDescription,
200 ::renoir::DepthStencilTextureObject dsObject
203 virtual void WrapUserTexture(
205 ::renoir::Texture2D
const& description,
206 ::renoir::Texture2DObject
object
210 CreatePipelineState(::renoir::PipelineState
const& state, ::renoir::PipelineStateObject
object) ;
212 virtual void DestroyPipelineState(::renoir::PipelineStateObject
object) ;
215 CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject
object,
bool) ;
217 virtual void DestroyVertexBuffer(::renoir::VertexBufferObject
object) ;
219 virtual void* MapVertexBuffer(::renoir::VertexBufferObject
object) ;
221 virtual void UnmapVertexBuffer(::renoir::VertexBufferObject
object, uint count) ;
223 virtual bool CreateIndexBuffer(
224 ::renoir::IndexBufferType format,
226 ::renoir::IndexBufferObject
object,
230 virtual void DestroyIndexBuffer(::renoir::IndexBufferObject
object) ;
232 virtual void* MapIndexBuffer(::renoir::IndexBufferObject
object) ;
234 virtual void UnmapIndexBuffer(::renoir::IndexBufferObject
object, uint elemCount) ;
237 CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject
object, uint size) ;
239 virtual void DestroyConstantBuffer(::renoir::ConstantBufferObject
object) ;
241 virtual bool CreateTexture(
242 ::renoir::Texture2DObject
object,
243 ::renoir::Texture2D
const& description,
248 virtual void DestroyTexture(::renoir::Texture2DObject
object) ;
250 virtual void UpdateTexture(
251 ::renoir::Texture2DObject
object,
252 ::renoir::Texture2D
const& description,
253 ::renoir::UpdateBox* boxes,
254 void const** newBytes,
259 virtual bool CreateDepthStencilTexture(
260 ::renoir::DepthStencilTextureObject
object,
261 ::renoir::DepthStencilTexture
const& description
264 virtual void DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject
object) ;
266 virtual void CopyTextureToTexture(
267 ::renoir::Texture2DObject,
268 ::renoir::Texture2DObject,
273 virtual bool CreateSampler2D(::renoir::Sampler2DObject
object, ::renoir::Sampler2D
const& description) ;
275 virtual void DestroySampler2D(::renoir::Sampler2DObject
object) ;
277 virtual bool ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox
const&,
void*) ;
279 virtual void ExecuteRendering(
280 ::renoir::RendererBackend::BackendCommandsBuffer
const* buffers,
282 ::renoir::RendererBackend::ConstantBufferUpdateData
const* cboUpdates,
286 virtual void ExecuteResourceCommands(
287 ::renoir::RendererBackend::BackendResourceCommandsBuffer
const* buffers,
289 ::renoir::ResourcesCommandsStage
292 virtual void EndCommands() ;
298 MCAPI RenderDragonRenderingBackend(
299 ::OreUI::FrameDebugData& frameDebugData,
300 ::Gameface::TemporaryTextureHolder& temporaryTextureHolder
303 MCAPI
void _drawIndexedInstanced(uint indexCount, uint indexOffset, uint instanceCount, uint instanceOffset);
305 MCAPI
void _flush(::OreUI::FrameDebugData::FlushTrigger trigger);
312 $ctor(::OreUI::FrameDebugData& frameDebugData, ::Gameface::TemporaryTextureHolder& temporaryTextureHolder);
318 MCFOLD
void $initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup>
const&);
320 MCFOLD
void $onAppPreSuspended();
322 MCFOLD
void $BeginCommands();
324 MCAPI
void $FillCaps(::renoir::RendererCaps& outCaps);
326 MCAPI
void $WrapUserRenderTarget(
328 ::renoir::Texture2D
const& description,
329 ::renoir::Texture2DObject
object,
331 ::renoir::DepthStencilTexture
const& dsDescription,
332 ::renoir::DepthStencilTextureObject dsObject
336 $WrapUserTexture(
void* userObject, ::renoir::Texture2D
const& description, ::renoir::Texture2DObject
object);
338 MCAPI
bool $CreatePipelineState(::renoir::PipelineState
const& state, ::renoir::PipelineStateObject
object);
340 MCAPI
void $DestroyPipelineState(::renoir::PipelineStateObject
object);
342 MCAPI
bool $CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject
object,
bool);
344 MCAPI
void $DestroyVertexBuffer(::renoir::VertexBufferObject
object);
346 MCAPI
void* $MapVertexBuffer(::renoir::VertexBufferObject
object);
348 MCAPI
void $UnmapVertexBuffer(::renoir::VertexBufferObject
object, uint count);
351 $CreateIndexBuffer(::renoir::IndexBufferType format, uint count, ::renoir::IndexBufferObject
object,
bool);
353 MCAPI
void $DestroyIndexBuffer(::renoir::IndexBufferObject
object);
355 MCAPI
void* $MapIndexBuffer(::renoir::IndexBufferObject
object);
357 MCAPI
void $UnmapIndexBuffer(::renoir::IndexBufferObject
object, uint elemCount);
359 MCAPI
bool $CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject
object, uint size);
361 MCAPI
void $DestroyConstantBuffer(::renoir::ConstantBufferObject
object);
363 MCAPI
bool $CreateTexture(
364 ::renoir::Texture2DObject
object,
365 ::renoir::Texture2D
const& description,
370 MCAPI
void $DestroyTexture(::renoir::Texture2DObject
object);
372 MCAPI
void $UpdateTexture(
373 ::renoir::Texture2DObject
object,
374 ::renoir::Texture2D
const& description,
375 ::renoir::UpdateBox* boxes,
376 void const** newBytes,
381 MCAPI
bool $CreateDepthStencilTexture(
382 ::renoir::DepthStencilTextureObject
object,
383 ::renoir::DepthStencilTexture
const& description
386 MCAPI
void $DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject
object);
388 MCFOLD
void $CopyTextureToTexture(
389 ::renoir::Texture2DObject,
390 ::renoir::Texture2DObject,
395 MCAPI
bool $CreateSampler2D(::renoir::Sampler2DObject
object, ::renoir::Sampler2D
const& description);
397 MCAPI
void $DestroySampler2D(::renoir::Sampler2DObject
object);
399 MCFOLD
bool $ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox
const&,
void*);
401 MCAPI
void $ExecuteRendering(
402 ::renoir::RendererBackend::BackendCommandsBuffer
const* buffers,
404 ::renoir::RendererBackend::ConstantBufferUpdateData
const* cboUpdates,
408 MCAPI
void $ExecuteResourceCommands(
409 ::renoir::RendererBackend::BackendResourceCommandsBuffer
const* buffers,
411 ::renoir::ResourcesCommandsStage
414 MCAPI
void $EndCommands();
Definition IRenderingBackendTextureStorage.h:7
Definition TemporaryTextureHolder.h:7
Definition RenderDragonRenderingBackend.h:7
Definition ShaderGroup.h:7
Definition FrameDebugData.h:7
Definition RenderDragonRenderingBackend.h:36
Definition RenderDragonRenderingBackend.h:32
Definition RenderDragonRenderingBackend.h:34
Definition RenderDragonRenderingBackend.h:29
Definition RenderDragonRenderingBackend.h:27
Definition RenderDragonRenderingBackend.h:18
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition DepthStencilTextureObject.h:7
Definition DepthStencilTexture.h:7
Definition PipelineState.h:7
Definition RendererCaps.h:7
Definition Sampler2DObject.h:7
Definition Texture2DObject.h:7
Definition TextureObject.h:7