18 #include "SPIRV/GlslangToSpv.h"
19 #include "glslang/Public/ResourceLimits.h"
45 default: assert(
false &&
"Unknown shader stage" );
return EShLangVertex;
53 const char * shaderStrings[1];
54 shaderStrings[0] = glslShader.data();
56 glslang::TShader shader( stage );
57 shader.setStrings( shaderStrings, 1 );
60 EShMessages messages = (EShMessages)( EShMsgSpvRules | EShMsgVulkanRules );
62 if ( !shader.parse( GetDefaultResources(), 100,
false, messages ) )
64 puts( shader.getInfoLog() );
65 puts( shader.getInfoDebugLog() );
69 glslang::TProgram program;
70 program.addShader( &shader );
76 if ( !program.link( messages ) )
78 puts( shader.getInfoLog() );
79 puts( shader.getInfoDebugLog() );
84 glslang::GlslangToSpv( *program.getIntermediate( stage ), spvShader );
90 std::vector<unsigned int> shaderSPV;
91 if ( !
GLSLtoSPV( shaderStage, shaderText, shaderSPV ) )
93 throw std::runtime_error(
"Could not convert glsl shader to spir-v -> terminating" );
VULKAN_HPP_NODISCARD Result createShaderModule(const vk::ShaderModuleCreateInfo *pCreateInfo, const vk::AllocationCallbacks *pAllocator, vk::ShaderModule *pShaderModule, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
vk::ShaderModule createShaderModule(vk::Device const &device, vk::ShaderStageFlagBits shaderStage, std::string const &shaderText)
bool GLSLtoSPV(const vk::ShaderStageFlagBits shaderType, std::string const &glslShader, std::vector< unsigned int > &spvShader)
EShLanguage translateShaderStage(vk::ShaderStageFlagBits stage)
@ eTessellationEvaluation