summaryrefslogtreecommitdiff
path: root/src/mbgl/shaders/shaders.cpp
blob: 31ff405f0218a2363826dcc82d201aebf68cbdb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <mbgl/shaders/shaders.hpp>
#include <mbgl/shaders/preludes.hpp>
#include <mbgl/programs/program_parameters.hpp>

#include <cassert>
#include <sstream>
#include <iomanip>

namespace mbgl {
namespace shaders {

std::string fragmentSource(const ProgramParameters& parameters, const char* fragmentSource) {
    return parameters.getDefines() + fragmentPrelude + fragmentSource;
}

std::string vertexSource(const ProgramParameters& parameters, const char* vertexSource) {
    return parameters.getDefines() + vertexPrelude + vertexSource;
}

std::string programIdentifier(const std::string& vertexSource, const std::string& fragmentSource) {
    std::ostringstream ss;
    ss << std::setfill('0') << std::setw(sizeof(size_t) * 2) << std::hex;
    ss << std::hash<std::string>()(vertexSource);
    ss << std::hash<std::string>()(fragmentSource);
    return ss.str();
}

} // namespace shaders
} // namespace mbgl