Developer Documentation

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
ACG::SceneGraph::ACG::ShaderGenerator Class Reference

## Classes
struct | DefaultIODesc
struct | Keywords

## Public Member Functions
void | setGLSLVersion (int _version)
| Set glsl version.
void | addIncludeFile (QString _fileName)
| Imports another shader, same as #include.
void | initVertexShaderIO (const ShaderGenDesc *_desc, const DefaultIODesc *_iodesc)
| Adds fitting vertex shader io for a given description.
void | initTessControlShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting tess-control shader io for a given description.
void | initTessEvalShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting tess-evaluation shader io for a given description.
void | initGeometryShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting geometry shader io for a given description.
void | initFragmentShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting fragment shader io for a given description.
void | initDefaultUniforms ()
| Adds frequently used uniform parameters. More...
void | addInput (const QString &_input)
| Add one GLSL input specifier. More...
void | addInput (const QString &_type, const QString &_varname)
| Add one GLSL input specifier. More...
void | addOutput (const QString &_output)
| Add one GLSL output specifier. More...
void | addOutput (const QString &_type, const QString &_varname)
| Add one GLSL output specifier. More...
void | addUniform (QString _uniform, QString _comment="")
| Add one GLSL uniform specifier. More...
void | addDefine (const QString &_define)
| Add one define. More...
void | addIODefine (const QString &_macroName, const QString &_resolvedName)
| Assign an opaque name to the abstract macro. More...
void | addMacros (const QStringList &_macros)
| Add a list of preprocessor macros. More...
bool | hasDefine (QString _define) const
| Check for define. More...
void | addLayout (QString _layout)
| Add a layout directive. More...
void | addRawIOBlock (QStringList _codeBlock)
| Add a raw glsl IO code block. More...
void | addLight (int lightIndex_, ShaderGenLightType _light)
| Add a light description to shader:
void | buildShaderCode (QStringList *_pMainCode, const QStringList &_defaultLightingFunctions)
| Shader assembly function. More...
const QStringList & | getShaderCode ()
| Get result of buildShaderCode.
void | saveToFile (const char *_fileName)
| Save generated shader code to text file. More...
void | matchInputs (const ShaderGenerator *_previousShaderStage, bool _passToNextStage, QString _inputPrefix="outVertex", QString _outputPrefix="outGeometry")
| Perform name matching of outputs and inputs between two shader stages. More...
void | defineIOAbstraction (const DefaultIODesc *_iodesc, bool _vs, bool _fs)
| Define abstract IO names via shader defines. More...
int | getNumOutputs () const
| get number of outputs
QString | getOutputName (int _id) const
| get variable name of output More...
int | getNumInputs () const
| get number of inputs
QString | getInputName (int _id) const
| get variable name of input More...
QString | getIOMapName (int _inId) const
| get corresponding output name of an input id More...
void | setGLSLVersion (int _version)
| Set glsl version.
void | addIncludeFile (QString _fileName)
| Imports another shader, same as #include.
void | initVertexShaderIO (const ShaderGenDesc *_desc, const DefaultIODesc *_iodesc)
| Adds fitting vertex shader io for a given description.
void | initTessControlShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting tess-control shader io for a given description.
void | initTessEvalShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting tess-evaluation shader io for a given description.
void | initGeometryShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting geometry shader io for a given description.
void | initFragmentShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting fragment shader io for a given description.
void | initDefaultUniforms ()
| Adds frequently used uniform parameters. More...
void | addInput (const QString &_input)
| Add one GLSL input specifier. More...
void | addInput (const QString &_type, const QString &_varname)
| Add one GLSL input specifier. More...
void | addOutput (const QString &_output)
| Add one GLSL output specifier. More...
void | addOutput (const QString &_type, const QString &_varname)
| Add one GLSL output specifier. More...
void | addUniform (QString _uniform, QString _comment="")
| Add one GLSL uniform specifier. More...
void | addDefine (const QString &_define)
| Add one define. More...
void | addIODefine (const QString &_macroName, const QString &_resolvedName)
| Assign an opaque name to the abstract macro. More...
void | addMacros (const QStringList &_macros)
| Add a list of preprocessor macros. More...
bool | hasDefine (QString _define) const
| Check for define. More...
void | addLayout (QString _layout)
| Add a layout directive. More...
void | addRawIOBlock (QStringList _codeBlock)
| Add a raw glsl IO code block. More...
void | addLight (int lightIndex_, ShaderGenLightType _light)
| Add a light description to shader:
void | buildShaderCode (QStringList *_pMainCode, const QStringList &_defaultLightingFunctions)
| Shader assembly function. More...
const QStringList & | getShaderCode ()
| Get result of buildShaderCode.
void | saveToFile (const char *_fileName)
| Save generated shader code to text file. More...
void | matchInputs (const ShaderGenerator *_previousShaderStage, bool _passToNextStage, QString _inputPrefix="outVertex", QString _outputPrefix="outGeometry")
| Perform name matching of outputs and inputs between two shader stages. More...
void | defineIOAbstraction (const DefaultIODesc *_iodesc, bool _vs, bool _fs)
| Define abstract IO names via shader defines. More...
int | getNumOutputs () const
| get number of outputs
QString | getOutputName (int _id) const
| get variable name of output More...
int | getNumInputs () const
| get number of inputs
QString | getInputName (int _id) const
| get variable name of input More...
QString | getIOMapName (int _inId) const
| get corresponding output name of an input id More...
void | setGLSLVersion (int _version)
| Set glsl version.
void | addIncludeFile (QString _fileName)
| Imports another shader, same as #include.
void | initVertexShaderIO (const ShaderGenDesc *_desc, const DefaultIODesc *_iodesc)
| Adds fitting vertex shader io for a given description.
void | initTessControlShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting tess-control shader io for a given description.
void | initTessEvalShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting tess-evaluation shader io for a given description.
void | initGeometryShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting geometry shader io for a given description.
void | initFragmentShaderIO (const ShaderGenDesc *_desc, ShaderGenerator *_prevStage, const DefaultIODesc *_iodesc)
| Adds fitting fragment shader io for a given description.
void | initDefaultUniforms ()
| Adds frequently used uniform parameters. More...
void | addInput (const QString &_input)
| Add one GLSL input specifier. More...
void | addInput (const QString &_type, const QString &_varname)
| Add one GLSL input specifier. More...
void | addOutput (const QString &_output)
| Add one GLSL output specifier. More...
void | addOutput (const QString &_type, const QString &_varname)
| Add one GLSL output specifier. More...
void | addUniform (QString _uniform, QString _comment="")
| Add one GLSL uniform specifier. More...
void | addDefine (const QString &_define)
| Add one define. More...
void | addIODefine (const QString &_macroName, const QString &_resolvedName)
| Assign an opaque name to the abstract macro. More...
void | addMacros (const QStringList &_macros)
| Add a list of preprocessor macros. More...
bool | hasDefine (QString _define) const
| Check for define. More...
void | addLayout (QString _layout)
| Add a layout directive. More...
void | addRawIOBlock (QStringList _codeBlock)
| Add a raw glsl IO code block. More...
void | addLight (int lightIndex_, ShaderGenLightType _light)
| Add a light description to shader:
void | buildShaderCode (QStringList *_pMainCode, const QStringList &_defaultLightingFunctions)
| Shader assembly function. More...
const QStringList & | getShaderCode ()
| Get result of buildShaderCode.
void | saveToFile (const char *_fileName)
| Save generated shader code to text file. More...
void | matchInputs (const ShaderGenerator *_previousShaderStage, bool _passToNextStage, QString _inputPrefix="outVertex", QString _outputPrefix="outGeometry")
| Perform name matching of outputs and inputs between two shader stages. More...
void | defineIOAbstraction (const DefaultIODesc *_iodesc, bool _vs, bool _fs)
| Define abstract IO names via shader defines. More...
int | getNumOutputs () const
| get number of outputs
QString | getOutputName (int _id) const
| get variable name of output More...
int | getNumInputs () const
| get number of inputs
QString | getInputName (int _id) const
| get variable name of input More...
QString | getIOMapName (int _inId) const
| get corresponding output name of an input id More...

## Static Public Attributes
static const Keywords | keywords

## Private Member Functions
void | addStringToList (QString _str, QStringList *_list, QString _prefix="", QString _postfix="")
void | addIOToCode (const QStringList &_cmds)
void | addStringToList (QString _str, QStringList *_list, QString _prefix="", QString _postfix="")
void | addIOToCode (const QStringList &_cmds)
void | addStringToList (QString _str, QStringList *_list, QString _prefix="", QString _postfix="")
void | addIOToCode (const QStringList &_cmds)

## Private Attributes
QStringList | code_
QStringList | imports_
| glsl code imports (with #include )
int | version_
QStringList | inputs_
QStringList | outputs_
QStringList | uniforms_
QStringList | genDefines_
QStringList | layouts_
QStringList | rawIO_
| io block as glsl code
bool | inputArrays_
| inputs of shader are arrays (tess-control, tess-eval, geometry)
bool | outputArrays_
| outputs of shader are arrays (tess-control)
QString | inputPrefix_
| prefix of inputs to this shader, same as prefix of ouputs of previous stage
QString | outputPrefix_
| prefix of outputs of this shader

## Detailed Description

The ShaderGenerator is used to collect shader io, uniforms, defines and includes.

The shader main-function is not generated here and must be provided as a parameter to the buildShaderCode function.

Definition at line 518 of file MeshNode2T.cc.

## Member Function Documentation

void ACG::SceneGraph::ACG::ShaderGenerator::addDefine | ( | const QString & | _define | ) |

Add one define.

Example:

#define SG_GOURAUD 1

void ACG::SceneGraph::ACG::ShaderGenerator::addDefine | ( | const QString & | _define | ) |

Add one define.

Example:

#define SG_GOURAUD 1

void ACG::SceneGraph::ACG::ShaderGenerator::addDefine | ( | const QString & | _define | ) |

Add one define.

Example:

#define SG_GOURAUD 1

void ACG::SceneGraph::ACG::ShaderGenerator::addInput | ( | const QString & | _input | ) |

Add one GLSL input specifier.

Stores string pointer only Example:

in vec4 inPosition;

void ACG::SceneGraph::ACG::ShaderGenerator::addInput | ( | const QString & | _input | ) |

Add one GLSL input specifier.

Stores string pointer only Example:

in vec4 inPosition;

void ACG::SceneGraph::ACG::ShaderGenerator::addInput | ( | const QString & | _input | ) |

Add one GLSL input specifier.

Stores string pointer only Example:

in vec4 inPosition;

void ACG::SceneGraph::ACG::ShaderGenerator::addInput | ( | const QString & | _type,
|  | const QString & | _varname
| ) |  |
| inline

Add one GLSL input specifier.

Stores string pointer only Example:

in vec4 inPosition;

Definition at line 600 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addInput | ( | const QString & | _type,
|  | const QString & | _varname
| ) |  |
| inline

Add one GLSL input specifier.

Stores string pointer only Example:

in vec4 inPosition;

Definition at line 600 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addInput | ( | const QString & | _type,
|  | const QString & | _varname
| ) |  |
| inline

Add one GLSL input specifier.

Stores string pointer only Example:

in vec4 inPosition;

Definition at line 600 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addIODefine | ( | const QString & | _macroName,
|  | const QString & | _resolvedName
| ) |  |

Assign an opaque name to the abstract macro.

void ACG::SceneGraph::ACG::ShaderGenerator::addIODefine | ( | const QString & | _macroName,
|  | const QString & | _resolvedName
| ) |  |

Assign an opaque name to the abstract macro.

void ACG::SceneGraph::ACG::ShaderGenerator::addIODefine | ( | const QString & | _macroName,
|  | const QString & | _resolvedName
| ) |  |

Assign an opaque name to the abstract macro.

void ACG::SceneGraph::ACG::ShaderGenerator::addIOToCode | ( | const QStringList & | _cmds | ) |
| private

Adds command lines to the shader code. Eventually appends missing ';'

void ACG::SceneGraph::ACG::ShaderGenerator::addIOToCode | ( | const QStringList & | _cmds | ) |
| private

Adds command lines to the shader code. Eventually appends missing ';'

void ACG::SceneGraph::ACG::ShaderGenerator::addIOToCode | ( | const QStringList & | _cmds | ) |
| private

Adds command lines to the shader code. Eventually appends missing ';'

void ACG::SceneGraph::ACG::ShaderGenerator::addLayout | ( | QString | _layout | ) |

Add a layout directive.

Example:

layout(vertices = 3) out;

void ACG::SceneGraph::ACG::ShaderGenerator::addLayout | ( | QString | _layout | ) |

Add a layout directive.

Example:

layout(vertices = 3) out;

void ACG::SceneGraph::ACG::ShaderGenerator::addLayout | ( | QString | _layout | ) |

Add a layout directive.

Example:

layout(vertices = 3) out;

void ACG::SceneGraph::ACG::ShaderGenerator::addMacros | ( | const QStringList & | _macros | ) |

Add a list of preprocessor macros.

void ACG::SceneGraph::ACG::ShaderGenerator::addMacros | ( | const QStringList & | _macros | ) |

Add a list of preprocessor macros.

void ACG::SceneGraph::ACG::ShaderGenerator::addMacros | ( | const QStringList & | _macros | ) |

Add a list of preprocessor macros.

void ACG::SceneGraph::ACG::ShaderGenerator::addOutput | ( | const QString & | _output | ) |

Add one GLSL output specifier.

Stores string pointer only Example:

out vec4 inPosition;

void ACG::SceneGraph::ACG::ShaderGenerator::addOutput | ( | const QString & | _output | ) |

Add one GLSL output specifier.

Stores string pointer only Example:

out vec4 inPosition;

void ACG::SceneGraph::ACG::ShaderGenerator::addOutput | ( | const QString & | _output | ) |

Add one GLSL output specifier.

Stores string pointer only Example:

out vec4 inPosition;

void ACG::SceneGraph::ACG::ShaderGenerator::addOutput | ( | const QString & | _type,
|  | const QString & | _varname
| ) |  |
| inline

Add one GLSL output specifier.

Stores string pointer only Example:

out vec4 inPosition;

Definition at line 620 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addOutput | ( | const QString & | _type,
|  | const QString & | _varname
| ) |  |
| inline

Add one GLSL output specifier.

Stores string pointer only Example:

out vec4 inPosition;

Definition at line 620 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addOutput | ( | const QString & | _type,
|  | const QString & | _varname
| ) |  |
| inline

Add one GLSL output specifier.

Stores string pointer only Example:

out vec4 inPosition;

Definition at line 620 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addRawIOBlock | ( | QStringList | _codeBlock | ) |
| inline

Add a raw glsl IO code block.

This code block is inserted between the generated IO block and the main function.

Example:

in vec3 someInput;
out vec3 outSomeOutput;
uniform vec3 paramA;
#define USE_METHOD_X
#include "imports.h"
..

Definition at line 685 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addRawIOBlock | ( | QStringList | _codeBlock | ) |
| inline

Add a raw glsl IO code block.

This code block is inserted between the generated IO block and the main function.

Example:

in vec3 someInput;
out vec3 outSomeOutput;
uniform vec3 paramA;
#define USE_METHOD_X
#include "imports.h"
..

Definition at line 685 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addRawIOBlock | ( | QStringList | _codeBlock | ) |
| inline

Add a raw glsl IO code block.

This code block is inserted between the generated IO block and the main function.

Example:

in vec3 someInput;
out vec3 outSomeOutput;
uniform vec3 paramA;
#define USE_METHOD_X
#include "imports.h"
..

Definition at line 685 of file MeshNode2T.cc.

void ACG::SceneGraph::ACG::ShaderGenerator::addStringToList | ( | QString | _str,
|  | QStringList * | _list,
|  | QString | _prefix = `""`,
|  | QString | _postfix = `""`
| ) |  |
| private

aborts if string already present prefix, postfix functionality is very basic: only checks for occurrence and disregards location

void ACG::SceneGraph::ACG::ShaderGenerator::addStringToList | ( | QString | _str,
|  | QStringList * | _list,
|  | QString | _prefix = `""`,
|  | QString | _postfix = `""`
| ) |  |
| private

aborts if string already present prefix, postfix functionality is very basic: only checks for occurrence and disregards location

void ACG::SceneGraph::ACG::ShaderGenerator::addStringToList | ( | QString | _str,
|  | QStringList * | _list,
|  | QString | _prefix = `""`,
|  | QString | _postfix = `""`
| ) |  |
| private

aborts if string already present prefix, postfix functionality is very basic: only checks for occurrence and disregards location

void ACG::SceneGraph::ACG::ShaderGenerator::addUniform | ( | QString | _uniform,
|  | QString | _comment = `""`
| ) |  |

Add one GLSL uniform specifier.

Stores string pointer only Example:

uniform sampler2D sampAmbient;

void ACG::SceneGraph::ACG::ShaderGenerator::addUniform | ( | QString | _uniform,
|  | QString | _comment = `""`
| ) |  |

Add one GLSL uniform specifier.

Stores string pointer only Example:

uniform sampler2D sampAmbient;

void ACG::SceneGraph::ACG::ShaderGenerator::addUniform | ( | QString | _uniform,
|  | QString | _comment = `""`
| ) |  |

Add one GLSL uniform specifier.

Stores string pointer only Example:

uniform sampler2D sampAmbient;

void ACG::SceneGraph::ACG::ShaderGenerator::buildShaderCode | ( | QStringList * | _pMainCode,
|  | const QStringList & | _defaultLightingFunctions
| ) |  |

Shader assembly function.

Also scans shader code for references to default lighting functions LitPointLight(), LitDirLight(), LitSpotLight() and eventually adds these to the shader.

void ACG::SceneGraph::ACG::ShaderGenerator::buildShaderCode | ( | QStringList * | _pMainCode,
|  | const QStringList & | _defaultLightingFunctions
| ) |  |

Shader assembly function.

Also scans shader code for references to default lighting functions LitPointLight(), LitDirLight(), LitSpotLight() and eventually adds these to the shader.

void ACG::SceneGraph::ACG::ShaderGenerator::buildShaderCode | ( | QStringList * | _pMainCode,
|  | const QStringList & | _defaultLightingFunctions
| ) |  |

Shader assembly function.

Also scans shader code for references to default lighting functions LitPointLight(), LitDirLight(), LitSpotLight() and eventually adds these to the shader.

void ACG::SceneGraph::ACG::ShaderGenerator::defineIOAbstraction | ( | const DefaultIODesc * | _iodesc,
|  | bool | _vs,
|  | bool | _fs
| ) |  |

Define abstract IO names via shader defines.

Default shader inputs and outputs can be conveniently accessed via SG_INPUT_X and SG_OUTPUT_X defines without having to worry about the combinatoric problem of shader stages. For example, in a fragment-shader view-space normals can always be accessed via SG_INPUT_NORMALVS, regardless whether there is a geometry shader or not.

Parameters

  _iodesc | shader IO descriptor
  _vs | IO abstraction for vertex shader
  _fs | IO abstraction for fragment shader

void ACG::SceneGraph::ACG::ShaderGenerator::defineIOAbstraction | ( | const DefaultIODesc * | _iodesc,
|  | bool | _vs,
|  | bool | _fs
| ) |  |

Define abstract IO names via shader defines.

Default shader inputs and outputs can be conveniently accessed via SG_INPUT_X and SG_OUTPUT_X defines without having to worry about the combinatoric problem of shader stages. For example, in a fragment-shader view-space normals can always be accessed via SG_INPUT_NORMALVS, regardless whether there is a geometry shader or not.

Parameters

  _iodesc | shader IO descriptor
  _vs | IO abstraction for vertex shader
  _fs | IO abstraction for fragment shader

void ACG::SceneGraph::ACG::ShaderGenerator::defineIOAbstraction | ( | const DefaultIODesc * | _iodesc,
|  | bool | _vs,
|  | bool | _fs
| ) |  |

Define abstract IO names via shader defines.

Default shader inputs and outputs can be conveniently accessed via SG_INPUT_X and SG_OUTPUT_X defines without having to worry about the combinatoric problem of shader stages. For example, in a fragment-shader view-space normals can always be accessed via SG_INPUT_NORMALVS, regardless whether there is a geometry shader or not.

Parameters

  _iodesc | shader IO descriptor
  _vs | IO abstraction for vertex shader
  _fs | IO abstraction for fragment shader

QString ACG::SceneGraph::ACG::ShaderGenerator::getInputName | ( | int | _id | ) | const

get variable name of input

Parameters

  _id | zero based index of input

QString ACG::SceneGraph::ACG::ShaderGenerator::getInputName | ( | int | _id | ) | const

get variable name of input

Parameters

  _id | zero based index of input

QString ACG::SceneGraph::ACG::ShaderGenerator::getInputName | ( | int | _id | ) | const

get variable name of input

Parameters

  _id | zero based index of input

QString ACG::SceneGraph::ACG::ShaderGenerator::getIOMapName | ( | int | _inId | ) | const

get corresponding output name of an input id

Parameters

  _inId | zero-based index of input id

Returns
  matching output name

QString ACG::SceneGraph::ACG::ShaderGenerator::getIOMapName | ( | int | _inId | ) | const

get corresponding output name of an input id

Parameters

  _inId | zero-based index of input id

Returns
  matching output name

QString ACG::SceneGraph::ACG::ShaderGenerator::getIOMapName | ( | int | _inId | ) | const

get corresponding output name of an input id

Parameters

  _inId | zero-based index of input id

Returns
  matching output name

QString ACG::SceneGraph::ACG::ShaderGenerator::getOutputName | ( | int | _id | ) | const

get variable name of output

Parameters

  _id | zero based index of output

QString ACG::SceneGraph::ACG::ShaderGenerator::getOutputName | ( | int | _id | ) | const

get variable name of output

Parameters

  _id | zero based index of output

QString ACG::SceneGraph::ACG::ShaderGenerator::getOutputName | ( | int | _id | ) | const

get variable name of output

Parameters

  _id | zero based index of output

bool ACG::SceneGraph::ACG::ShaderGenerator::hasDefine | ( | QString | _define | ) | const

Check for define.

Example:

hasDefine("#define SG_REQUEST_NORMAL")

bool ACG::SceneGraph::ACG::ShaderGenerator::hasDefine | ( | QString | _define | ) | const

Check for define.

Example:

hasDefine("#define SG_REQUEST_NORMAL")

bool ACG::SceneGraph::ACG::ShaderGenerator::hasDefine | ( | QString | _define | ) | const

Check for define.

Example:

hasDefine("#define SG_REQUEST_NORMAL")

void ACG::SceneGraph::ACG::ShaderGenerator::initDefaultUniforms | ( |  | ) |

Adds frequently used uniform parameters.

Adds frequently used uniform parameters like:

- world, view, projection matrices
- cam pos, view dir
- per object material names: g_cDiffuse, g_cAmbient...

void ACG::SceneGraph::ACG::ShaderGenerator::initDefaultUniforms | ( |  | ) |

Adds frequently used uniform parameters.

Adds frequently used uniform parameters like:

- world, view, projection matrices
- cam pos, view dir
- per object material names: g_cDiffuse, g_cAmbient...

void ACG::SceneGraph::ACG::ShaderGenerator::initDefaultUniforms | ( |  | ) |

Adds frequently used uniform parameters.

Adds frequently used uniform parameters like:

- world, view, projection matrices
- cam pos, view dir
- per object material names: g_cDiffuse, g_cAmbient...

void ACG::SceneGraph::ACG::ShaderGenerator::matchInputs | ( | const ShaderGenerator * | _previousShaderStage,
|  | bool | _passToNextStage,
|  | QString | _inputPrefix = `"outVertex"`,
|  | QString | _outputPrefix = `"outGeometry"`
| ) |  |

Perform name matching of outputs and inputs between two shader stages.

IO of this shader (for instance fragment-shader) and its previous shader (for instance vertex shader) require matching names. Example: The vertex shader has an output "out vec3 outVertexNormal", then this function simply adds the input "in vec3 outVertexNormal" to the current shader (either a geometry or fragment shader). If this is a geometry shader, _passToNextStage should be set to true so that "out vec3 outGeometryNormal" is also added to the outputs.

Parameters

  _previousShaderStage | shader of the previous stage, which should have all outputs setup already
  _passToNextStage | all outputs of the previous shader stage are passed to the next stage (should be false for fragment shader for instance)
  _inputPrefix | name prefix of inputs to this shader (only necessary if _passToNextStage is true)
  _outputPrefix | name prefix of outputs of this shader (only necessary if _passToNextStage is true)

void ACG::SceneGraph::ACG::ShaderGenerator::matchInputs | ( | const ShaderGenerator * | _previousShaderStage,
|  | bool | _passToNextStage,
|  | QString | _inputPrefix = `"outVertex"`,
|  | QString | _outputPrefix = `"outGeometry"`
| ) |  |

Perform name matching of outputs and inputs between two shader stages.

IO of this shader (for instance fragment-shader) and its previous shader (for instance vertex shader) require matching names. Example: The vertex shader has an output "out vec3 outVertexNormal", then this function simply adds the input "in vec3 outVertexNormal" to the current shader (either a geometry or fragment shader). If this is a geometry shader, _passToNextStage should be set to true so that "out vec3 outGeometryNormal" is also added to the outputs.

Parameters

  _previousShaderStage | shader of the previous stage, which should have all outputs setup already
  _passToNextStage | all outputs of the previous shader stage are passed to the next stage (should be false for fragment shader for instance)
  _inputPrefix | name prefix of inputs to this shader (only necessary if _passToNextStage is true)
  _outputPrefix | name prefix of outputs of this shader (only necessary if _passToNextStage is true)

void ACG::SceneGraph::ACG::ShaderGenerator::matchInputs | ( | const ShaderGenerator * | _previousShaderStage,
|  | bool | _passToNextStage,
|  | QString | _inputPrefix = `"outVertex"`,
|  | QString | _outputPrefix = `"outGeometry"`
| ) |  |

Perform name matching of outputs and inputs between two shader stages.

IO of this shader (for instance fragment-shader) and its previous shader (for instance vertex shader) require matching names. Example: The vertex shader has an output "out vec3 outVertexNormal", then this function simply adds the input "in vec3 outVertexNormal" to the current shader (either a geometry or fragment shader). If this is a geometry shader, _passToNextStage should be set to true so that "out vec3 outGeometryNormal" is also added to the outputs.

Parameters

  _previousShaderStage | shader of the previous stage, which should have all outputs setup already
  _passToNextStage | all outputs of the previous shader stage are passed to the next stage (should be false for fragment shader for instance)
  _inputPrefix | name prefix of inputs to this shader (only necessary if _passToNextStage is true)
  _outputPrefix | name prefix of outputs of this shader (only necessary if _passToNextStage is true)

void ACG::SceneGraph::ACG::ShaderGenerator::saveToFile | ( | const char * | _fileName | ) |

Save generated shader code to text file.

Parameters

  _fileName | Where to save

void ACG::SceneGraph::ACG::ShaderGenerator::saveToFile | ( | const char * | _fileName | ) |

Save generated shader code to text file.

Parameters

  _fileName | Where to save

void ACG::SceneGraph::ACG::ShaderGenerator::saveToFile | ( | const char * | _fileName | ) |

Save generated shader code to text file.

Parameters

  _fileName | Where to save

The documentation for this class was generated from the following file:

- ACG/Scenegraph/MeshNode2T.cc