MCPcopy Create free account
hub / github.com/BabylonJS/BabylonNative / Compile

Method Compile

Plugins/NativeEngine/Source/ShaderCompilerMetal.cpp:73–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71 }
72
73 void ShaderCompiler::Compile(std::string_view vertexSource, std::string_view fragmentSource, std::function<void(ShaderInfo, ShaderInfo)> onCompiled)
74 {
75 glslang::TProgram program;
76
77 glslang::TShader vertexShader{EShLangVertex};
78 AddShader(program, vertexShader, vertexSource);
79
80 glslang::TShader fragmentShader{EShLangFragment};
81 AddShader(program, fragmentShader, fragmentSource);
82 InvertYDerivativeOperands(fragmentShader);
83
84 if (!program.link(EShMsgDefault))
85 {
86 throw std::exception(); //program.getInfoDebugLog());
87 }
88
89 std::string vertexShaderMSL(vertexSource.data(), vertexSource.size());
90 auto vertexCompiler = CompileShader(program, EShLangVertex, vertexShaderMSL);
91 ShaderInfo vertexShaderInfo{
92 std::move(vertexCompiler),
93 gsl::make_span(reinterpret_cast<uint8_t*>(vertexShaderMSL.data()), vertexShaderMSL.size())};
94
95 std::string fragmentShaderMSL(fragmentSource.data(), fragmentSource.size());
96 auto fragmentCompiler = CompileShader(program, EShLangFragment, fragmentShaderMSL);
97 ShaderInfo fragmentShaderInfo{
98 std::move(fragmentCompiler),
99 gsl::make_span(reinterpret_cast<uint8_t*>(fragmentShaderMSL.data()), fragmentShaderMSL.size())};
100
101 onCompiled(std::move(vertexShaderInfo), std::move(fragmentShaderInfo));
102 }
103}

Callers

nothing calls this directly

Calls 2

AddShaderFunction · 0.70
CompileShaderFunction · 0.70

Tested by

no test coverage detected