8#include "shader/general/Shader.h"
9#include "render/RenderSettings.h"
10#include "shader/hlsl/RootSignatureGenerator.h"
13#include "directx/d3dx12.h"
14#include "DirectXShaderCompiler/inc/dxcapi.h"
20 using namespace Microsoft::WRL;
44 const std::optional<VertexFormat>& vertexFormat,
94 const std::optional<std::filesystem::path>& pathToPdb);
111 const std::filesystem::path& cacheDirectory,
112 const std::string& sConfiguration,
130 std::pair<std::mutex, std::optional<RootSignatureGenerator::CollectedInfo>>*
getRootSignatureInfo();
159 [[nodiscard]]
virtual std::optional<Error>
175 std::optional<ShaderCacheInvalidationReason>& cacheInvalidationReason)
override;
185 static std::variant<ComPtr<IDxcBlob>,
Error>
Definition: ConfigManager.h:27
Definition: HlslShader.h:25
virtual std::optional< Error > saveAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager) override
Definition: HlslShader.cpp:401
static std::variant< std::shared_ptr< Shader >, std::string, Error > compileShader(Renderer *pRenderer, const std::filesystem::path &cacheDirectory, const std::string &sConfiguration, const ShaderDescription &shaderDescription)
Definition: HlslShader.cpp:212
static std::variant< std::string, Error > getShaderCompilerVersion()
Definition: HlslShader.cpp:34
static constexpr std::string_view getPixelShaderModel()
Definition: HlslShader.h:65
static constexpr std::string_view sPixelShaderModel
Definition: HlslShader.h:238
static constexpr std::string_view sComputeShaderModel
Definition: HlslShader.h:240
static UINT iShaderFileCodepage
Definition: HlslShader.h:221
static auto sShaderReflectionFileExtension
Definition: HlslShader.h:224
std::string sSourceFileHash
Definition: HlslShader.h:218
std::string getShaderSourceFileHash() const
Definition: HlslShader.cpp:371
virtual bool releaseShaderDataFromMemoryIfLoaded() override
Definition: HlslShader.cpp:373
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > * getRootSignatureInfo()
Definition: HlslShader.cpp:367
std::variant< ComPtr< IDxcBlob >, Error > getCompiledBlob()
Definition: HlslShader.cpp:355
static const auto sHlslSectionName
Definition: HlslShader.h:230
static const auto sReflectionFileHashKeyName
Definition: HlslShader.h:227
std::optional< Error > loadShaderDataFromDiskIfNotLoaded()
Definition: HlslShader.cpp:525
static constexpr std::string_view getVertexShaderModel()
Definition: HlslShader.h:58
virtual std::optional< Error > checkCachedAdditionalCompilationResultsInfo(ConfigManager &cacheMetadataConfigManager, std::optional< ShaderCacheInvalidationReason > &cacheInvalidationReason) override
Definition: HlslShader.cpp:418
static std::variant< ComPtr< IDxcBlob >, Error > readBlobFromDisk(const std::filesystem::path &pathToFile)
Definition: HlslShader.cpp:444
std::pair< std::mutex, std::optional< RootSignatureGenerator::CollectedInfo > > mtxRootSignatureInfo
Definition: HlslShader.h:215
static constexpr std::string_view getComputeShaderModel()
Definition: HlslShader.h:72
static std::variant< ComPtr< IDxcResult >, std::string, Error > compileShaderToBytecode(const ShaderDescription &shaderDescription, const std::optional< std::filesystem::path > &pathToPdb)
Definition: HlslShader.cpp:58
std::variant< std::string, Error > calculateReflectionFileHash()
Definition: HlslShader.cpp:487
std::pair< std::recursive_mutex, ComPtr< IDxcBlob > > mtxCompiledBytecode
Definition: HlslShader.h:207
static constexpr std::string_view sVertexShaderModel
Definition: HlslShader.h:236
Definition: Renderer.h:43
const ShaderType shaderType
Definition: Shader.h:254
const std::filesystem::path pathToCompiledShader
Definition: Shader.h:257
const std::string sShaderName
Definition: Shader.h:251
Renderer *const pRenderer
Definition: Shader.h:241
Definition: ShaderDescription.h:74