#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.
|
| |
| static bool | loadStringListFromFile (QString _fileName, QStringList *_out) |
| | Load a text file as string list.
|
| |
| static QString | getAbsFilePath (QString _fileName) |
| | Convert a filename to an absolute filename.
|
| |
|
| void | loadShaderTemplateFromFile () |
| | Loads external shader templates.
|
| |
| void | scanShaderTemplate (QStringList &_templateSrc, QString _templateFilename, QStringList *_outLayoutDirectives=0) |
| | Scans loaded shader template for requested inputs, glsl version or includes.
|
| |
| void | init (const ShaderGenDesc *_desc, ShaderModifier *const *_modifiers, unsigned int _numActiveMods) |
| | Called in constructor.
|
| |
| 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.
|
| |
| void | addLightingCode (QStringList *_code) |
| | Adds lighting function calls to code.
|
| |
| void | modifyLightingCode (QStringList *_code, ShaderModifier *_modifier) |
| | Calls lighting modifier for each light.
|
| |
| void | addTexGenCode (QStringList *_code, bool _fragmentShader) |
| | Add texture coordinate generation code.
|
| |
| 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
|
| |
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: