3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/oreui/interface/IRenderingBackend.h"
7#include "mc/deps/core/utility/NonOwnerPointer.h"
8#include "mc/deps/minecraft_renderer/framebuilder/GamefaceBatchDraw.h"
9#include "mc/deps/minecraft_renderer/framebuilder/GamefaceBatchDrawMesh.h"
10#include "mc/deps/minecraft_renderer/framebuilder/GamefacePipelineState.h"
11#include "mc/external/gameface/renoir/CBType.h"
12#include "mc/external/gameface/renoir/ConstantBufferObject.h"
13#include "mc/external/gameface/renoir/IndexBufferObject.h"
14#include "mc/external/gameface/renoir/IndexBufferType.h"
15#include "mc/external/gameface/renoir/PipelineStateObject.h"
16#include "mc/external/gameface/renoir/RendererBackend.h"
17#include "mc/external/gameface/renoir/ResourcesCommandsStage.h"
18#include "mc/external/gameface/renoir/VertexBufferObject.h"
19#include "mc/external/gameface/renoir/VertexType.h"
20#include "mc/external/render_dragon/mesh/VertexFormat.h"
21#include "mc/external/render_dragon/resources/ServerResourcePointer.h"
42namespace renoir {
struct float2; }
71 ::ll::TypedStorage<8, 184, ::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>>
115 VertexBuffer& operator=(VertexBuffer
const&);
121 MCAPI VertexBuffer(::OreUI::RenderDragonRenderingBackend::VertexBuffer
const&);
123 MCAPI ~VertexBuffer();
129 MCAPI
void* $ctor(::OreUI::RenderDragonRenderingBackend::VertexBuffer
const&);
145 ::ll::TypedStorage<4, 4, uint> count;
146 ::ll::TypedStorage<1, 1, uchar> mStride;
147 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> data;
148 ::ll::TypedStorage<8, 24, ::mce::ServerResourcePointer<::dragon::ResolvedIndexBufferResource>>
155 MCAPI ~IndexBuffer();
169 ::ll::TypedStorage<4, 4, ::renoir::CBType> type;
170 ::ll::TypedStorage<4, 2048, ::glm::vec4[128]> data;
171 ::ll::TypedStorage<8, 8, uint64> size;
175 using PipelineStateData = ::mce::framebuilder::GamefacePipelineState;
177 using BatchDraw = ::mce::framebuilder::GamefaceBatchDraw;
182 ::ll::TypedStorage<8, 8, ::OreUI::FrameDebugData&> mFrameDebugData;
186 ::std::unordered_map<::renoir::PipelineStateObject, ::mce::framebuilder::GamefacePipelineState>>
191 ::std::unordered_map<::renoir::VertexBufferObject, ::OreUI::RenderDragonRenderingBackend::VertexBuffer>>
193 ::ll::TypedStorage<4, 8, ::std::array<::renoir::VertexBufferObject, 2>> mCurrentVertexBuffers;
194 ::ll::TypedStorage<4, 4, int> mNumVertexBuffersActive;
198 ::std::unordered_map<::renoir::IndexBufferObject, ::OreUI::RenderDragonRenderingBackend::IndexBuffer>>
200 ::ll::TypedStorage<4, 4, ::renoir::IndexBufferObject> mCurrentIndexBuffer;
204 ::std::unordered_map<::renoir::ConstantBufferObject, ::OreUI::RenderDragonRenderingBackend::ConstantBuffer>>
206 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::Gameface::IRenderingBackendTextureStorage>>> mTextures;
207 ::ll::TypedStorage<8, 144, ::mce::framebuilder::GamefacePipelineState> mCurrentPipelineState;
208 ::ll::TypedStorage<8, 464, ::mce::framebuilder::GamefaceBatchDrawMesh> mMesh;
209 ::ll::TypedStorage<8, 24, ::mce::framebuilder::GamefaceBatchDraw> mBatch;
214 RenderDragonRenderingBackend& operator=(RenderDragonRenderingBackend
const&);
215 RenderDragonRenderingBackend(RenderDragonRenderingBackend
const&);
216 RenderDragonRenderingBackend();
221 virtual ~RenderDragonRenderingBackend() ;
223 virtual void initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup>
const&) ;
225 virtual void onAppPreSuspended() ;
227 virtual void BeginCommands() ;
229 virtual void FillCaps(::renoir::RendererCaps& outCaps) ;
231 virtual void WrapUserRenderTarget(
233 ::renoir::Texture2D
const& description,
234 ::renoir::Texture2DObject
object,
236 ::renoir::DepthStencilTexture
const& dsObject,
237 ::renoir::DepthStencilTextureObject
240 virtual void WrapUserTexture(
242 ::renoir::Texture2D
const& description,
243 ::renoir::Texture2DObject
object
247 CreatePipelineState(::renoir::PipelineState
const& state, ::renoir::PipelineStateObject
object) ;
249 virtual void DestroyPipelineState(::renoir::PipelineStateObject
object) ;
252 CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject
object,
bool) ;
254 virtual void DestroyVertexBuffer(::renoir::VertexBufferObject
object) ;
256 virtual void* MapVertexBuffer(::renoir::VertexBufferObject
object) ;
258 virtual void UnmapVertexBuffer(::renoir::VertexBufferObject
object, uint count) ;
260 virtual bool CreateIndexBuffer(
261 ::renoir::IndexBufferType format,
263 ::renoir::IndexBufferObject
object,
267 virtual void DestroyIndexBuffer(::renoir::IndexBufferObject
object) ;
269 virtual void* MapIndexBuffer(::renoir::IndexBufferObject
object) ;
271 virtual void UnmapIndexBuffer(::renoir::IndexBufferObject
object, uint elemCount) ;
274 CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject
object, uint size) ;
276 virtual void DestroyConstantBuffer(::renoir::ConstantBufferObject
object) ;
278 virtual bool CreateTexture(
279 ::renoir::Texture2DObject
object,
280 ::renoir::Texture2D
const& description,
285 virtual void DestroyTexture(::renoir::Texture2DObject
object) ;
287 virtual void UpdateTexture(
288 ::renoir::Texture2DObject
object,
289 ::renoir::Texture2D
const& description,
290 ::renoir::UpdateBox* boxes,
291 void const** newBytes,
296 virtual bool CreateDepthStencilTexture(
297 ::renoir::DepthStencilTextureObject
object,
298 ::renoir::DepthStencilTexture
const& description
301 virtual void DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject
object) ;
303 virtual void CopyTextureToTexture(
304 ::renoir::Texture2DObject,
305 ::renoir::Texture2DObject,
310 virtual bool CreateSampler2D(::renoir::Sampler2DObject
object, ::renoir::Sampler2D
const& description) ;
312 virtual void DestroySampler2D(::renoir::Sampler2DObject
object) ;
314 virtual bool ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox
const&,
void*) ;
316 virtual void ExecuteRendering(
317 ::renoir::RendererBackend::BackendCommandsBuffer
const* buffers,
319 ::renoir::RendererBackend::ConstantBufferUpdateData
const* cboUpdates,
323 virtual void ExecuteResourceCommands(
324 ::renoir::RendererBackend::BackendResourceCommandsBuffer
const* buffers,
326 ::renoir::ResourcesCommandsStage
329 virtual void EndCommands() ;
335 MCAPI RenderDragonRenderingBackend(
336 ::OreUI::FrameDebugData& frameDebugData,
337 ::Gameface::TemporaryTextureHolder& temporaryTextureHolder
340 MCAPI
void _drawIndexedInstanced(uint indexCount, uint indexOffset, uint instanceCount, uint instanceOffset);
344 MCAPI
void _setPipelineState(::renoir::SetPipelineStateCmd
const& cmd);
351 $ctor(::OreUI::FrameDebugData& frameDebugData, ::Gameface::TemporaryTextureHolder& temporaryTextureHolder);
363 MCFOLD
void $initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup>
const&);
365 MCFOLD
void $onAppPreSuspended();
367 MCFOLD
void $BeginCommands();
369 MCAPI
void $FillCaps(::renoir::RendererCaps& outCaps);
371 MCAPI
void $WrapUserRenderTarget(
373 ::renoir::Texture2D
const& description,
374 ::renoir::Texture2DObject
object,
376 ::renoir::DepthStencilTexture
const& dsObject,
377 ::renoir::DepthStencilTextureObject
381 $WrapUserTexture(
void* userObject, ::renoir::Texture2D
const& description, ::renoir::Texture2DObject
object);
383 MCAPI
bool $CreatePipelineState(::renoir::PipelineState
const& state, ::renoir::PipelineStateObject
object);
385 MCAPI
void $DestroyPipelineState(::renoir::PipelineStateObject
object);
387 MCAPI
bool $CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject
object,
bool);
389 MCAPI
void $DestroyVertexBuffer(::renoir::VertexBufferObject
object);
391 MCAPI
void* $MapVertexBuffer(::renoir::VertexBufferObject
object);
393 MCAPI
void $UnmapVertexBuffer(::renoir::VertexBufferObject
object, uint count);
396 $CreateIndexBuffer(::renoir::IndexBufferType format, uint count, ::renoir::IndexBufferObject
object,
bool);
398 MCAPI
void $DestroyIndexBuffer(::renoir::IndexBufferObject
object);
400 MCAPI
void* $MapIndexBuffer(::renoir::IndexBufferObject
object);
402 MCAPI
void $UnmapIndexBuffer(::renoir::IndexBufferObject
object, uint elemCount);
404 MCAPI
bool $CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject
object, uint size);
406 MCAPI
void $DestroyConstantBuffer(::renoir::ConstantBufferObject
object);
408 MCAPI
bool $CreateTexture(
409 ::renoir::Texture2DObject
object,
410 ::renoir::Texture2D
const& description,
415 MCAPI
void $DestroyTexture(::renoir::Texture2DObject
object);
417 MCAPI
void $UpdateTexture(
418 ::renoir::Texture2DObject
object,
419 ::renoir::Texture2D
const& description,
420 ::renoir::UpdateBox* boxes,
421 void const** newBytes,
426 MCAPI
bool $CreateDepthStencilTexture(
427 ::renoir::DepthStencilTextureObject
object,
428 ::renoir::DepthStencilTexture
const& description
431 MCAPI
void $DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject
object);
433 MCFOLD
void $CopyTextureToTexture(
434 ::renoir::Texture2DObject,
435 ::renoir::Texture2DObject,
440 MCAPI
bool $CreateSampler2D(::renoir::Sampler2DObject
object, ::renoir::Sampler2D
const& description);
442 MCAPI
void $DestroySampler2D(::renoir::Sampler2DObject
object);
444 MCFOLD
bool $ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox
const&,
void*);
446 MCAPI
void $ExecuteRendering(
447 ::renoir::RendererBackend::BackendCommandsBuffer
const* buffers,
449 ::renoir::RendererBackend::ConstantBufferUpdateData
const* cboUpdates,
453 MCAPI
void $ExecuteResourceCommands(
454 ::renoir::RendererBackend::BackendResourceCommandsBuffer
const* buffers,
456 ::renoir::ResourcesCommandsStage
459 MCAPI
void $EndCommands();
Definition IRenderingBackendTextureStorage.h:7
Definition TemporaryTextureHolder.h:7
Definition RenderDragonRenderingBackend.h:7
static MCAPI void ** $vftable()
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 SetPipelineStateCmd.h:7
Definition Texture2DObject.h:7
Definition TextureObject.h:7