9#include "render/directx/descriptors/DirectXDescriptorHeap.h"
10#include "render/general/resource/GpuResourceManager.h"
11#include "material/TextureFilteringPreference.h"
14#include "directx/d3dx12.h"
15#include "D3D12MemoryAllocator/include/D3D12MemAlloc.h"
21 using namespace Microsoft::WRL;
23 class DirectXResource;
24 class DirectXRenderer;
53 static std::variant<std::unique_ptr<DirectXResourceManager>,
Error>
65 const std::string& sResourceName,
const std::filesystem::path& pathToTextureFile)
override;
99 const std::string& sResourceName,
100 size_t iElementSizeInBytes,
101 size_t iElementCount,
102 std::optional<bool> isUsedInShadersAsArrayResource)
override;
130 const std::string& sResourceName,
131 const void* pBufferData,
132 size_t iElementSizeInBytes,
133 size_t iElementCount,
134 ResourceUsageType usage,
135 bool bIsShaderReadWriteResource)
override;
153 const std::string& sResourceName,
154 size_t iElementSizeInBytes,
155 size_t iElementCount,
156 ResourceUsageType usage,
157 bool bIsShaderReadWriteResource)
override;
170 const std::string& sResourceName,
172 unsigned int iHeight,
173 ShaderReadWriteTextureResourceFormat format)
override;
201 const std::string& sResourceName,
202 const D3D12MA::ALLOCATION_DESC& allocationDesc,
203 const D3D12_RESOURCE_DESC& resourceDesc,
204 const D3D12_RESOURCE_STATES& initialResourceState,
205 const std::optional<D3D12_CLEAR_VALUE>& resourceClearValue);
216 std::variant<std::vector<std::unique_ptr<DirectXResource>>,
Error>
268 std::unique_ptr<DirectXDescriptorHeap>&&
pRtvHeap,
269 std::unique_ptr<DirectXDescriptorHeap>&&
pDsvHeap,
297 return (iNumber + 255) & ~255;
312 const std::string& sResourceName,
313 unsigned int iTextureSize,
314 bool bPointLightColorCubemap)
override;
333 const std::string& sResourceName,
334 const D3D12_RESOURCE_DESC& finalResourceDescription,
335 const std::vector<D3D12_SUBRESOURCE_DATA>& vSubresourcesToCopy,
336 const D3D12_RESOURCE_DESC& uploadResourceDescription,
337 bool bIsTextureResource,
338 size_t iElementSizeInBytes = 0,
339 size_t iElementCount = 0,
340 TextureFilteringPreference filteringPreference =
341 TextureFilteringPreference::FROM_RENDER_SETTINGS);
Definition: DirectXDescriptorHeap.h:206
Definition: DirectXRenderer.h:36
Definition: DirectXResourceManager.h:28
static std::variant< std::unique_ptr< DirectXResourceManager >, Error > create(DirectXRenderer *pRenderer)
Definition: DirectXResourceManager.cpp:18
virtual std::variant< std::unique_ptr< UploadBuffer >, Error > createResourceWithCpuWriteAccess(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, std::optional< bool > isUsedInShadersAsArrayResource) override
Definition: DirectXResourceManager.cpp:226
ComPtr< D3D12MA::Allocator > pMemoryAllocator
Definition: DirectXResourceManager.h:344
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShaderReadWriteTextureResource(const std::string &sResourceName, unsigned int iWidth, unsigned int iHeight, ShaderReadWriteTextureResourceFormat format) override
Definition: DirectXResourceManager.cpp:340
std::unique_ptr< DirectXDescriptorHeap > pSamplerHeap
Definition: DirectXResourceManager.h:356
DirectXDescriptorHeap * getSamplerHeap() const
Definition: DirectXResourceManager.h:245
DirectXDescriptorHeap * getRtvHeap() const
Definition: DirectXResourceManager.cpp:510
static DXGI_FORMAT convertTextureResourceFormatToDxFormat(ShaderReadWriteTextureResourceFormat format)
Definition: DirectXResourceManager.cpp:577
DirectXDescriptorHeap * getDsvHeap() const
Definition: DirectXResourceManager.cpp:512
DirectXDescriptorHeap * getCbvSrvUavHeap() const
Definition: DirectXResourceManager.cpp:514
std::unique_ptr< DirectXDescriptorHeap > pRtvHeap
Definition: DirectXResourceManager.h:347
std::unique_ptr< DirectXDescriptorHeap > pCbvSrvUavHeap
Definition: DirectXResourceManager.h:353
std::unique_ptr< DirectXDescriptorHeap > pDsvHeap
Definition: DirectXResourceManager.h:350
virtual std::variant< std::unique_ptr< GpuResource >, Error > loadTextureFromDisk(const std::string &sResourceName, const std::filesystem::path &pathToTextureFile) override
Definition: DirectXResourceManager.cpp:78
virtual size_t getUsedVideoMemoryInMb() const override
Definition: DirectXResourceManager.cpp:456
virtual std::string getCurrentStateInfo() override
Definition: DirectXResourceManager.cpp:516
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResource(const std::string &sResourceName, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
Definition: DirectXResourceManager.cpp:301
virtual std::variant< std::unique_ptr< GpuResource >, Error > createResourceWithData(const std::string &sResourceName, const void *pBufferData, size_t iElementSizeInBytes, size_t iElementCount, ResourceUsageType usage, bool bIsShaderReadWriteResource) override
Definition: DirectXResourceManager.cpp:264
virtual std::variant< std::unique_ptr< GpuResource >, Error > createShadowMapTexture(const std::string &sResourceName, unsigned int iTextureSize, bool bPointLightColorCubemap) override
Definition: DirectXResourceManager.cpp:379
virtual size_t getTotalVideoMemoryInMb() const override
Definition: DirectXResourceManager.cpp:449
static size_t makeMultipleOf256(size_t iNumber)
Definition: DirectXResourceManager.h:286
std::variant< std::vector< std::unique_ptr< DirectXResource > >, Error > makeRtvResourcesFromSwapChainBuffer(IDXGISwapChain3 *pSwapChain, unsigned int iSwapChainBufferCount)
Definition: DirectXResourceManager.cpp:487
Definition: GpuResourceManager.h:43
Renderer *const pRenderer
Definition: GpuResourceManager.h:300