summaryrefslogtreecommitdiffstats
path: root/Graphics/GLSLTools
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-08-11 19:48:23 +0000
committerazhirnov <zh1dron@gmail.com>2020-08-11 19:49:36 +0000
commitdc9a4e784c8bb97fbb16a01624c7b8f0544977a4 (patch)
treeb4a07f6e2029ca9d20999acfd940ea8e2556cb9d /Graphics/GLSLTools
parentBash function for format validation in submodules (#155) (diff)
downloadDiligentCore-dc9a4e784c8bb97fbb16a01624c7b8f0544977a4.tar.gz
DiligentCore-dc9a4e784c8bb97fbb16a01624c7b8f0544977a4.zip
Added mesh shader
added mesh shader support to DX12 and Vulkan, added DXIL compiler for Shader Model 6.x
Diffstat (limited to 'Graphics/GLSLTools')
-rw-r--r--Graphics/GLSLTools/src/GLSLSourceBuilder.cpp7
-rw-r--r--Graphics/GLSLTools/src/SPIRVShaderResources.cpp16
-rw-r--r--Graphics/GLSLTools/src/SPIRVUtils.cpp14
3 files changed, 24 insertions, 13 deletions
diff --git a/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp b/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp
index 8b369954..da1b6fec 100644
--- a/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp
+++ b/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp
@@ -64,6 +64,13 @@ const char* GetShaderTypeDefines(SHADER_TYPE Type)
case SHADER_TYPE_COMPUTE:
return "#define COMPUTE_SHADER 1\n";
+
+ case SHADER_TYPE_AMPLIFICATION:
+ return "#define TASK_SHADER 1\n"
+ "#define AMPLIFICATION_SHADER 1\n";
+
+ case SHADER_TYPE_MESH:
+ return "#define MESH_SHADER 1\n";
default:
UNEXPECTED("Unexpected shader type");
diff --git a/Graphics/GLSLTools/src/SPIRVShaderResources.cpp b/Graphics/GLSLTools/src/SPIRVShaderResources.cpp
index 46705ace..bf92e84b 100644
--- a/Graphics/GLSLTools/src/SPIRVShaderResources.cpp
+++ b/Graphics/GLSLTools/src/SPIRVShaderResources.cpp
@@ -149,13 +149,15 @@ static spv::ExecutionModel ShaderTypeToExecutionModel(SHADER_TYPE ShaderType)
switch (ShaderType)
{
// clang-format off
- case SHADER_TYPE_VERTEX: return spv::ExecutionModelVertex;
- case SHADER_TYPE_HULL: return spv::ExecutionModelTessellationControl;
- case SHADER_TYPE_DOMAIN: return spv::ExecutionModelTessellationEvaluation;
- case SHADER_TYPE_GEOMETRY: return spv::ExecutionModelGeometry;
- case SHADER_TYPE_PIXEL: return spv::ExecutionModelFragment;
- case SHADER_TYPE_COMPUTE: return spv::ExecutionModelGLCompute;
- // clang-format on
+ case SHADER_TYPE_VERTEX: return spv::ExecutionModelVertex;
+ case SHADER_TYPE_HULL: return spv::ExecutionModelTessellationControl;
+ case SHADER_TYPE_DOMAIN: return spv::ExecutionModelTessellationEvaluation;
+ case SHADER_TYPE_GEOMETRY: return spv::ExecutionModelGeometry;
+ case SHADER_TYPE_PIXEL: return spv::ExecutionModelFragment;
+ case SHADER_TYPE_COMPUTE: return spv::ExecutionModelGLCompute;
+ case SHADER_TYPE_AMPLIFICATION: return spv::ExecutionModelTaskNV;
+ case SHADER_TYPE_MESH: return spv::ExecutionModelMeshNV;
+ // clang-format on
default:
UNEXPECTED("Unexpected shader type");
diff --git a/Graphics/GLSLTools/src/SPIRVUtils.cpp b/Graphics/GLSLTools/src/SPIRVUtils.cpp
index e02bc34e..5ae9d3a1 100644
--- a/Graphics/GLSLTools/src/SPIRVUtils.cpp
+++ b/Graphics/GLSLTools/src/SPIRVUtils.cpp
@@ -72,12 +72,14 @@ EShLanguage ShaderTypeToShLanguage(SHADER_TYPE ShaderType)
switch (ShaderType)
{
// clang-format off
- case SHADER_TYPE_VERTEX: return EShLangVertex;
- case SHADER_TYPE_HULL: return EShLangTessControl;
- case SHADER_TYPE_DOMAIN: return EShLangTessEvaluation;
- case SHADER_TYPE_GEOMETRY: return EShLangGeometry;
- case SHADER_TYPE_PIXEL: return EShLangFragment;
- case SHADER_TYPE_COMPUTE: return EShLangCompute;
+ case SHADER_TYPE_VERTEX: return EShLangVertex;
+ case SHADER_TYPE_HULL: return EShLangTessControl;
+ case SHADER_TYPE_DOMAIN: return EShLangTessEvaluation;
+ case SHADER_TYPE_GEOMETRY: return EShLangGeometry;
+ case SHADER_TYPE_PIXEL: return EShLangFragment;
+ case SHADER_TYPE_COMPUTE: return EShLangCompute;
+ case SHADER_TYPE_AMPLIFICATION: return EShLangTaskNV;
+ case SHADER_TYPE_MESH: return EShLangMeshNV;
// clang-format on
default:
UNEXPECTED("Unexpected shader type");