summaryrefslogtreecommitdiffstats
path: root/Graphics/ShaderTools
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-10-04 20:23:28 +0000
committerazhirnov <zh1dron@gmail.com>2020-10-04 20:32:25 +0000
commit7838459ef71fe5f0979f30df8348a6981363d6c8 (patch)
tree0fea27225f76476cd5e19f0b11e4c574040f7bfb /Graphics/ShaderTools
parentAdded dummy implementation for D3D11, D3D12, OpenGL (diff)
downloadDiligentCore-7838459ef71fe5f0979f30df8348a6981363d6c8.tar.gz
DiligentCore-7838459ef71fe5f0979f30df8348a6981363d6c8.zip
Added Vulkan implementation
Diffstat (limited to 'Graphics/ShaderTools')
-rw-r--r--Graphics/ShaderTools/src/GLSLangUtils.cpp24
-rw-r--r--Graphics/ShaderTools/src/SPIRVShaderResources.cpp24
2 files changed, 30 insertions, 18 deletions
diff --git a/Graphics/ShaderTools/src/GLSLangUtils.cpp b/Graphics/ShaderTools/src/GLSLangUtils.cpp
index ef57e27b..4382f67f 100644
--- a/Graphics/ShaderTools/src/GLSLangUtils.cpp
+++ b/Graphics/ShaderTools/src/GLSLangUtils.cpp
@@ -70,18 +70,24 @@ void FinalizeGlslang()
static EShLanguage ShaderTypeToShLanguage(SHADER_TYPE ShaderType)
{
- static_assert(SHADER_TYPE_LAST == 0x080, "Please handle the new shader type in the switch below");
+ static_assert(SHADER_TYPE_LAST == 0x2000, "Please handle the new shader type in the switch below");
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_AMPLIFICATION: return EShLangTaskNV;
- case SHADER_TYPE_MESH: return EShLangMeshNV;
+ 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;
+ case SHADER_TYPE_RAY_GEN: return EShLangRayGen;
+ case SHADER_TYPE_RAY_MISS: return EShLangMiss;
+ case SHADER_TYPE_RAY_CLOSEST_HIT: return EShLangClosestHit;
+ case SHADER_TYPE_RAY_ANY_HIT: return EShLangAnyHit;
+ case SHADER_TYPE_RAY_INTERSECTION: return EShLangIntersect;
+ case SHADER_TYPE_CALLABLE: return EShLangCallable;
// clang-format on
default:
UNEXPECTED("Unexpected shader type");
diff --git a/Graphics/ShaderTools/src/SPIRVShaderResources.cpp b/Graphics/ShaderTools/src/SPIRVShaderResources.cpp
index 2ba5d90a..b20394a4 100644
--- a/Graphics/ShaderTools/src/SPIRVShaderResources.cpp
+++ b/Graphics/ShaderTools/src/SPIRVShaderResources.cpp
@@ -150,18 +150,24 @@ ShaderResourceDesc SPIRVShaderResourceAttribs::GetResourceDesc() const
static spv::ExecutionModel ShaderTypeToExecutionModel(SHADER_TYPE ShaderType)
{
- static_assert(SHADER_TYPE_LAST == 0x080, "Please handle the new shader type in the switch below");
+ static_assert(SHADER_TYPE_LAST == 0x2000, "Please handle the new shader type in the switch below");
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;
- case SHADER_TYPE_AMPLIFICATION: return spv::ExecutionModelTaskNV;
- case SHADER_TYPE_MESH: return spv::ExecutionModelMeshNV;
+ 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;
+ case SHADER_TYPE_RAY_GEN: return spv::ExecutionModelRayGenerationKHR;
+ case SHADER_TYPE_RAY_MISS: return spv::ExecutionModelMissKHR;
+ case SHADER_TYPE_RAY_CLOSEST_HIT: return spv::ExecutionModelClosestHitKHR;
+ case SHADER_TYPE_RAY_ANY_HIT: return spv::ExecutionModelAnyHitKHR;
+ case SHADER_TYPE_RAY_INTERSECTION: return spv::ExecutionModelIntersectionKHR;
+ case SHADER_TYPE_CALLABLE: return spv::ExecutionModelCallableKHR;
// clang-format on
default:
UNEXPECTED("Unexpected shader type");