Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_opengl_shader_loader.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Julian Thijssen <julianthijssen@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QOpenGLShaderProgram>
10#include <QByteArray>
11#include <QString>
12
13#include <unordered_map>
14#include <string>
15#include <stdexcept>
16
17#include <map>
18
24
30class KisShaderProgram : public QOpenGLShaderProgram {
31public:
36 static std::map<Uniform, const char *> names;
37
42 int location(Uniform uniform) {
43 std::map<Uniform, int>::const_iterator it = locationMap.find(uniform);
44 if (it != locationMap.end()) {
45 return it->second;
46 } else {
47 int location = uniformLocation(names[uniform]);
48 locationMap[uniform] = location;
49 return location;
50 }
51 }
52private:
53 std::map<Uniform, int> locationMap;
54};
55
60class ShaderLoaderException : public std::runtime_error {
61public:
62 ShaderLoaderException(QString error) : std::runtime_error(error.toStdString()) { }
63};
64
72public:
73 KisShaderProgram *loadDisplayShader(QSharedPointer<KisDisplayFilter> displayFilter, bool useHiQualityFiltering);
76
77private:
78 KisShaderProgram *loadShader(QString vertPath, QString fragPath, QByteArray vertHeader, QByteArray fragHeader);
79};
KisShaderProgram * loadShader(QString vertPath, QString fragPath, QByteArray vertHeader, QByteArray fragHeader)
KisShaderProgram * loadSolidColorShader()
KisShaderProgram * loadCheckerShader()
KisShaderProgram * loadDisplayShader(QSharedPointer< KisDisplayFilter > displayFilter, bool useHiQualityFiltering)
int location(Uniform uniform)
std::map< Uniform, int > locationMap
static std::map< Uniform, const char * > names
@ ModelViewProjection