CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ShaderCompiler::Optimizer Class Reference

#include <CeresEngine/Material/ShaderCompiler/AST/Visitor/Optimizer.hpp>

Inheritance diagram for CeresEngine::ShaderCompiler::Optimizer:
CeresEngine::ShaderCompiler::Visitor

Public Member Functions

void optimize (Program &program)
 

Private Member Functions

void optimizeStatementList (Vector< StatementPtr > &statements)
 
void optimizeExpression (ExpressionPtr &expression)
 
bool canRemoveStatement (const Statement &ast) const
 
void visitCodeBlock (CodeBlock *ast, void *args) override
 
void visitSwitchCase (SwitchCase *ast, void *args) override
 
void visitArrayDimension (ArrayDimension *ast, void *args) override
 
void visitVarDeclaration (VarDeclaration *ast, void *args) override
 
void visitForLoopStatement (ForLoopStatement *ast, void *args) override
 
void visitWhileLoopStatement (WhileLoopStatement *ast, void *args) override
 
void visitDoWhileLoopStatement (DoWhileLoopStatement *ast, void *args) override
 
void visitIfStatement (IfStatement *ast, void *args) override
 
void visitElseStatement (ElseStatement *ast, void *args) override
 
void visitSwitchStatement (SwitchStatement *ast, void *args) override
 
void visitExpressionStatement (ExpressionStatement *ast, void *args) override
 
void visitReturnStatement (ReturnStatement *ast, void *args) override
 
void visitSequenceExpression (SequenceExpression *ast, void *args) override
 
void visitTernaryExpression (TernaryExpression *ast, void *args) override
 
void visitBinaryExpression (BinaryExpression *ast, void *args) override
 
void visitUnaryExpression (UnaryExpression *ast, void *args) override
 
void visitPostUnaryExpression (PostUnaryExpression *ast, void *args) override
 
void visitBracketExpression (BracketExpression *ast, void *args) override
 
void visitObjectExpression (ObjectExpression *ast, void *args) override
 
void visitAssignExpression (AssignExpression *ast, void *args) override
 
void visitArrayExpression (ArrayExpression *ast, void *args) override
 
void visitCastExpression (CastExpression *ast, void *args) override
 
void visitInitializerExpression (InitializerExpression *ast, void *args) override
 
- Private Member Functions inherited from CeresEngine::ShaderCompiler::Visitor
virtual ~Visitor ()=default
 
virtual void visitProgram (Program *ast, void *args)
 
virtual void visitAttribute (Attribute *ast, void *args)
 
virtual void visitSamplerValue (SamplerValue *ast, void *args)
 
virtual void visitRegister (Register *ast, void *args)
 
virtual void visitPackOffset (PackOffset *ast, void *args)
 
virtual void visitTypeSpecifier (TypeSpecifier *ast, void *args)
 
virtual void visitBufferDeclaration (BufferDeclaration *ast, void *args)
 
virtual void visitSamplerDeclaration (SamplerDeclaration *ast, void *args)
 
virtual void visitStructDeclaration (StructDeclaration *ast, void *args)
 
virtual void visitAliasDeclaration (AliasDeclaration *ast, void *args)
 
virtual void visitFunctionDeclaration (FunctionDeclaration *ast, void *args)
 
virtual void visitUniformBufferDeclaration (UniformBufferDeclaration *ast, void *args)
 
virtual void visitBufferDeclarationStatement (BufferDeclarationStatement *ast, void *args)
 
virtual void visitSamplerDeclarationStatement (SamplerDeclarationStatement *ast, void *args)
 
virtual void visitVarDeclarationStatement (VarDeclarationStatement *ast, void *args)
 
virtual void visitAliasDeclarationStatement (AliasDeclarationStatement *ast, void *args)
 
virtual void visitBasicDeclarationStatement (BasicDeclarationStatement *ast, void *args)
 
virtual void visitNullStatement (NullStatement *ast, void *args)
 
virtual void visitCodeBlockStatement (CodeBlockStatement *ast, void *args)
 
virtual void visitCtrlTransferStatement (CtrlTransferStatement *ast, void *args)
 
