#include <OpenFlipper/libs_required/ACG/GL/ShaderGenerator.hh>
|
static void | setShaderDir (QString _dir) |
|
static QString | getShaderDir () |
|
static unsigned int | registerModifier (ShaderModifier *_modifier) |
| Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-IDs in the constructor of ShaderProgGen to active them. More...
|
|
static bool | loadStringListFromFile (QString _fileName, QStringList *_out) |
| Load a text file as string list. More...
|
|
static QString | getAbsFilePath (QString _fileName) |
| Convert a filename to an absolute filename. More...
|
|
|
void | loadShaderTemplateFromFile () |
| Loads external shader templates. More...
|
|
void | scanShaderTemplate (QStringList &_templateSrc, QString _templateFilename, QStringList *_outLayoutDirectives=0) |
| Scans loaded shader template for requested inputs, glsl version or includes. More...
|
|
void | init (const ShaderGenDesc *_desc, ShaderModifier *const *_modifiers, unsigned int _numActiveMods) |
| Called in constructor. More...
|
|
void | init (const ShaderGenDesc *_desc, const unsigned int *_modifiers, unsigned int _numActiveMods) |
|
void | buildVertexShader () |
|
void | buildTessControlShader () |
|
void | buildTessEvalShader () |
|
void | buildGeometryShader () |
|
void | buildFragmentShader () |
|
void | addVertexBeginCode (QStringList *_code) |
|
void | addVertexEndCode (QStringList *_code) |
|
void | addFragmentBeginCode (QStringList *_code) |
|
void | addFragmentEndCode (QStringList *_code) |
|
void | addLightingFunctions (QStringList *_code) |
| Adds lighting definition functions. More...
|
|
void | addLightingCode (QStringList *_code) |
| Adds lighting function calls to code. More...
|
|
void | modifyLightingCode (QStringList *_code, ShaderModifier *_modifier) |
| Calls lighting modifier for each light. More...
|
|
void | addTexGenCode (QStringList *_code, bool _fragmentShader) |
| Add texture coordinate generation code. More...
|
|
int | checkForIncludes (QString _str, ShaderGenerator *_gen, QString _includePath) |
|
int | checkForIncludes (QString _str, QStringList *_outImport, QString _includePath) |
|
void | initGenDefines (ShaderGenerator *_gen) |
| provide generated defines to shader More...
|
|
ShaderProgGenerator is responsible for generating a matching pair of vertex and fragment shaders.
Definition at line 1189 of file ShaderGenerator.hh.
◆ ShaderProgGenerator() [1/7]
ACG::ShaderProgGenerator::ShaderProgGenerator |
( |
const ShaderGenDesc * |
_desc | ) |
|
|
explicit |
◆ ShaderProgGenerator() [2/7]
ACG::ShaderProgGenerator::ShaderProgGenerator |
( |
const ShaderGenDesc * |
_desc, |
|
|
const std::vector< unsigned int > & |
_modifierIDs |
|
) |
| |
- Parameters
-
_desc | description-set of shader properties. |
_modifierIDs | array of modifier-IDs that should be used for the generation. |
Definition at line 838 of file ShaderGenerator.cc.
◆ ShaderProgGenerator() [3/7]
ACG::ShaderProgGenerator::ShaderProgGenerator |
( |
const ShaderGenDesc * |
_desc, |
|
|
const std::vector< unsigned int > * |
_modifierIDs |
|
) |
| |
- Parameters
-
_desc | description-set of shader properties. |
_modifierIDs | array of modifier-IDs that should be used for the generation. |
Definition at line 844 of file ShaderGenerator.cc.
◆ ShaderProgGenerator() [4/7]
ACG::ShaderProgGenerator::ShaderProgGenerator |
( |
const ShaderGenDesc * |
_desc, |
|
|
const unsigned int * |
_modifierIDs, |
|
|
unsigned int |
_numModifiers |
|
) |
| |
- Parameters
-
_desc | description-set of shader properties. |
_modifierIDs | array of modifier-IDs that should be used for the generation. |
_numModifiers | number of modifiers in _modifierIDs |
Definition at line 832 of file ShaderGenerator.cc.
◆ ShaderProgGenerator() [5/7]
ACG::ShaderProgGenerator::ShaderProgGenerator |
( |
const ShaderGenDesc * |
_desc, |
|
|
ShaderModifier *const * |
_modifiers, |
|
|
unsigned int |
_numModifiers |
|
) |
| |
- Parameters
-
_desc | description-set of shader properties. |
_modifiers | array of modifiers that should be used for the generation. |
_numModifiers | number of modifiers in _modifierIDs |
Definition at line 851 of file ShaderGenerator.cc.
◆ ShaderProgGenerator() [6/7]
- Parameters
-
_desc | description-set of shader properties. |
_modifiers | array of modifiers that should be used for the generation. |
Definition at line 857 of file ShaderGenerator.cc.
◆ ShaderProgGenerator() [7/7]
- Parameters
-
_desc | description-set of shader properties. |
_modifiers | array of modifiers that should be used for the generation. |
Definition at line 863 of file ShaderGenerator.cc.
◆ ~ShaderProgGenerator()
ACG::ShaderProgGenerator::~ShaderProgGenerator |
( |
void |
| ) |
|
|
virtual |
◆ addFragmentBeginCode()
void ACG::ShaderProgGenerator::addFragmentBeginCode |
( |
QStringList * |
_code | ) |
|
|
private |
◆ addFragmentEndCode()
void ACG::ShaderProgGenerator::addFragmentEndCode |
( |
QStringList * |
_code | ) |
|
|
private |
◆ addLightingCode()
void ACG::ShaderProgGenerator::addLightingCode |
( |
QStringList * |
_code | ) |
|
|
private |
◆ addLightingFunctions()
void ACG::ShaderProgGenerator::addLightingFunctions |
( |
QStringList * |
_code | ) |
|
|
private |
◆ addTexGenCode()
void ACG::ShaderProgGenerator::addTexGenCode |
( |
QStringList * |
_code, |
|
|
bool |
_fragmentShader |
|
) |
| |
|
private |
◆ addVertexBeginCode()
void ACG::ShaderProgGenerator::addVertexBeginCode |
( |
QStringList * |
_code | ) |
|
|
private |
◆ addVertexEndCode()
void ACG::ShaderProgGenerator::addVertexEndCode |
( |
QStringList * |
_code | ) |
|
|
private |
◆ buildFragmentShader()
void ACG::ShaderProgGenerator::buildFragmentShader |
( |
| ) |
|
|
private |
◆ buildGeometryShader()
void ACG::ShaderProgGenerator::buildGeometryShader |
( |
| ) |
|
|
private |
◆ buildTessControlShader()
void ACG::ShaderProgGenerator::buildTessControlShader |
( |
| ) |
|
|
private |
◆ buildTessEvalShader()
void ACG::ShaderProgGenerator::buildTessEvalShader |
( |
| ) |
|
|
private |
◆ buildVertexShader()
void ACG::ShaderProgGenerator::buildVertexShader |
( |
| ) |
|
|
private |
◆ checkForIncludes() [1/2]
int ACG::ShaderProgGenerator::checkForIncludes |
( |
QString |
_str, |
|
|
QStringList * |
_outImport, |
|
|
QString |
_includePath |
|
) |
| |
|
private |
checks if _str is an include directive eventually imports the included file to the specified stringlist
Definition at line 1269 of file ShaderGenerator.cc.
◆ checkForIncludes() [2/2]
int ACG::ShaderProgGenerator::checkForIncludes |
( |
QString |
_str, |
|
|
ShaderGenerator * |
_gen, |
|
|
QString |
_includePath |
|
) |
| |
|
private |
checks if _str is an include directive eventually imports the included file to the specified generator
Definition at line 1248 of file ShaderGenerator.cc.
◆ generateShaders()
void ACG::ShaderProgGenerator::generateShaders |
( |
| ) |
|
◆ getAbsFilePath()
QString ACG::ShaderProgGenerator::getAbsFilePath |
( |
QString |
_fileName | ) |
|
|
static |
Convert a filename to an absolute filename.
- Parameters
-
_fileName | relative (from shader dir) or absolute file name |
Definition at line 2426 of file ShaderGenerator.cc.
◆ getActiveModifier()
ShaderModifier * ACG::ShaderProgGenerator::getActiveModifier |
( |
int |
_i | ) |
|
◆ getFragmentShaderCode()
const QStringList & ACG::ShaderProgGenerator::getFragmentShaderCode |
( |
| ) |
|
◆ getGeometryShaderCode()
const QStringList & ACG::ShaderProgGenerator::getGeometryShaderCode |
( |
| ) |
|
◆ getNumActiveModifiers()
int ACG::ShaderProgGenerator::getNumActiveModifiers |
( |
| ) |
const |
◆ getPathName()
QString ACG::ShaderProgGenerator::getPathName |
( |
QString |
_strFileName | ) |
|
|
staticprivate |
◆ getShaderDir()
QString ACG::ShaderProgGenerator::getShaderDir |
( |
| ) |
|
|
static |
Return shader directory path as previosly specified by user
Definition at line 2442 of file ShaderGenerator.cc.
◆ getTessControlShaderCode()
const QStringList & ACG::ShaderProgGenerator::getTessControlShaderCode |
( |
| ) |
|
◆ getTessEvaluationShaderCode()
const QStringList & ACG::ShaderProgGenerator::getTessEvaluationShaderCode |
( |
| ) |
|
◆ getVertexShaderCode()
const QStringList & ACG::ShaderProgGenerator::getVertexShaderCode |
( |
| ) |
|
◆ hasGeometryShader()
bool ACG::ShaderProgGenerator::hasGeometryShader |
( |
| ) |
const |
◆ hasTessControlShader()
bool ACG::ShaderProgGenerator::hasTessControlShader |
( |
| ) |
const |
◆ hasTessEvaluationShader()
bool ACG::ShaderProgGenerator::hasTessEvaluationShader |
( |
| ) |
const |
◆ init() [1/2]
void ACG::ShaderProgGenerator::init |
( |
const ShaderGenDesc * |
_desc, |
|
|
const unsigned int * |
_modifiers, |
|
|
unsigned int |
_numActiveMods |
|
) |
| |
|
private |
◆ init() [2/2]
◆ initGenDefines()
◆ loadLightingFunctions()
void ACG::ShaderProgGenerator::loadLightingFunctions |
( |
| ) |
|
|
staticprivate |
◆ loadShaderTemplateFromFile()
void ACG::ShaderProgGenerator::loadShaderTemplateFromFile |
( |
| ) |
|
|
private |
◆ loadStringListFromFile()
bool ACG::ShaderProgGenerator::loadStringListFromFile |
( |
QString |
_fileName, |
|
|
QStringList * |
_out |
|
) |
| |
|
static |
Load a text file as string list.
- Parameters
-
_fileName | relative (from shader dir) or absolute file name |
_out | lines from text file |
- Returns
- true on success, false otherwise
Definition at line 963 of file ShaderGenerator.cc.
◆ modifyLightingCode()
void ACG::ShaderProgGenerator::modifyLightingCode |
( |
QStringList * |
_code, |
|
|
ShaderModifier * |
_modifier |
|
) |
| |
|
private |
◆ registerModifier()
unsigned int ACG::ShaderProgGenerator::registerModifier |
( |
ShaderModifier * |
_modifier | ) |
|
|
static |
Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-IDs in the constructor of ShaderProgGen to active them.
- Parameters
-
_modifier | address of a modifier implementation |
- Returns
- modifier ID
Definition at line 2448 of file ShaderGenerator.cc.
◆ saveFragmentShToFile()
void ACG::ShaderProgGenerator::saveFragmentShToFile |
( |
const char * |
_fileName | ) |
|
◆ saveGeometryShToFile()
void ACG::ShaderProgGenerator::saveGeometryShToFile |
( |
const char * |
_fileName | ) |
|
◆ saveVertexShToFile()
void ACG::ShaderProgGenerator::saveVertexShToFile |
( |
const char * |
_fileName | ) |
|
◆ scanShaderTemplate()
void ACG::ShaderProgGenerator::scanShaderTemplate |
( |
QStringList & |
_templateSrc, |
|
|
QString |
_templateFilename, |
|
|
QStringList * |
_outLayoutDirectives = 0 |
|
) |
| |
|
private |
Scans loaded shader template for requested inputs, glsl version or includes.
Definition at line 2308 of file ShaderGenerator.cc.
◆ setShaderDir()
void ACG::ShaderProgGenerator::setShaderDir |
( |
QString |
_dir | ) |
|
|
static |
The shader directory has to be defined first before making use of the generator! For example: setShaderDir(OpenFlipper::Options::shaderDirStr())
Definition at line 2437 of file ShaderGenerator.cc.
◆ activeMods_
◆ desc_
◆ fragment_
◆ fragmentShaderFile_
QString ACG::ShaderProgGenerator::fragmentShaderFile_ |
|
private |
◆ fragmentTemplate_
QStringList ACG::ShaderProgGenerator::fragmentTemplate_ |
|
private |
◆ geometry_
◆ geometryShaderFile_
QString ACG::ShaderProgGenerator::geometryShaderFile_ |
|
private |
◆ geometryTemplate_
QStringList ACG::ShaderProgGenerator::geometryTemplate_ |
|
private |
◆ ioDesc_
◆ lightingCode_
QStringList ACG::ShaderProgGenerator::lightingCode_ |
|
staticprivate |
◆ numRegisteredModifiers_
int ACG::ShaderProgGenerator::numRegisteredModifiers_ = 0 |
|
staticprivate |
◆ registeredModifiers_
std::vector< ShaderModifier * > ACG::ShaderProgGenerator::registeredModifiers_ |
|
staticprivate |
◆ shaderDir_
QString ACG::ShaderProgGenerator::shaderDir_ |
|
staticprivate |
◆ tessControl_
◆ tessControlLayout_
QStringList ACG::ShaderProgGenerator::tessControlLayout_ |
|
private |
◆ tessControlShaderFile_
QString ACG::ShaderProgGenerator::tessControlShaderFile_ |
|
private |
◆ tessControlTemplate_
QStringList ACG::ShaderProgGenerator::tessControlTemplate_ |
|
private |
◆ tessEval_
◆ tessEvalLayout_
QStringList ACG::ShaderProgGenerator::tessEvalLayout_ |
|
private |
◆ tessEvalShaderFile_
QString ACG::ShaderProgGenerator::tessEvalShaderFile_ |
|
private |
◆ tessEvalTemplate_
QStringList ACG::ShaderProgGenerator::tessEvalTemplate_ |
|
private |
◆ vertex_
◆ vertexShaderFile_
QString ACG::ShaderProgGenerator::vertexShaderFile_ |
|
private |
◆ vertexTemplate_
QStringList ACG::ShaderProgGenerator::vertexTemplate_ |
|
private |
The documentation for this class was generated from the following files: