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/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"
43namespace renoir {
struct float2; }
72 ::ll::TypedStorage<8, 136, ::dragon::mesh::VertexFormat> dragonFormat;
73 ::ll::TypedStorage<8, 16, ::mce::ServerResourcePointer<::dragon::ResolvedVertexBufferResource>>
81 using BufferConvert = void (*)(::std::vector<uchar>
const&, ::std::vector<uchar>&, uint64);
89 ::gsl::not_null<void (*)(::std::vector<uchar>
const&, ::std::vector<uchar>&, uint64)>>
91 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> mDragonInstanceBuffer;
92 ::ll::TypedStorage<1, 1, uchar> mGamefaceStride;
96 using DragonStorage = ::std::variant<
97 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonVertexBuffer,
98 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonInstanceData>;
103 ::ll::TypedStorage<4, 4, uint> count;
104 ::ll::TypedStorage<8, 24, ::std::vector<uchar>> data;
109 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonVertexBuffer,
110 ::OreUI::RenderDragonRenderingBackend::VertexBuffer::DragonInstanceData>>
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>>
133 ::ll::TypedStorage<4, 4, ::renoir::CBType> type;
134 ::ll::TypedStorage<4, 2048, ::glm::vec4[128]> data;
135 ::ll::TypedStorage<8, 8, uint64> size;
139 using PipelineStateData = ::mce::framebuilder::GamefacePipelineState;
141 using BatchDraw = ::mce::framebuilder::GamefaceBatchDraw;
146 ::ll::TypedStorage<8, 8, ::OreUI::FrameDebugData&> mFrameDebugData;
150 ::std::unordered_map<::renoir::PipelineStateObject, ::mce::framebuilder::GamefacePipelineState>>
155 ::std::unordered_map<::renoir::VertexBufferObject, ::OreUI::RenderDragonRenderingBackend::VertexBuffer>>
157 ::ll::TypedStorage<4, 8, ::std::array<::renoir::VertexBufferObject, 2>> mCurrentVertexBuffers;
158 ::ll::TypedStorage<4, 4, int> mNumVertexBuffersActive;
162 ::std::unordered_map<::renoir::IndexBufferObject, ::OreUI::RenderDragonRenderingBackend::IndexBuffer>>
164 ::ll::TypedStorage<4, 4, ::renoir::IndexBufferObject> mCurrentIndexBuffer;
168 ::std::unordered_map<::renoir::ConstantBufferObject, ::OreUI::RenderDragonRenderingBackend::ConstantBuffer>>
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;
180 RenderDragonRenderingBackend& operator=(RenderDragonRenderingBackend
const&);
181 RenderDragonRenderingBackend(RenderDragonRenderingBackend
const&);
182 RenderDragonRenderingBackend();
187 virtual ~RenderDragonRenderingBackend() =
default;
189 virtual void initializeStaticResources(::Bedrock::NonOwnerPointer<::mce::ShaderGroup>
const&) ;
191 virtual void onAppPreSuspended() ;
193 virtual void BeginCommands() ;
195 virtual void FillCaps(::renoir::RendererCaps& outCaps) ;
197 virtual void WrapUserRenderTarget(
199 ::renoir::Texture2D
const& description,
200 ::renoir::Texture2DObject
object,
202 ::renoir::DepthStencilTexture
const& dsDescription,
203 ::renoir::DepthStencilTextureObject dsObject
206 virtual void WrapUserTexture(
208 ::renoir::Texture2D
const& description,
209 ::renoir::Texture2DObject
object
213 CreatePipelineState(::renoir::PipelineState
const& state, ::renoir::PipelineStateObject
object) ;
215 virtual void DestroyPipelineState(::renoir::PipelineStateObject
object) ;
218 CreateVertexBuffer(::renoir::VertexType type, uint count, ::renoir::VertexBufferObject
object,
bool) ;
220 virtual void DestroyVertexBuffer(::renoir::VertexBufferObject
object) ;
222 virtual void* MapVertexBuffer(::renoir::VertexBufferObject
object) ;
224 virtual void UnmapVertexBuffer(::renoir::VertexBufferObject
object, uint count) ;
226 virtual bool CreateIndexBuffer(
227 ::renoir::IndexBufferType format,
229 ::renoir::IndexBufferObject
object,
233 virtual void DestroyIndexBuffer(::renoir::IndexBufferObject
object) ;
235 virtual void* MapIndexBuffer(::renoir::IndexBufferObject
object) ;
237 virtual void UnmapIndexBuffer(::renoir::IndexBufferObject
object, uint elemCount) ;
240 CreateConstantBuffer(::renoir::CBType type, ::renoir::ConstantBufferObject
object, uint size) ;
242 virtual void DestroyConstantBuffer(::renoir::ConstantBufferObject
object) ;
244 virtual bool CreateTexture(
245 ::renoir::Texture2DObject
object,
246 ::renoir::Texture2D
const& description,
251 virtual void DestroyTexture(::renoir::Texture2DObject
object) ;
253 virtual void UpdateTexture(
254 ::renoir::Texture2DObject
object,
255 ::renoir::Texture2D
const& description,
256 ::renoir::UpdateBox* boxes,
257 void const** newBytes,
262 virtual bool CreateDepthStencilTexture(
263 ::renoir::DepthStencilTextureObject
object,
264 ::renoir::DepthStencilTexture
const& description
267 virtual void DestroyDepthStencilTexture(::renoir::DepthStencilTextureObject
object) ;
269 virtual void CopyTextureToTexture(
270 ::renoir::Texture2DObject,
271 ::renoir::Texture2DObject,
276 virtual bool CreateSampler2D(::renoir::Sampler2DObject
object, ::renoir::Sampler2D
const& description) ;
278 virtual void DestroySampler2D(::renoir::Sampler2DObject
object) ;
280 virtual bool ReadTexture(::renoir::TextureObject, ::renoir::UpdateBox
const&,
void*) ;
282 virtual void ExecuteRendering(
283 ::renoir::RendererBackend::BackendCommandsBuffer
const* buffers,
285 ::renoir::RendererBackend::ConstantBufferUpdateData
const* cboUpdates,
289 virtual void ExecuteResourceCommands(
290 ::renoir::RendererBackend::BackendResourceCommandsBuffer
const* buffers,
292 ::renoir::ResourcesCommandsStage
295 virtual void EndCommands() ;
308 MCNAPI
void _flush(::OreUI::FrameDebugData::FlushTrigger trigger);
379 void const** newBytes,
414 ::renoir::ResourcesCommandsStage
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 $EndCommands()
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 $BeginCommands()
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 $onAppPreSuspended()
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:29
Definition RenderDragonRenderingBackend.h:27
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 RendererBackend.h:21
Definition RendererBackend.h:23
Definition RendererCaps.h:7
Definition Sampler2DObject.h:7
Definition Texture2DObject.h:7
Definition TextureObject.h:7
Definition VertexBufferObject.h:7