| 18 | namespace |
| 19 | { |
| 20 | void AddShader(glslang::TProgram& program, glslang::TShader& shader, std::string_view source) |
| 21 | { |
| 22 | const std::array<const char*, 1> sources{source.data()}; |
| 23 | shader.setStrings(sources.data(), gsl::narrow_cast<int>(sources.size())); |
| 24 | shader.setEnvInput(glslang::EShSourceGlsl, shader.getStage(), glslang::EShClientVulkan, 100); |
| 25 | shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_0); |
| 26 | shader.setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0); |
| 27 | |
| 28 | if (!shader.parse(&DefaultTBuiltInResource, 450, false, EShMsgDefault)) |
| 29 | { |
| 30 | throw std::exception(shader.getInfoDebugLog()); |
| 31 | } |
| 32 | |
| 33 | program.addShader(&shader); |
| 34 | } |
| 35 | |
| 36 | std::unique_ptr<spirv_cross::Compiler> CompileShader(glslang::TProgram& program, EShLanguage stage, gsl::span<const spirv_cross::HLSLVertexAttributeRemap> attributes, ID3DBlob** blob) |
| 37 | { |