From 6c0ed372bfb1f9094422c4a46f0c6baef65c4898 Mon Sep 17 00:00:00 2001 From: assiduous Date: Sun, 17 May 2020 10:08:00 -0700 Subject: Unified shader type defines for all backends --- .../GraphicsEngineD3DBase/src/ShaderD3DBase.cpp | 37 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'Graphics/GraphicsEngineD3DBase') diff --git a/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp b/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp index e880fe0f..3962a8e4 100644 --- a/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp +++ b/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp @@ -173,16 +173,49 @@ ShaderD3DBase::ShaderD3DBase(const ShaderCreateInfo& ShaderCI, const char* Shade const D3D_SHADER_MACRO* pDefines = nullptr; std::vector D3DMacros; + switch (ShaderCI.Desc.ShaderType) + { + case SHADER_TYPE_VERTEX: + D3DMacros.push_back({"VERTEX_SHADER", "1"}); + break; + + case SHADER_TYPE_PIXEL: + D3DMacros.push_back({"FRAGMENT_SHADER", "1"}); + D3DMacros.push_back({"PIXEL_SHADER", "1"}); + break; + + case SHADER_TYPE_GEOMETRY: + D3DMacros.push_back({"GEOMETRY_SHADER", "1"}); + break; + + case SHADER_TYPE_HULL: + D3DMacros.push_back({"TESS_CONTROL_SHADER", "1"}); + D3DMacros.push_back({"HULL_SHADER", "1"}); + break; + + case SHADER_TYPE_DOMAIN: + D3DMacros.push_back({"TESS_EVALUATION_SHADER", "1"}); + D3DMacros.push_back({"DOMAIN_SHADER", "1"}); + break; + + case SHADER_TYPE_COMPUTE: + D3DMacros.push_back({"COMPUTE_SHADER", "1"}); + break; + + default: UNEXPECTED("Unexpected shader type"); + } + if (ShaderCI.Macros) { for (auto* pCurrMacro = ShaderCI.Macros; pCurrMacro->Name && pCurrMacro->Definition; ++pCurrMacro) { D3DMacros.push_back({pCurrMacro->Name, pCurrMacro->Definition}); } - D3DMacros.push_back({nullptr, nullptr}); - pDefines = D3DMacros.data(); } + D3DMacros.push_back({nullptr, nullptr}); + pDefines = D3DMacros.data(); + DEV_CHECK_ERR(ShaderCI.EntryPoint != nullptr, "Entry point must not be null"); CComPtr errors; auto hr = CompileShader(ShaderSource.c_str(), ShaderCI.EntryPoint, pDefines, ShaderCI.pShaderSourceStreamFactory, strShaderProfile.c_str(), &m_pShaderByteCode, &errors); -- cgit v1.2.3