supported ray tracing shader.
This commit is contained in:
parent
ae95ec2827
commit
532421fea7
37
glsl2spv.cpp
37
glsl2spv.cpp
@ -167,9 +167,19 @@ EShLanguage FindLanguage(const VkShaderStageFlagBits shader_type)
|
|||||||
case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT: return EShLangTessEvaluation;
|
case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT: return EShLangTessEvaluation;
|
||||||
case VK_SHADER_STAGE_GEOMETRY_BIT: return EShLangGeometry;
|
case VK_SHADER_STAGE_GEOMETRY_BIT: return EShLangGeometry;
|
||||||
case VK_SHADER_STAGE_FRAGMENT_BIT: return EShLangFragment;
|
case VK_SHADER_STAGE_FRAGMENT_BIT: return EShLangFragment;
|
||||||
|
|
||||||
case VK_SHADER_STAGE_COMPUTE_BIT: return EShLangCompute;
|
case VK_SHADER_STAGE_COMPUTE_BIT: return EShLangCompute;
|
||||||
|
|
||||||
case VK_SHADER_STAGE_TASK_BIT_NV: return EShLangTaskNV;
|
case VK_SHADER_STAGE_TASK_BIT_NV: return EShLangTaskNV;
|
||||||
case VK_SHADER_STAGE_MESH_BIT_NV: return EShLangMeshNV;
|
case VK_SHADER_STAGE_MESH_BIT_NV: return EShLangMeshNV;
|
||||||
|
|
||||||
|
case VK_SHADER_STAGE_RAYGEN_BIT_NV: return EShLangRayGenNV;
|
||||||
|
case VK_SHADER_STAGE_ANY_HIT_BIT_NV: return EShLangAnyHitNV;
|
||||||
|
case VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV: return EShLangClosestHitNV;
|
||||||
|
case VK_SHADER_STAGE_MISS_BIT_NV: return EShLangMissNV;
|
||||||
|
case VK_SHADER_STAGE_INTERSECTION_BIT_NV: return EShLangIntersectNV;
|
||||||
|
case VK_SHADER_STAGE_CALLABLE_BIT_NV: return EShLangCallableNV;
|
||||||
|
|
||||||
default: return EShLangVertex;
|
default: return EShLangVertex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -254,7 +264,7 @@ extern "C"
|
|||||||
|
|
||||||
char *new_strcpy(const char *src)
|
char *new_strcpy(const char *src)
|
||||||
{
|
{
|
||||||
int len=1+strlen(src);
|
size_t len=1+strlen(src);
|
||||||
|
|
||||||
char *str=new char[len];
|
char *str=new char[len];
|
||||||
|
|
||||||
@ -484,9 +494,11 @@ extern "C"
|
|||||||
{
|
{
|
||||||
EShLanguage stage = FindLanguage((VkShaderStageFlagBits)shader_stage);
|
EShLanguage stage = FindLanguage((VkShaderStageFlagBits)shader_stage);
|
||||||
|
|
||||||
glslang::TShader shader(stage);
|
glslang::EShSource source = glslang::EShSourceGlsl;
|
||||||
glslang::TProgram program;
|
|
||||||
DirStackFileIncluder includer;
|
glslang::TShader shader(stage);
|
||||||
|
glslang::TProgram program;
|
||||||
|
DirStackFileIncluder includer;
|
||||||
|
|
||||||
const char *shaderStrings[1];
|
const char *shaderStrings[1];
|
||||||
TBuiltInResource Resources=default_build_in_resource;
|
TBuiltInResource Resources=default_build_in_resource;
|
||||||
@ -502,6 +514,8 @@ extern "C"
|
|||||||
|
|
||||||
// HLSL Request!
|
// HLSL Request!
|
||||||
shader.setEntryPoint(compile_info->entrypoint);
|
shader.setEntryPoint(compile_info->entrypoint);
|
||||||
|
|
||||||
|
source = glslang::EShSourceHlsl;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t i = 0; i < compile_info->includes_count; i++)
|
for (uint32_t i = 0; i < compile_info->includes_count; i++)
|
||||||
@ -516,8 +530,12 @@ extern "C"
|
|||||||
shaderStrings[0] = shader_source;
|
shaderStrings[0] = shader_source;
|
||||||
shader.setStrings(shaderStrings, 1);
|
shader.setStrings(shaderStrings, 1);
|
||||||
|
|
||||||
|
// shader.setEnvInput(source,stage,glslang::EShClientVulkan,);
|
||||||
|
// shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_0);
|
||||||
|
// shader.setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0);
|
||||||
|
|
||||||
if (!shader.parse(&Resources,
|
if (!shader.parse(&Resources,
|
||||||
100, // use 100 for ES environment, 110 for desktop; this is the GLSL version, not SPIR-V or Vulkan
|
110, // use 100 for ES environment, 110 for desktop; this is the GLSL version, not SPIR-V or Vulkan
|
||||||
false,
|
false,
|
||||||
messages,
|
messages,
|
||||||
includer))
|
includer))
|
||||||
@ -600,9 +618,18 @@ extern "C"
|
|||||||
if (_stricmp(ext_name,"tese") == 0)return VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT; else
|
if (_stricmp(ext_name,"tese") == 0)return VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT; else
|
||||||
if (_stricmp(ext_name,"geom") == 0)return VK_SHADER_STAGE_GEOMETRY_BIT; else
|
if (_stricmp(ext_name,"geom") == 0)return VK_SHADER_STAGE_GEOMETRY_BIT; else
|
||||||
if (_stricmp(ext_name,"frag") == 0)return VK_SHADER_STAGE_FRAGMENT_BIT; else
|
if (_stricmp(ext_name,"frag") == 0)return VK_SHADER_STAGE_FRAGMENT_BIT; else
|
||||||
|
|
||||||
if (_stricmp(ext_name,"comp") == 0)return VK_SHADER_STAGE_COMPUTE_BIT; else
|
if (_stricmp(ext_name,"comp") == 0)return VK_SHADER_STAGE_COMPUTE_BIT; else
|
||||||
|
|
||||||
if (_stricmp(ext_name,"task") == 0)return VK_SHADER_STAGE_TASK_BIT_NV; else
|
if (_stricmp(ext_name,"task") == 0)return VK_SHADER_STAGE_TASK_BIT_NV; else
|
||||||
if (_stricmp(ext_name,"mesh") == 0)return VK_SHADER_STAGE_MESH_BIT_NV; else
|
if (_stricmp(ext_name,"mesh") == 0)return VK_SHADER_STAGE_MESH_BIT_NV; else
|
||||||
|
|
||||||
|
if (_stricmp(ext_name,"rgen") == 0)return VK_SHADER_STAGE_RAYGEN_BIT_KHR; else
|
||||||
|
if (_stricmp(ext_name,"rahit") == 0)return VK_SHADER_STAGE_ANY_HIT_BIT_KHR; else
|
||||||
|
if (_stricmp(ext_name,"rchit") == 0)return VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR; else
|
||||||
|
if (_stricmp(ext_name,"rmiss") == 0)return VK_SHADER_STAGE_MISS_BIT_KHR; else
|
||||||
|
if (_stricmp(ext_name,"rint") == 0)return VK_SHADER_STAGE_INTERSECTION_BIT_KHR; else
|
||||||
|
if (_stricmp(ext_name,"rcall") == 0)return VK_SHADER_STAGE_CALLABLE_BIT_KHR; else
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user