HDK
|
#include <GenContext.h>
Public Member Functions | |
GenContext (ShaderGeneratorPtr sg) | |
Constructor. More... | |
ShaderGenerator & | getShaderGenerator () |
Return shader generatior. More... | |
GenOptions & | getOptions () |
Return shader generation options. More... | |
const GenOptions & | getOptions () const |
Return shader generation options. More... | |
void | registerSourceCodeSearchPath (const FilePath &path) |
void | registerSourceCodeSearchPath (const FileSearchPath &path) |
FilePath | resolveSourceFile (const FilePath &filename, const FilePath &localPath) const |
void | addReservedWords (const StringSet &names) |
const StringSet & | getReservedWords () const |
void | addNodeImplementation (const string &name, ShaderNodeImplPtr impl) |
Cache a shader node implementation. More... | |
ShaderNodeImplPtr | findNodeImplementation (const string &name) const |
void | getNodeImplementationNames (StringSet &names) |
Get the names of all cached node implementations. More... | |
void | clearNodeImplementations () |
Clear all cached shader node implementation. More... | |
void | pushClosureContext (ClosureContext *cct) |
Push a new closure context to use for closure evaluation. More... | |
void | popClosureContext () |
Pop the current closure context. More... | |
ClosureContext * | getClosureContext () |
Return the current closure context. More... | |
void | pushParentNode (ConstNodePtr node) |
Push a parent node onto the stack. More... | |
void | popParentNode () |
Pop the current parent node from the stack. More... | |
const vector< ConstNodePtr > & | getParentNodes () |
Return the current stack of parent nodes. More... | |
void | pushUserData (const string &name, GenUserDataPtr data) |
void | popUserData (const string &name) |
Remove user data from the context. More... | |
void | clearUserData () |
Clear all user data from the context. More... | |
template<class T > | |
std::shared_ptr< T > | getUserData (const string &name) |
void | addInputSuffix (const ShaderInput *input, const string &suffix) |
void | removeInputSuffix (const ShaderInput *input) |
void | getInputSuffix (const ShaderInput *input, string &suffix) const |
void | addOutputSuffix (const ShaderOutput *output, const string &suffix) |
void | removeOutputSuffix (const ShaderOutput *output) |
void | getOutputSuffix (const ShaderOutput *output, string &suffix) const |
void | setApplicationVariableHandler (ApplicationVariableHandler handler) |
Set handler for application variables. More... | |
ApplicationVariableHandler | getApplicationVariableHandler () const |
Get handler for application variables. More... | |
Protected Member Functions | |
GenContext ()=delete | |
Protected Attributes | |
ShaderGeneratorPtr | _sg |
GenOptions | _options |
FileSearchPath | _sourceCodeSearchPath |
StringSet | _reservedWords |
std::unordered_map< string, ShaderNodeImplPtr > | _nodeImpls |
std::unordered_map< string, vector< GenUserDataPtr > > | _userData |
std::unordered_map< const ShaderInput *, string > | _inputSuffix |
std::unordered_map< const ShaderOutput *, string > | _outputSuffix |
vector< ClosureContext * > | _closureContexts |
vector< ConstNodePtr > | _parentNodes |
ApplicationVariableHandler | _applicationVariableHandler |
A context class for shader generation. Used for thread local storage of data needed during shader generation.
Definition at line 30 of file GenContext.h.
GenContext::GenContext | ( | ShaderGeneratorPtr | sg | ) |
Constructor.
|
protecteddelete |
void GenContext::addInputSuffix | ( | const ShaderInput * | input, |
const string & | suffix | ||
) |
Add an input suffix to be used for the input in this context.
input | Node input |
suffix | Suffix string |
void GenContext::addNodeImplementation | ( | const string & | name, |
ShaderNodeImplPtr | impl | ||
) |
Cache a shader node implementation.
void GenContext::addOutputSuffix | ( | const ShaderOutput * | output, |
const string & | suffix | ||
) |
Add an output suffix to be used for the output in this context.
output | Node output |
suffix | Suffix string |
Add reserved words that should not be used as identifiers during code generation.
Definition at line 82 of file GenContext.h.
void GenContext::clearNodeImplementations | ( | ) |
Clear all cached shader node implementation.
void GenContext::clearUserData | ( | ) |
Clear all user data from the context.
ShaderNodeImplPtr GenContext::findNodeImplementation | ( | const string & | name | ) | const |
Find and return a cached shader node implementation, or return nullptr if no implementation is found.
|
inline |
Get handler for application variables.
Definition at line 218 of file GenContext.h.
|
inline |
Return the current closure context.
Definition at line 123 of file GenContext.h.
void GenContext::getInputSuffix | ( | const ShaderInput * | input, |
string & | suffix | ||
) | const |
Get an input suffix to be used for the input in this context.
input | Node input |
suffix | Suffix string returned. Is empty if not found. |
Get the names of all cached node implementations.
|
inline |
Return shader generation options.
Definition at line 43 of file GenContext.h.
|
inline |
Return shader generation options.
Definition at line 49 of file GenContext.h.
void GenContext::getOutputSuffix | ( | const ShaderOutput * | output, |
string & | suffix | ||
) | const |
Get an output suffix to be used for the output in this context.
output | Node output |
suffix | Suffix string returned. Is empty if not found. |
|
inline |
Return the current stack of parent nodes.
Definition at line 141 of file GenContext.h.
|
inline |
Return the set of reserved words that should not be used as identifiers during code generation.
Definition at line 89 of file GenContext.h.
|
inline |
Return shader generatior.
Definition at line 37 of file GenContext.h.
Return user data with given name, or nullptr if no data is found.
Definition at line 177 of file GenContext.h.
|
inline |
Pop the current closure context.
Definition at line 114 of file GenContext.h.
|
inline |
Pop the current parent node from the stack.
Definition at line 135 of file GenContext.h.
Remove user data from the context.
Definition at line 162 of file GenContext.h.
|
inline |
Push a new closure context to use for closure evaluation.
Definition at line 108 of file GenContext.h.
|
inline |
Push a parent node onto the stack.
Definition at line 129 of file GenContext.h.
|
inline |
Add user data to the context to make it available during shader generator.
Definition at line 148 of file GenContext.h.
Register a user search path for finding source code during code generation.
Definition at line 56 of file GenContext.h.
|
inline |
Register a user search path for finding source code during code generation.
Definition at line 63 of file GenContext.h.
void GenContext::removeInputSuffix | ( | const ShaderInput * | input | ) |
Remove an input suffix to be used for the input in this context.
input | Node input |
void GenContext::removeOutputSuffix | ( | const ShaderOutput * | output | ) |
Remove an output suffix to be used for the output in this context.
output | Node output |
|
inline |
Resolve a source code filename, first checking the given local path then checking any file paths registered by the user.
Definition at line 70 of file GenContext.h.
|
inline |
Set handler for application variables.
Definition at line 212 of file GenContext.h.
|
protected |
Definition at line 239 of file GenContext.h.
|
protected |
Definition at line 236 of file GenContext.h.
|
protected |
Definition at line 233 of file GenContext.h.
|
protected |
Definition at line 231 of file GenContext.h.
|
protected |
Definition at line 227 of file GenContext.h.
|
protected |
Definition at line 234 of file GenContext.h.
|
protected |
Definition at line 237 of file GenContext.h.
|
protected |
Definition at line 229 of file GenContext.h.
|
protected |
Definition at line 226 of file GenContext.h.
|
protected |
Definition at line 228 of file GenContext.h.
|
protected |
Definition at line 232 of file GenContext.h.