Adds #include functionality to shader source code Compiles source code file with included files or compiles a shader.
More...
#include <Shader.h>
|
static QString | compile (QString const &_sourceFile) |
|
|
static QString | compileRecursive (QString const &_sourceFile, std::set< QString > &_includedFiles) |
|
static QString | parseIncludeLine (QString const &_baseDir, QString const &_line) |
| Parses filename from the #include macro. More...
|
|
Adds #include functionality to shader source code Compiles source code file with included files or compiles a shader.
QString omni::visual::ShaderCompiler::compile |
( |
QString const & |
_sourceFile | ) |
|
|
static |
76 std::set<QString> _includedFiles;
static QString compileRecursive(QString const &_sourceFile, std::set< QString > &_includedFiles)
Definition: Shader.cpp:80
QString omni::visual::ShaderCompiler::compileRecursive |
( |
QString const & |
_sourceFile, |
|
|
std::set< QString > & |
_includedFiles |
|
) |
| |
|
staticprivate |
81 if (_includedFiles.count(_sourceFile) > 0)
return QString();
83 QFile _f(_sourceFile);
84 _includedFiles.insert(_sourceFile);
88 if (_f.open(QIODevice::ReadOnly))
93 QString _line = in.readLine().trimmed();
94 if (_line.startsWith(
"#include")) {
99 _outputFile += _line +
'\n';
static QString compileRecursive(QString const &_sourceFile, std::set< QString > &_includedFiles)
Definition: Shader.cpp:80
static QString parseIncludeLine(QString const &_baseDir, QString const &_line)
Parses filename from the #include macro.
Definition: Shader.cpp:107
QString omni::visual::ShaderCompiler::parseIncludeLine |
( |
QString const & |
_baseDir, |
|
|
QString const & |
_line |
|
) |
| |
|
staticprivate |
Parses filename from the #include macro.
108 QString _file = _line;
109 _file = _file.remove(
"#include").trimmed();
110 if (_file.isEmpty())
return QString();
112 int _separatorBegin = 0;
113 for (; _separatorBegin < _file.length(); ++_separatorBegin) {
114 if (_file[_separatorBegin] ==
'"' || _file[_separatorBegin] ==
'<')
break;
116 int _separatorEnd = _separatorBegin + 1;
117 bool _haveSep =
false;
119 for (; _separatorEnd < _file.length(); ++_separatorEnd) {
120 auto _sep = _file[_separatorBegin];
121 if ((_sep ==
'"' && _file[_separatorEnd] ==
'"') ||
122 (_sep ==
'<' && _file[_separatorEnd] ==
'>')) {
129 if (!_haveSep)
return QString();
130 _separatorBegin += 1;
131 _file = _file.remove(0,_separatorBegin);
132 _file.truncate(_separatorEnd - _separatorBegin);
133 return _file.trimmed();
The documentation for this class was generated from the following files: