3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/external/bgfx/AccelerationStructureHandle.h"
7#include "mc/external/bgfx/BlasCompactionState.h"
8#include "mc/external/bgfx/BufferD3D12.h"
9#include "mc/external/bgfx/CommandQueueD3D12.h"
10#include "mc/external/bgfx/Dxgi.h"
11#include "mc/external/bgfx/Enum.h"
12#include "mc/external/bgfx/FatalError.h"
13#include "mc/external/bgfx/FenceSyncContext.h"
14#include "mc/external/bgfx/FrameBufferD3D12.h"
15#include "mc/external/bgfx/FrameBufferHandle.h"
16#include "mc/external/bgfx/GuardedPagedHeapBackedArray.h"
17#include "mc/external/bgfx/IndexBufferHandle.h"
18#include "mc/external/bgfx/OcclusionQueryD3D12.h"
19#include "mc/external/bgfx/ProfilerEvents.h"
20#include "mc/external/bgfx/ProgramD3D12.h"
21#include "mc/external/bgfx/RendererContextI.h"
22#include "mc/external/bgfx/Resolution.h"
23#include "mc/external/bgfx/ResourceStatesMananger.h"
24#include "mc/external/bgfx/RingBuffer.h"
25#include "mc/external/bgfx/RingBufferAllocator.h"
26#include "mc/external/bgfx/ShaderD3D12.h"
27#include "mc/external/bgfx/SwapChainDesc.h"
28#include "mc/external/bgfx/TextVideoMem.h"
29#include "mc/external/bgfx/TimerQueryD3D12.h"
30#include "mc/external/bgfx/UniformRegistry.h"
31#include "mc/external/bgfx/VertexBufferD3D12.h"
32#include "mc/external/bgfx/VertexBufferHandle.h"
33#include "mc/external/bgfx/VertexDecl.h"
34#include "mc/external/bgfx/VertexDeclHandle.h"
35#include "mc/external/bgfx/ViewProfilerManager.h"
36#include "mc/external/bgfx/acceleration_structure_build_flags/Enum.h"
37#include "mc/external/bgfx/renderer_type/Enum.h"
38#include "mc/external/bgfx/texture_format/Enum.h"
39#include "mc/external/bgfx/uniform_type/Enum.h"
46namespace bgfx {
struct Frame; }
47namespace bgfx {
struct Handle; }
48namespace bgfx {
struct Init; }
49namespace bgfx {
struct Matrix4; }
50namespace bgfx {
struct Memory; }
55namespace bgfx {
struct Rect; }
72namespace bgfx::d3d12 {
86 enum class BufferHeapUpdateMode :
int {
95 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
96 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::TopLevelInstanceDesc>> m_tlasInstanceDescs;
102 MCAPI ~TlasBuildRequest();
116 ::ll::TypedStorage<8, 56, ::D3D12_RAYTRACING_GEOMETRY_DESC> m_desc;
117 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
118 ::ll::TypedStorage<4, 4, ::D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS> m_flags;
119 ::ll::TypedStorage<4, 4, uint> m_scratchSize;
127 ::ll::TypedStorage<4, 4, ::bgfx::d3d12::BlasCompactionState> m_state;
128 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
129 ::ll::TypedStorage<4, 4, uint> m_beforeSize;
130 ::ll::TypedStorage<4, 4, uint> m_afterSize;
131 ::ll::TypedStorage<4, 4, uint> m_frameCountOfLastUpdate;
132 ::ll::TypedStorage<4, 4, int> m_sizeRequestIndex;
140 ::ll::TypedStorage<2, 2, ::bgfx::VertexBufferHandle> m_vb;
141 ::ll::TypedStorage<2, 2, ::bgfx::VertexDeclHandle> m_vbDecl;
142 ::ll::TypedStorage<2, 2, ushort> m_vertexStrideBytes;
143 ::ll::TypedStorage<2, 2, ::bgfx::IndexBufferHandle> m_ib;
144 ::ll::TypedStorage<4, 4, uint> m_verticesCount;
145 ::ll::TypedStorage<4, 4, uint> m_vertexOffsetInBaseVertices;
146 ::ll::TypedStorage<4, 4, uint> m_vertexOffsetInParallelVertices;
147 ::ll::TypedStorage<4, 4, uint> m_indicesCount;
148 ::ll::TypedStorage<4, 4, uint> m_indexOffsetInIndices;
149 ::ll::TypedStorage<2, 2, ushort> m_indexSize;
150 ::ll::TypedStorage<4, 4, uint> m_frameCountOfCreation;
151 ::ll::TypedStorage<4, 4, uint> m_frameCountOfUpdate;
152 ::ll::TypedStorage<4, 4, uint> m_mostRecentFrameInTLAS;
153 ::ll::TypedStorage<2, 2, ushort> m_flags;
154 ::ll::TypedStorage<2, 2, ushort> m_objectInstanceIdx;
155 ::ll::TypedStorage<2, 2, ushort> m_previousObjectInstanceIdx;
156 bool m_needFaceDataUpdate : 1;
164 ::ll::TypedStorage<8, 8, int64> m_flipCompletionTime;
165 ::ll::TypedStorage<8, 8, int64> m_gpuFlipRequestTime;
166 ::ll::TypedStorage<8, 8, int64> m_cpuFlipRequestTime;
170 using ASScratchBuffer =
171 ::bgfx::RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>;
176 ::ll::TypedStorage<8, 8, ::ID3D12DescriptorHeap*> m_rtvDescriptorHeap;
177 ::ll::TypedStorage<8, 8, ::ID3D12DescriptorHeap*> m_dsvDescriptorHeap;
178 ::ll::TypedStorage<8, 24, ::ID3D12Resource* [3]> m_backBufferColor;
179 ::ll::TypedStorage<8, 24, uint64[3]> m_backBufferColorFence;
180 ::ll::TypedStorage<8, 8, ::ID3D12Resource*> m_backBufferDepthStencil;
181 ::ll::TypedStorage<4, 4, uint> m_frameCount;
182 ::ll::TypedStorage<1, 1, bool> m_rldoEnabled;
183 ::ll::TypedStorage<1, 1, bool> m_useBufferHeaps;
184 ::ll::TypedStorage<8, 448, ::bgfx::Dxgi> m_dxgi;
185 ::ll::TypedStorage<8, 8, void*> m_kernel32dll;
186 ::ll::TypedStorage<8, 8, void*> m_d3d12dll;
187 ::ll::TypedStorage<8, 8, void*> m_renderdocdll;
188 ::ll::TypedStorage<8, 8, void*> m_winPixEvent;
194 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<2>>>>
196 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::FenceSyncContext> m_sync;
197 ::ll::TypedStorage<4, 4, ::D3D_FEATURE_LEVEL> m_featureLevel;
198 ::ll::TypedStorage<4, 4, ::D3D_SHADER_MODEL> m_shaderModel;
199 ::ll::TypedStorage<4, 4, ::D3D_DRIVER_TYPE> m_driverType;
200 ::ll::TypedStorage<4, 16, ::D3D12_FEATURE_DATA_ARCHITECTURE> m_architecture;
201 ::ll::TypedStorage<4, 60, ::D3D12_FEATURE_DATA_D3D12_OPTIONS> m_options;
202 ::ll::TypedStorage<8, 8, void*> m_swapchainWaitableObject;
203 ::ll::TypedStorage<8, 8, ::IDXGISwapChain3*> m_swapChain;
204 ::ll::TypedStorage<8, 8, ::ID3D12Resource*> m_msaaRenderTarget;
205 ::ll::TypedStorage<8, 8, int64> m_presentElapsed;
206 ::ll::TypedStorage<2, 2, ushort> m_numWindows;
207 ::ll::TypedStorage<2, 256, ::bgfx::FrameBufferHandle[128]> m_windows;
208 ::ll::TypedStorage<8, 8, ::ID3D12Device*> m_device;
209 ::ll::TypedStorage<8, 8, ::ID3D12Device5*> m_device5;
210 ::ll::TypedStorage<8, 30880, ::bgfx::d3d12::TimerQueryD3D12> m_gpuTimer;
211 ::ll::TypedStorage<8, 552, ::bgfx::d3d12::OcclusionQueryD3D12> m_occlusionQuery;
212 ::ll::TypedStorage<8, 73768, ::bgfx::ViewProfilerManager<::bgfx::d3d12::TimerQueryD3D12>> m_profiler;
213 ::ll::TypedStorage<1, 1, ::bgfx::ProfilerEvents> m_profilerEvents;
214 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::BufferHeap* [7]> m_bufferHeaps;
215 ::ll::TypedStorage<8, 24, ::ID3D12CommandSignature* [3]> m_commandSignature;
216 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::CommandList*> m_globalCommands;
217 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::bgfx::d3d12::CommandContextD3D12>>> m_commandContext;
218 ::ll::TypedStorage<4, 12, ::bgfx::Resolution> m_resolution;
219 ::ll::TypedStorage<1, 1, bool> m_wireframe;
220 ::ll::TypedStorage<1, 1, bool> m_fatal;
221 ::ll::TypedStorage<4, 8, ::bgfx::FatalError> m_fatalError;
222 ::ll::TypedStorage<8, 72, ::bgfx::SwapChainDesc> m_scd;
223 ::ll::TypedStorage<4, 4, uint> m_maxAnisotropy;
224 ::ll::TypedStorage<1, 1, bool> m_depthClamp;
225 ::ll::TypedStorage<1, 1, bool> m_flipped;
226 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::TlasBuildRequest>> m_tlasBuildRequests;
227 ::ll::TypedStorage<1, 1, bool> m_tlasValid;
228 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasBuildRequest>> m_blasBuildRequests;
229 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasCompactionRequest>>
230 m_blasCompactionRequests;
231 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_compactedAsBuffers;
232 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_asBuffersCompactionSizes;
233 ::ll::TypedStorage<8, 24, ::std::vector<::ID3D12Resource*>> m_asBuffersCompactionSizesReadback;
234 ::ll::TypedStorage<8, 24, ::std::vector<uint>> m_asCompactionCountList;
235 ::ll::TypedStorage<1, 1, bool> m_asCompactionCountListAvailable;
236 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::BufferD3D12>> m_freeASBuffers;
242 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>>>
244 ::ll::TypedStorage<4, 1703936, ::bgfx::d3d12::RendererContextD3D12::BLASGeometryInfo[32768]> m_blasGeometryInfo;
245 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_blasQuadIndexBuffer;
246 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_asBuffers;
247 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_indexBuffers;
248 ::ll::TypedStorage<8, 524288, ::bgfx::d3d12::VertexBufferD3D12[4096]> m_vertexBuffers;
249 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_shaderBuffers;
250 ::ll::TypedStorage<8, 753664, ::bgfx::d3d12::ShaderD3D12[4096]> m_shaders;
251 ::ll::TypedStorage<8, 507904, ::bgfx::d3d12::ProgramD3D12[2048]> m_program;
252 ::ll::TypedStorage<8, 753696, ::bgfx::GuardedPagedHeapBackedArray<::bgfx::d3d12::TextureD3D12, 4096>> m_textures;
253 ::ll::TypedStorage<4, 5376, ::bgfx::VertexDecl[64]> m_vertexDecls;
254 ::ll::TypedStorage<8, 13312, ::bgfx::d3d12::FrameBufferD3D12[128]> m_frameBuffers;
255 ::ll::TypedStorage<4, 7176, ::bgfx::UniformRegistry> m_uniformReg;
256 ::ll::TypedStorage<8, 16, ::std::map<uint, ::bgfx::d3d12::RendererContextD3D12::PresentTimings>> m_presentTimings;
257 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::RendererContextD3D12::PresentTimings*> m_completedTiming;
258 ::ll::TypedStorage<8, 24, ::bgfx::TextVideoMem> m_textVideoMem;
259 ::ll::TypedStorage<4, 4, uint> m_backBufferColorIdx;
260 ::ll::TypedStorage<1, 1, bool> m_directAccessSupport;
261 ::ll::TypedStorage<8, 183184, ::bgfx::d3d12::ResourceStatesMananger> m_states;
262 ::ll::TypedStorage<8, 49860952, ::bgfx::d3d12::CommandQueueD3D12> m_cmd;
263 ::ll::TypedStorage<8, 80, ::std::mutex> m_cmdCreateMtx;
269 virtual ~RendererContextD3D12() ;
271 virtual bool init(::bgfx::Init
const& _init);
273 virtual void shutdown();
275 virtual ::bgfx::RendererType::Enum getRendererType() const ;
277 virtual uint64 getRendererVersion() const ;
279 virtual uint64 getShaderVersion() const ;
281 virtual
char const* getRendererName() const ;
283 virtual
bool isDeviceRemoved() ;
285 virtual
void suspend() ;
287 virtual
void resume() ;
289 virtual
void advanceToNextFrame() ;
291 virtual
void flip() ;
293 virtual
void waitForFlipQueue() ;
296 createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags) ;
298 virtual
void destroyIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
300 virtual
void createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl) ;
302 virtual
void destroyVertexDecl(::bgfx::VertexDeclHandle) ;
304 virtual
void createVertexBuffer(
305 ::bgfx::VertexBufferHandle _handle,
306 ::bgfx::Memory const* _mem,
307 ::bgfx::VertexDeclHandle _declHandle,
311 virtual
void destroyVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
313 virtual
void createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags) ;
315 virtual
void updateDynamicIndexBuffer(
316 ::bgfx::IndexBufferHandle _handle,
319 ::bgfx::Memory const* _mem
322 virtual
void destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
324 virtual
void createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags) ;
326 virtual
void updateDynamicVertexBuffer(
327 ::bgfx::VertexBufferHandle _handle,
330 ::bgfx::Memory const* _mem
333 virtual
void destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
335 virtual
void createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem) ;
337 virtual
void destroyShader(::bgfx::ShaderHandle _handle) ;
340 createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh) ;
342 virtual
void destroyProgram(::bgfx::ProgramHandle _handle) ;
344 virtual
void* createTexture(
345 ::bgfx::TextureHandle _handle,
346 ::bgfx::Memory const* _mem,
349 ::bgfx::Memory const** _imageContainerData
352 virtual
void updateTextureBegin(::bgfx::TextureHandle, uchar, uchar) ;
354 virtual
void updateTexture(
355 ::bgfx::TextureHandle _handle,
358 ::bgfx::Rect const& _rect,
362 ::bgfx::Memory const* _mem
365 virtual
void updateTextureEnd() ;
367 virtual
void readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip) ;
369 virtual
void resizeTexture(
370 ::bgfx::TextureHandle _handle,
377 virtual
void wrapExternalTexture(
378 ::bgfx::TextureHandle _handle,
379 ::bgfx::RendererType::Enum _type,
384 virtual
void overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint) ;
386 virtual uint64 getInternal(::bgfx::TextureHandle _handle) ;
388 virtual
void destroyTexture(::bgfx::TextureHandle _handle) ;
391 createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags) ;
394 updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem) ;
396 virtual
void destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle) ;
398 virtual
void createBottomLevelAccelerationStructure(
399 ::bgfx::AccelerationStructureHandle _handle,
400 ::bgfx::VertexBufferHandle _vertexBufferHandle,
401 ::bgfx::VertexDeclHandle _vertexDeclHandle,
403 uint _vertexOffsetBytes,
404 ::bgfx::IndexBufferHandle _indexBufferHandle,
406 uint _indexOffsetBytes,
408 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
411 virtual
void destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle) ;
413 virtual
void createTopLevelAccelerationStructure(
414 ::bgfx::AccelerationStructureHandle _handle,
416 ::bgfx::TopLevelInstanceDesc* _instanceDescs
419 virtual
void createFrameBuffer(
420 ::bgfx::FrameBufferHandle _handle,
422 ::bgfx::Attachment const* _attachment
425 virtual
void createFrameBuffer(
426 ::bgfx::FrameBufferHandle _handle,
430 ::bgfx::TextureFormat::Enum _depthFormat
433 virtual
void destroyFrameBuffer(::bgfx::FrameBufferHandle _handle) ;
435 virtual
void createUniform(
436 ::bgfx::UniformHandle _handle,
437 ::bgfx::UniformType::Enum _type,
442 virtual
void destroyUniform(::bgfx::UniformHandle _handle) ;
444 virtual
void requestScreenShot(::bgfx::FrameBufferHandle _filePath,
char const*) ;
446 virtual
void updateViewName(ushort _id,
char const* _name) ;
448 virtual
void updateUniform(
void* _uniformsTarget, ushort _loc,
void const* _data, uint _size) ;
450 virtual
void setMarker(
void*,
char const*, uint) ;
452 virtual
void invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle) ;
454 virtual
void setName(::bgfx::Handle _handle,
char const*) ;
457 ::bgfx::Frame* _render,
458 ::bgfx::ClearQuad& _clearQuad,
459 ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter
462 virtual
void blitSetup(::bgfx::TextVideoMemBlitter& _blitter) ;
464 virtual
void blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices) ;
466 virtual
bool updateResolution(::bgfx::Resolution const& _resolution);
468 virtual
void updateFlipRate(::bgfx::Resolution const&);
470 virtual
void kick(
bool _alloc);
472 virtual
void finish();
474 virtual
void doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
476 virtual
void rayTrace(
477 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
478 ::bgfx::RayTracingConfiguration const& rtConfig,
479 ::bgfx::RayTracingResources const& rtResources,
480 ::bgfx::RenderBind const& renderBind,
481 ::bgfx::Matrix4 const& viewMat,
482 ::bgfx::Matrix4 const& projMat
489 MCAPI RendererContextD3D12();
491 MCAPI ::bgfx::d3d12::ResourceCreate allocateResource(
492 wchar_t const* _name,
493 ::bgfx::d3d12::HeapProperty::Enum _heapProperty,
495 ::D3D12_RESOURCE_STATES _initialState,
496 ::D3D12_RESOURCE_FLAGS _flags
499 MCAPI ::D3D12_CPU_DESCRIPTOR_HANDLE getRtv(::bgfx::FrameBufferHandle _fbh);
501 MCAPI
void postReset(
bool _swapChainReset);
503 MCAPI
void preReset(
bool _swapChainReset);
505 MCAPI
void saveDREDInfo();
507 MCAPI
void submitBlit(::bgfx::d3d12::CommandListD3D12& _commandList, ::bgfx::BlitState& _bs, ushort _view);
509 MCAPI
void updateBufferHeapFences(::bgfx::d3d12::RendererContextD3D12::BufferHeapUpdateMode bufferHeapUpdateMode);
511 MCAPI
void updateMsaa(::DXGI_FORMAT _format);
529 MCAPI
bool $init(::bgfx::Init const& _init);
531 MCAPI
void $shutdown();
533 MCFOLD ::bgfx::RendererType::Enum $getRendererType() const;
535 MCAPI uint64 $getRendererVersion() const;
537 MCAPI uint64 $getShaderVersion() const;
539 MCAPI
char const* $getRendererName() const;
541 MCAPI
bool $isDeviceRemoved();
543 MCAPI
void $suspend();
545 MCFOLD
void $resume();
547 MCAPI
void $advanceToNextFrame();
551 MCFOLD
void $waitForFlipQueue();
553 MCAPI
void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags);
555 MCFOLD
void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle);
557 MCAPI
void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl);
559 MCFOLD
void $destroyVertexDecl(::bgfx::VertexDeclHandle);
561 MCAPI
void $createVertexBuffer(
562 ::bgfx::VertexBufferHandle _handle,
563 ::bgfx::Memory const* _mem,
564 ::bgfx::VertexDeclHandle _declHandle,
568 MCFOLD
void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle);
570 MCAPI
void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags);
573 $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const* _mem);
575 MCFOLD
void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle);
577 MCAPI
void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags);
579 MCAPI
void $updateDynamicVertexBuffer(
580 ::bgfx::VertexBufferHandle _handle,
583 ::bgfx::Memory const* _mem
586 MCFOLD
void $destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle);
588 MCAPI
void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem);
590 MCAPI
void $destroyShader(::bgfx::ShaderHandle _handle);
592 MCAPI
void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh);
594 MCAPI
void $destroyProgram(::bgfx::ProgramHandle _handle);
596 MCAPI
void* $createTexture(
597 ::bgfx::TextureHandle _handle,
598 ::bgfx::Memory const* _mem,
601 ::bgfx::Memory const** _imageContainerData
604 MCFOLD
void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar);
606 MCAPI
void $updateTexture(
607 ::bgfx::TextureHandle _handle,
610 ::bgfx::Rect const& _rect,
614 ::bgfx::Memory const* _mem
617 MCFOLD
void $updateTextureEnd();
619 MCAPI
void $readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip);
622 $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers);
625 $wrapExternalTexture(::bgfx::TextureHandle _handle, ::bgfx::RendererType::Enum _type,
void* _texturePtr,
void* ref);
627 MCAPI
void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint);
629 MCAPI uint64 $getInternal(::bgfx::TextureHandle _handle);
631 MCAPI
void $destroyTexture(::bgfx::TextureHandle _handle);
633 MCAPI
void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags);
635 MCAPI
void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem);
637 MCAPI
void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle);
639 MCAPI
void $createBottomLevelAccelerationStructure(
640 ::bgfx::AccelerationStructureHandle _handle,
641 ::bgfx::VertexBufferHandle _vertexBufferHandle,
642 ::bgfx::VertexDeclHandle _vertexDeclHandle,
644 uint _vertexOffsetBytes,
645 ::bgfx::IndexBufferHandle _indexBufferHandle,
647 uint _indexOffsetBytes,
649 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
652 MCAPI
void $destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle);
654 MCAPI
void $createTopLevelAccelerationStructure(
655 ::bgfx::AccelerationStructureHandle _handle,
657 ::bgfx::TopLevelInstanceDesc* _instanceDescs
660 MCAPI
void $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const* _attachment);
662 MCAPI
void $createFrameBuffer(
663 ::bgfx::FrameBufferHandle _handle,
667 ::bgfx::TextureFormat::Enum _depthFormat
670 MCAPI
void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle);
673 $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num,
char const* _name);
675 MCAPI
void $destroyUniform(::bgfx::UniformHandle _handle);
677 MCAPI
void $requestScreenShot(::bgfx::FrameBufferHandle _filePath,
char const*);
679 MCAPI
void $updateViewName(ushort _id,
char const* _name);
681 MCAPI
void $updateUniform(
void* _uniformsTarget, ushort _loc,
void const* _data, uint _size);
683 MCFOLD
void $setMarker(
void*,
char const*, uint);
685 MCAPI
void $invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle);
687 MCAPI
void $setName(::bgfx::Handle _handle,
char const*);
690 $submit(::bgfx::Frame* _render, ::bgfx::ClearQuad& _clearQuad, ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter);
692 MCAPI
void $blitSetup(::bgfx::TextVideoMemBlitter& _blitter);
694 MCAPI
void $blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices);
696 MCAPI
bool $updateResolution(::bgfx::Resolution const& _resolution);
698 MCFOLD
void $updateFlipRate(::bgfx::Resolution const&);
700 MCAPI
void $kick(
bool _alloc);
702 MCAPI
void $finish();
704 MCFOLD
void $doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
706 MCFOLD
void $rayTrace(
707 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
708 ::bgfx::RayTracingConfiguration const& rtConfig,
709 ::bgfx::RayTracingResources const& rtResources,
710 ::bgfx::RenderBind const& renderBind,
711 ::bgfx::Matrix4 const& viewMat,
712 ::bgfx::Matrix4 const& projMat
Definition BufferHeap.h:7
Definition StagingBufferD3D12.h:7
Definition Attachment.h:7
Definition OcclusionQueryHandle.h:7
Definition ProgramHandle.h:7
Definition RayTracingConfiguration.h:7
Definition RayTracingResources.h:7
Definition RenderBind.h:7
Definition ShaderBufferHandle.h:7
Definition ShaderHandle.h:7
Definition TextVideoMemBlitter.h:7
Definition TextureHandle.h:7
Definition TopLevelInstanceDesc.h:7
Definition CommandContextD3D12.h:7
Definition CommandListD3D12.h:7
Definition CommandList.h:7
Definition RendererContextD3D12.h:27
Definition RendererContextD3D12.h:23
Definition RendererContextD3D12.h:25
Definition RendererContextD3D12.h:29
Definition RendererContextD3D12.h:21
Definition RendererContextD3D12.h:7
static MCAPI void ** $vftable()
Definition ResourceCreate.h:7
Definition TextureD3D12.h:7