1 #include <mbgl/shaders/shaders.hpp>
2 #include <mbgl/shaders/preludes.hpp>
3 #include <mbgl/programs/program_parameters.hpp>
4 
5 #include <cassert>
6 #include <sstream>
7 #include <iomanip>
8 
9 namespace mbgl {
10 namespace shaders {
11 
fragmentSource(const ProgramParameters & parameters,const char * fragmentSource)12 std::string fragmentSource(const ProgramParameters& parameters, const char* fragmentSource) {
13     return parameters.getDefines() + fragmentPrelude + fragmentSource;
14 }
15 
vertexSource(const ProgramParameters & parameters,const char * vertexSource)16 std::string vertexSource(const ProgramParameters& parameters, const char* vertexSource) {
17     return parameters.getDefines() + vertexPrelude + vertexSource;
18 }
19 
programIdentifier(const std::string & vertexSource,const std::string & fragmentSource)20 std::string programIdentifier(const std::string& vertexSource, const std::string& fragmentSource) {
21     std::ostringstream ss;
22     ss << std::setfill('0') << std::setw(sizeof(size_t) * 2) << std::hex;
23     ss << std::hash<std::string>()(vertexSource);
24     ss << std::hash<std::string>()(fragmentSource);
25     ss << "v2";
26     return ss.str();
27 }
28 
29 } // namespace shaders
30 } // namespace mbgl
31