virtual void visitLayoutStatement (LayoutStatement *ast, void *args)
 
virtual void visitNullExpression (NullExpression *ast, void *args)
 
virtual void visitLiteralExpression (LiteralExpression *ast, void *args)
 
virtual void visitTypeSpecifierExpression (TypeSpecifierExpression *ast, void *args)
 
virtual void visitCallExpression (CallExpression *ast, void *args)
 
template<typename T >
void visit (const T &ast, void *args=nullptr)
 
template<typename T >
void visit (const Vector< T > &astList, void *args=nullptr)
 

Member Function Documentation

◆ canRemoveStatement()

bool CeresEngine::ShaderCompiler::Optimizer::canRemoveStatement ( const Statement ast) const
private

◆ optimize()

void CeresEngine::ShaderCompiler::Optimizer::optimize ( Program program)

◆ optimizeExpression()

void CeresEngine::ShaderCompiler::Optimizer::optimizeExpression ( ExpressionPtr expression)
private

◆ optimizeStatementList()

void CeresEngine::ShaderCompiler::Optimizer::optimizeStatementList ( Vector< StatementPtr > &  statements)
private

◆ visitArrayDimension()

void CeresEngine::ShaderCompiler::Optimizer::visitArrayDimension ( ArrayDimension ast,
void args 
)
overrideprivatevirtual

◆ visitArrayExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitArrayExpression ( ArrayExpression ast,
void args 
)
overrideprivatevirtual

◆ visitAssignExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitAssignExpression ( AssignExpression ast,
void args 
)
overrideprivatevirtual

◆ visitBinaryExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitBinaryExpression ( BinaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitBracketExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitBracketExpression ( BracketExpression ast,
void args 
)
overrideprivatevirtual

◆ visitCastExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitCastExpression ( CastExpression ast,
void args 
)
overrideprivatevirtual

◆ visitCodeBlock()

void CeresEngine::ShaderCompiler::Optimizer::visitCodeBlock ( CodeBlock ast,
void args 
)
overrideprivatevirtual

◆ visitDoWhileLoopStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitDoWhileLoopStatement ( DoWhileLoopStatement ast,
void args 
)
overrideprivatevirtual

◆ visitElseStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitElseStatement ( ElseStatement ast,
void args 
)
overrideprivatevirtual

◆ visitExpressionStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitExpressionStatement ( ExpressionStatement ast,
void args 
)
overrideprivatevirtual

◆ visitForLoopStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitForLoopStatement ( ForLoopStatement ast,
void args 
)
overrideprivatevirtual

◆ visitIfStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitIfStatement ( IfStatement ast,
void args 
)
overrideprivatevirtual

◆ visitInitializerExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitInitializerExpression ( InitializerExpression ast,
void args 
)
overrideprivatevirtual

◆ visitObjectExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitObjectExpression ( ObjectExpression ast,
void args 
)
overrideprivatevirtual

◆ visitPostUnaryExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitPostUnaryExpression ( PostUnaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitReturnStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitReturnStatement ( ReturnStatement ast,
void args 
)
overrideprivatevirtual

◆ visitSequenceExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitSequenceExpression ( SequenceExpression ast,
void args 
)
overrideprivatevirtual

◆ visitSwitchCase()

void CeresEngine::ShaderCompiler::Optimizer::visitSwitchCase ( SwitchCase ast,
void args 
)
overrideprivatevirtual

◆ visitSwitchStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitSwitchStatement ( SwitchStatement ast,
void args 
)
overrideprivatevirtual

◆ visitTernaryExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitTernaryExpression ( TernaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitUnaryExpression()

void CeresEngine::ShaderCompiler::Optimizer::visitUnaryExpression ( UnaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitVarDeclaration()

void CeresEngine::ShaderCompiler::Optimizer::visitVarDeclaration ( VarDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitWhileLoopStatement()

void CeresEngine::ShaderCompiler::Optimizer::visitWhileLoopStatement ( WhileLoopStatement ast,
void args 
)
overrideprivatevirtual

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