Merge pull request #13975 from iwubcode/shader_includes
VideoBackends / VideoCommon: add support for specifying include files in shader code
This commit is contained in:
@@ -68,9 +68,10 @@ Gfx::CreateFramebuffer(AbstractTexture* color_attachment, AbstractTexture* depth
|
||||
}
|
||||
|
||||
std::unique_ptr<AbstractShader>
|
||||
Gfx::CreateShaderFromSource(ShaderStage stage, std::string_view source, std::string_view name)
|
||||
Gfx::CreateShaderFromSource(ShaderStage stage, std::string_view source,
|
||||
VideoCommon::ShaderIncluder* shader_includer, std::string_view name)
|
||||
{
|
||||
return DXShader::CreateFromSource(stage, source, name);
|
||||
return DXShader::CreateFromSource(stage, source, shader_includer, name);
|
||||
}
|
||||
|
||||
std::unique_ptr<AbstractShader> Gfx::CreateShaderFromBinary(ShaderStage stage, const void* data,
|
||||
|
||||
@@ -36,8 +36,10 @@ public:
|
||||
CreateFramebuffer(AbstractTexture* color_attachment, AbstractTexture* depth_attachment,
|
||||
std::vector<AbstractTexture*> additional_color_attachments) override;
|
||||
|
||||
std::unique_ptr<AbstractShader> CreateShaderFromSource(ShaderStage stage, std::string_view source,
|
||||
std::string_view name) override;
|
||||
std::unique_ptr<AbstractShader>
|
||||
CreateShaderFromSource(ShaderStage stage, std::string_view source,
|
||||
VideoCommon::ShaderIncluder* shader_includer,
|
||||
std::string_view name) override;
|
||||
std::unique_ptr<AbstractShader> CreateShaderFromBinary(ShaderStage stage, const void* data,
|
||||
size_t length,
|
||||
std::string_view name) override;
|
||||
|
||||
@@ -29,9 +29,10 @@ std::unique_ptr<DXShader> DXShader::CreateFromBytecode(ShaderStage stage, Binary
|
||||
}
|
||||
|
||||
std::unique_ptr<DXShader> DXShader::CreateFromSource(ShaderStage stage, std::string_view source,
|
||||
VideoCommon::ShaderIncluder* shader_includer,
|
||||
std::string_view name)
|
||||
{
|
||||
auto bytecode = CompileShader(g_dx_context->GetFeatureLevel(), stage, source);
|
||||
auto bytecode = CompileShader(g_dx_context->GetFeatureLevel(), stage, source, shader_includer);
|
||||
if (!bytecode)
|
||||
return nullptr;
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ public:
|
||||
static std::unique_ptr<DXShader> CreateFromBytecode(ShaderStage stage, BinaryData bytecode,
|
||||
std::string_view name);
|
||||
static std::unique_ptr<DXShader> CreateFromSource(ShaderStage stage, std::string_view source,
|
||||
VideoCommon::ShaderIncluder* shader_includer,
|
||||
std::string_view name);
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user