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/FatalError.h"
12#include "mc/external/bgfx/FenceSyncContext.h"
13#include "mc/external/bgfx/FrameBufferD3D12.h"
14#include "mc/external/bgfx/FrameBufferHandle.h"
15#include "mc/external/bgfx/GuardedPagedHeapBackedArray.h"
16#include "mc/external/bgfx/IndexBufferHandle.h"
17#include "mc/external/bgfx/OcclusionQueryD3D12.h"
18#include "mc/external/bgfx/ProfilerEvents.h"
19#include "mc/external/bgfx/ProgramD3D12.h"
20#include "mc/external/bgfx/RendererContextI.h"
21#include "mc/external/bgfx/Resolution.h"
22#include "mc/external/bgfx/ResourceStatesMananger.h"
23#include "mc/external/bgfx/RingBuffer.h"
24#include "mc/external/bgfx/RingBufferAllocator.h"
25#include "mc/external/bgfx/ShaderD3D12.h"
26#include "mc/external/bgfx/SwapChainDesc.h"
27#include "mc/external/bgfx/TextVideoMem.h"
28#include "mc/external/bgfx/TimerQueryD3D12.h"
29#include "mc/external/bgfx/UniformRegistry.h"
30#include "mc/external/bgfx/VertexBufferD3D12.h"
31#include "mc/external/bgfx/VertexBufferHandle.h"
32#include "mc/external/bgfx/VertexDecl.h"
33#include "mc/external/bgfx/VertexDeclHandle.h"
34#include "mc/external/bgfx/ViewProfilerManager.h"
35#include "mc/external/bgfx/acceleration_structure_build_flags/Enum.h"
36#include "mc/external/bgfx/d3d12/heap_property/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"
45namespace bgfx {
struct Frame; }
46namespace bgfx {
struct Handle; }
47namespace bgfx {
struct Init; }
48namespace bgfx {
struct Matrix4; }
49namespace bgfx {
struct Memory; }
54namespace bgfx {
struct Rect; }
71namespace bgfx::d3d12 {
89 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
90 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::TopLevelInstanceDesc>> m_tlasInstanceDescs;
98 ::ll::TypedStorage<8, 56, ::D3D12_RAYTRACING_GEOMETRY_DESC> m_desc;
99 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
100 ::ll::TypedStorage<4, 4, ::D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS> m_flags;
101 ::ll::TypedStorage<4, 4, uint> m_scratchSize;
109 ::ll::TypedStorage<4, 4, ::bgfx::d3d12::BlasCompactionState> m_state;
110 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
111 ::ll::TypedStorage<4, 4, uint> m_beforeSize;
112 ::ll::TypedStorage<4, 4, uint> m_afterSize;
113 ::ll::TypedStorage<4, 4, uint> m_frameCountOfLastUpdate;
114 ::ll::TypedStorage<4, 4, int> m_sizeRequestIndex;
122 ::ll::TypedStorage<2, 2, ::bgfx::VertexBufferHandle> m_vb;
123 ::ll::TypedStorage<2, 2, ::bgfx::VertexDeclHandle> m_vbDecl;
124 ::ll::TypedStorage<2, 2, ushort> m_vertexStrideBytes;
125 ::ll::TypedStorage<2, 2, ::bgfx::IndexBufferHandle> m_ib;
126 ::ll::TypedStorage<4, 4, uint> m_verticesCount;
127 ::ll::TypedStorage<4, 4, uint> m_vertexOffsetInBaseVertices;
128 ::ll::TypedStorage<4, 4, uint> m_vertexOffsetInParallelVertices;
129 ::ll::TypedStorage<4, 4, uint> m_indicesCount;
130 ::ll::TypedStorage<4, 4, uint> m_indexOffsetInIndices;
131 ::ll::TypedStorage<2, 2, ushort> m_indexSize;
132 ::ll::TypedStorage<4, 4, uint> m_frameCountOfCreation;
133 ::ll::TypedStorage<4, 4, uint> m_frameCountOfUpdate;
134 ::ll::TypedStorage<4, 4, uint> m_mostRecentFrameInTLAS;
135 ::ll::TypedStorage<2, 2, ushort> m_flags;
136 ::ll::TypedStorage<2, 2, ushort> m_objectInstanceIdx;
137 ::ll::TypedStorage<2, 2, ushort> m_previousObjectInstanceIdx;
138 bool m_needFaceDataUpdate : 1;
146 ::ll::TypedStorage<8, 8, int64> m_flipCompletionTime;
147 ::ll::TypedStorage<8, 8, int64> m_gpuFlipRequestTime;
148 ::ll::TypedStorage<8, 8, int64> m_cpuFlipRequestTime;
152 using ASScratchBuffer =
153 ::bgfx::RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>;
158 ::ll::TypedStorage<8, 8, ::ID3D12DescriptorHeap*> m_rtvDescriptorHeap;
159 ::ll::TypedStorage<8, 8, ::ID3D12DescriptorHeap*> m_dsvDescriptorHeap;
160 ::ll::TypedStorage<8, 24, ::ID3D12Resource* [3]> m_backBufferColor;
161 ::ll::TypedStorage<8, 24, uint64[3]> m_backBufferColorFence;
162 ::ll::TypedStorage<8, 8, ::ID3D12Resource*> m_backBufferDepthStencil;
163 ::ll::TypedStorage<4, 4, uint> m_frameCount;
164 ::ll::TypedStorage<1, 1, bool> m_rldoEnabled;
165 ::ll::TypedStorage<1, 1, bool> m_useBufferHeaps;
166 ::ll::TypedStorage<8, 448, ::bgfx::Dxgi> m_dxgi;
167 ::ll::TypedStorage<8, 8, void*> m_kernel32dll;
168 ::ll::TypedStorage<8, 8, void*> m_d3d12dll;
169 ::ll::TypedStorage<8, 8, void*> m_renderdocdll;
170 ::ll::TypedStorage<8, 8, void*> m_winPixEvent;
176 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<2>>>>
178 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::FenceSyncContext> m_sync;
179 ::ll::TypedStorage<4, 4, ::D3D_FEATURE_LEVEL> m_featureLevel;
180 ::ll::TypedStorage<4, 4, ::D3D_SHADER_MODEL> m_shaderModel;
181 ::ll::TypedStorage<4, 4, ::D3D_DRIVER_TYPE> m_driverType;
182 ::ll::TypedStorage<4, 16, ::D3D12_FEATURE_DATA_ARCHITECTURE> m_architecture;
183 ::ll::TypedStorage<4, 60, ::D3D12_FEATURE_DATA_D3D12_OPTIONS> m_options;
184 ::ll::TypedStorage<8, 8, void*> m_swapchainWaitableObject;
185 ::ll::TypedStorage<8, 8, ::IDXGISwapChain3*> m_swapChain;
186 ::ll::TypedStorage<8, 8, ::ID3D12Resource*> m_msaaRenderTarget;
187 ::ll::TypedStorage<8, 8, int64> m_presentElapsed;
188 ::ll::TypedStorage<2, 2, ushort> m_numWindows;
189 ::ll::TypedStorage<2, 256, ::bgfx::FrameBufferHandle[128]> m_windows;
190 ::ll::TypedStorage<8, 8, ::ID3D12Device*> m_device;
191 ::ll::TypedStorage<8, 8, ::ID3D12Device5*> m_device5;
192 ::ll::TypedStorage<8, 30880, ::bgfx::d3d12::TimerQueryD3D12> m_gpuTimer;
193 ::ll::TypedStorage<8, 552, ::bgfx::d3d12::OcclusionQueryD3D12> m_occlusionQuery;
194 ::ll::TypedStorage<8, 73768, ::bgfx::ViewProfilerManager<::bgfx::d3d12::TimerQueryD3D12>> m_profiler;
195 ::ll::TypedStorage<1, 1, ::bgfx::ProfilerEvents> m_profilerEvents;
196 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::BufferHeap* [7]> m_bufferHeaps;
197 ::ll::TypedStorage<8, 24, ::ID3D12CommandSignature* [3]> m_commandSignature;
198 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::CommandList*> m_globalCommands;
199 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::bgfx::d3d12::CommandContextD3D12>>> m_commandContext;
200 ::ll::TypedStorage<4, 12, ::bgfx::Resolution> m_resolution;
201 ::ll::TypedStorage<1, 1, bool> m_wireframe;
202 ::ll::TypedStorage<1, 1, bool> m_fatal;
203 ::ll::TypedStorage<4, 8, ::bgfx::FatalError> m_fatalError;
204 ::ll::TypedStorage<8, 72, ::bgfx::SwapChainDesc> m_scd;
205 ::ll::TypedStorage<4, 4, uint> m_maxAnisotropy;
206 ::ll::TypedStorage<1, 1, bool> m_depthClamp;
207 ::ll::TypedStorage<1, 1, bool> m_flipped;
208 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::TlasBuildRequest>> m_tlasBuildRequests;
209 ::ll::TypedStorage<1, 1, bool> m_tlasValid;
210 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasBuildRequest>> m_blasBuildRequests;
211 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasCompactionRequest>>
212 m_blasCompactionRequests;
213 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_compactedAsBuffers;
214 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_asBuffersCompactionSizes;
215 ::ll::TypedStorage<8, 24, ::std::vector<::ID3D12Resource*>> m_asBuffersCompactionSizesReadback;
216 ::ll::TypedStorage<8, 24, ::std::vector<uint>> m_asCompactionCountList;
217 ::ll::TypedStorage<1, 1, bool> m_asCompactionCountListAvailable;
218 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::BufferD3D12>> m_freeASBuffers;
224 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>>>
226 ::ll::TypedStorage<4, 1703936, ::bgfx::d3d12::RendererContextD3D12::BLASGeometryInfo[32768]> m_blasGeometryInfo;
227 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_blasQuadIndexBuffer;
228 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_asBuffers;
229 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_indexBuffers;
230 ::ll::TypedStorage<8, 524288, ::bgfx::d3d12::VertexBufferD3D12[4096]> m_vertexBuffers;
231 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_shaderBuffers;
232 ::ll::TypedStorage<8, 753664, ::bgfx::d3d12::ShaderD3D12[4096]> m_shaders;
233 ::ll::TypedStorage<8, 507904, ::bgfx::d3d12::ProgramD3D12[2048]> m_program;
234 ::ll::TypedStorage<8, 753696, ::bgfx::GuardedPagedHeapBackedArray<::bgfx::d3d12::TextureD3D12, 4096>> m_textures;
235 ::ll::TypedStorage<4, 5376, ::bgfx::VertexDecl[64]> m_vertexDecls;
236 ::ll::TypedStorage<8, 13312, ::bgfx::d3d12::FrameBufferD3D12[128]> m_frameBuffers;
237 ::ll::TypedStorage<4, 7176, ::bgfx::UniformRegistry> m_uniformReg;
238 ::ll::TypedStorage<8, 16, ::std::map<uint, ::bgfx::d3d12::RendererContextD3D12::PresentTimings>> m_presentTimings;
239 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::RendererContextD3D12::PresentTimings*> m_completedTiming;
240 ::ll::TypedStorage<8, 24, ::bgfx::TextVideoMem> m_textVideoMem;
241 ::ll::TypedStorage<4, 4, uint> m_backBufferColorIdx;
242 ::ll::TypedStorage<1, 1, bool> m_directAccessSupport;
243 ::ll::TypedStorage<8, 183184, ::bgfx::d3d12::ResourceStatesMananger> m_states;
244 ::ll::TypedStorage<8, 49860952, ::bgfx::d3d12::CommandQueueD3D12> m_cmd;
245 ::ll::TypedStorage<8, 80, ::std::mutex> m_cmdCreateMtx;
251 virtual ~RendererContextD3D12() ;
253 virtual bool init(::bgfx::Init
const& _init);
255 virtual void shutdown();
257 virtual ::bgfx::RendererType::Enum getRendererType() const ;
259 virtual uint64 getRendererVersion() const ;
261 virtual uint64 getShaderVersion() const ;
263 virtual
char const* getRendererName() const ;
265 virtual
bool isDeviceRemoved() ;
267 virtual
void suspend() ;
269 virtual
void resume() ;
271 virtual
void advanceToNextFrame() ;
273 virtual
void flip() ;
275 virtual
void waitForFlipQueue() ;
278 createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags) ;
280 virtual
void destroyIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
282 virtual
void createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl) ;
284 virtual
void destroyVertexDecl(::bgfx::VertexDeclHandle) ;
286 virtual
void createVertexBuffer(
287 ::bgfx::VertexBufferHandle _handle,
288 ::bgfx::Memory const* _mem,
289 ::bgfx::VertexDeclHandle _declHandle,
293 virtual
void destroyVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
295 virtual
void createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags) ;
297 virtual
void updateDynamicIndexBuffer(
298 ::bgfx::IndexBufferHandle _handle,
301 ::bgfx::Memory const* _mem
304 virtual
void destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
306 virtual
void createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags) ;
308 virtual
void updateDynamicVertexBuffer(
309 ::bgfx::VertexBufferHandle _handle,
312 ::bgfx::Memory const* _mem
315 virtual
void destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
317 virtual
void createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem) ;
319 virtual
void destroyShader(::bgfx::ShaderHandle _handle) ;
322 createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh) ;
324 virtual
void destroyProgram(::bgfx::ProgramHandle _handle) ;
326 virtual
void* createTexture(
327 ::bgfx::TextureHandle _handle,
328 ::bgfx::Memory const* _mem,
331 ::bgfx::Memory const** _imageContainerData
334 virtual
void updateTextureBegin(::bgfx::TextureHandle, uchar, uchar) ;
336 virtual
void updateTexture(
337 ::bgfx::TextureHandle _handle,
340 ::bgfx::Rect const& _rect,
344 ::bgfx::Memory const* _mem
347 virtual
void updateTextureEnd() ;
349 virtual
void readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip) ;
351 virtual
void resizeTexture(
352 ::bgfx::TextureHandle _handle,
359 virtual
void wrapExternalTexture(
360 ::bgfx::TextureHandle _handle,
361 ::bgfx::RendererType::Enum _type,
366 virtual
void overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags) ;
368 virtual uint64 getInternal(::bgfx::TextureHandle _handle) ;
370 virtual
void destroyTexture(::bgfx::TextureHandle _handle) ;
373 createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags) ;
376 updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem) ;
378 virtual
void destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle) ;
380 virtual
void createBottomLevelAccelerationStructure(
381 ::bgfx::AccelerationStructureHandle _handle,
382 ::bgfx::VertexBufferHandle _vertexBufferHandle,
383 ::bgfx::VertexDeclHandle _vertexDeclHandle,
385 uint _vertexOffsetBytes,
386 ::bgfx::IndexBufferHandle _indexBufferHandle,
388 uint _indexOffsetBytes,
390 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
393 virtual
void destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle) ;
395 virtual
void createTopLevelAccelerationStructure(
396 ::bgfx::AccelerationStructureHandle _handle,
398 ::bgfx::TopLevelInstanceDesc* _instanceDescs
401 virtual
void createFrameBuffer(
402 ::bgfx::FrameBufferHandle _handle,
404 ::bgfx::Attachment const* _attachment
407 virtual
void createFrameBuffer(
408 ::bgfx::FrameBufferHandle _handle,
412 ::bgfx::TextureFormat::Enum _depthFormat
415 virtual
void destroyFrameBuffer(::bgfx::FrameBufferHandle _handle) ;
417 virtual
void createUniform(
418 ::bgfx::UniformHandle _handle,
419 ::bgfx::UniformType::Enum _type,
424 virtual
void destroyUniform(::bgfx::UniformHandle _handle) ;
426 virtual
void requestScreenShot(::bgfx::FrameBufferHandle _handle,
char const* _filePath) ;
428 virtual
void updateViewName(ushort _id,
char const* _name) ;
430 virtual
void updateUniform(
void* _uniformsTarget, ushort _loc,
void const* _data, uint _size) ;
432 virtual
void setMarker(
void*,
char const* _marker, uint) ;
434 virtual
void invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle) ;
436 virtual
void setName(::bgfx::Handle _handle,
char const* _name) ;
439 ::bgfx::Frame* _render,
440 ::bgfx::ClearQuad& _clearQuad,
441 ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter
444 virtual
void blitSetup(::bgfx::TextVideoMemBlitter& _blitter) ;
446 virtual
void blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices) ;
448 virtual
bool updateResolution(::bgfx::Resolution const& _resolution);
450 virtual
void kick(
bool _alloc);
452 virtual
void finish();
454 virtual
void doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
456 virtual
void rayTrace(
457 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
458 ::bgfx::RayTracingConfiguration const& rtConfig,
459 ::bgfx::RayTracingResources const& rtResources,
460 ::bgfx::RenderBind const& renderBind,
461 ::bgfx::Matrix4 const& viewMat,
462 ::bgfx::Matrix4 const& projMat
469 MCAPI RendererContextD3D12();
471 MCAPI ::bgfx::d3d12::ResourceCreate allocateResource(
472 wchar_t const* _name,
473 ::bgfx::d3d12::HeapProperty::Enum _heapProperty,
475 ::D3D12_RESOURCE_STATES _initialState,
476 ::D3D12_RESOURCE_FLAGS _flags
479 MCAPI ::D3D12_CPU_DESCRIPTOR_HANDLE getRtv(::bgfx::FrameBufferHandle _fbh);
481 MCAPI
void postReset(
bool _swapChainReset);
483 MCAPI
void preReset(
bool _swapChainReset);
485 MCAPI
void updateMsaa(::DXGI_FORMAT _format);
503 MCAPI
bool $init(::bgfx::Init const& _init);
505 MCAPI
void $shutdown();
507 MCFOLD ::bgfx::RendererType::Enum $getRendererType() const;
509 MCAPI uint64 $getRendererVersion() const;
511 MCAPI uint64 $getShaderVersion() const;
513 MCAPI
char const* $getRendererName() const;
515 MCAPI
bool $isDeviceRemoved();
517 MCAPI
void $suspend();
519 MCFOLD
void $resume();
521 MCAPI
void $advanceToNextFrame();
525 MCFOLD
void $waitForFlipQueue();
527 MCAPI
void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags);
529 MCFOLD
void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle);
531 MCAPI
void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl);
533 MCFOLD
void $destroyVertexDecl(::bgfx::VertexDeclHandle);
535 MCAPI
void $createVertexBuffer(
536 ::bgfx::VertexBufferHandle _handle,
537 ::bgfx::Memory const* _mem,
538 ::bgfx::VertexDeclHandle _declHandle,
542 MCFOLD
void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle);
544 MCAPI
void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags);
547 $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const* _mem);
549 MCFOLD
void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle);
551 MCAPI
void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags);
553 MCAPI
void $updateDynamicVertexBuffer(
554 ::bgfx::VertexBufferHandle _handle,
557 ::bgfx::Memory const* _mem
560 MCFOLD
void $destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle);
562 MCAPI
void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem);
564 MCAPI
void $destroyShader(::bgfx::ShaderHandle _handle);
566 MCAPI
void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh);
568 MCAPI
void $destroyProgram(::bgfx::ProgramHandle _handle);
570 MCAPI
void* $createTexture(
571 ::bgfx::TextureHandle _handle,
572 ::bgfx::Memory const* _mem,
575 ::bgfx::Memory const** _imageContainerData
578 MCFOLD
void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar);
580 MCAPI
void $updateTexture(
581 ::bgfx::TextureHandle _handle,
584 ::bgfx::Rect const& _rect,
588 ::bgfx::Memory const* _mem
591 MCFOLD
void $updateTextureEnd();
593 MCAPI
void $readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip);
596 $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers);
598 MCAPI
void $wrapExternalTexture(
599 ::bgfx::TextureHandle _handle,
600 ::bgfx::RendererType::Enum _type,
605 MCAPI
void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags);
607 MCAPI uint64 $getInternal(::bgfx::TextureHandle _handle);
609 MCAPI
void $destroyTexture(::bgfx::TextureHandle _handle);
611 MCAPI
void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags);
613 MCAPI
void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem);
615 MCAPI
void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle);
617 MCAPI
void $createBottomLevelAccelerationStructure(
618 ::bgfx::AccelerationStructureHandle _handle,
619 ::bgfx::VertexBufferHandle _vertexBufferHandle,
620 ::bgfx::VertexDeclHandle _vertexDeclHandle,
622 uint _vertexOffsetBytes,
623 ::bgfx::IndexBufferHandle _indexBufferHandle,
625 uint _indexOffsetBytes,
627 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
630 MCAPI
void $destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle);
632 MCAPI
void $createTopLevelAccelerationStructure(
633 ::bgfx::AccelerationStructureHandle _handle,
635 ::bgfx::TopLevelInstanceDesc* _instanceDescs
638 MCAPI
void $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const* _attachment);
640 MCAPI
void $createFrameBuffer(
641 ::bgfx::FrameBufferHandle _handle,
645 ::bgfx::TextureFormat::Enum _depthFormat
648 MCAPI
void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle);
651 $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num,
char const* _name);
653 MCAPI
void $destroyUniform(::bgfx::UniformHandle _handle);
655 MCAPI
void $requestScreenShot(::bgfx::FrameBufferHandle _handle,
char const* _filePath);
657 MCAPI
void $updateViewName(ushort _id,
char const* _name);
659 MCAPI
void $updateUniform(
void* _uniformsTarget, ushort _loc,
void const* _data, uint _size);
661 MCFOLD
void $setMarker(
void*,
char const* _marker, uint);
663 MCAPI
void $invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle);
665 MCAPI
void $setName(::bgfx::Handle _handle,
char const* _name);
668 $submit(::bgfx::Frame* _render, ::bgfx::ClearQuad& _clearQuad, ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter);
670 MCAPI
void $blitSetup(::bgfx::TextVideoMemBlitter& _blitter);
672 MCAPI
void $blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices);
674 MCAPI
bool $updateResolution(::bgfx::Resolution const& _resolution);
676 MCAPI
void $kick(
bool _alloc);
678 MCAPI
void $finish();
680 MCFOLD
void $doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
682 MCFOLD
void $rayTrace(
683 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
684 ::bgfx::RayTracingConfiguration const& rtConfig,
685 ::bgfx::RayTracingResources const& rtResources,
686 ::bgfx::RenderBind const& renderBind,
687 ::bgfx::Matrix4 const& viewMat,
688 ::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:25
Definition RendererContextD3D12.h:21
Definition RendererContextD3D12.h:23
Definition RendererContextD3D12.h:27
Definition RendererContextD3D12.h:19
Definition RendererContextD3D12.h:7
Definition ResourceCreate.h:7
Definition TextureD3D12.h:7