From dc9a4e784c8bb97fbb16a01624c7b8f0544977a4 Mon Sep 17 00:00:00 2001 From: azhirnov Date: Tue, 11 Aug 2020 22:48:23 +0300 Subject: Added mesh shader added mesh shader support to DX12 and Vulkan, added DXIL compiler for Shader Model 6.x --- Graphics/GLSLTools/src/GLSLSourceBuilder.cpp | 7 +++++++ Graphics/GLSLTools/src/SPIRVShaderResources.cpp | 16 +++++++++------- Graphics/GLSLTools/src/SPIRVUtils.cpp | 14 ++++++++------ 3 files changed, 24 insertions(+), 13 deletions(-) (limited to 'Graphics/GLSLTools') 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"); -- cgit v1.2.3