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

Code reflection analyzer. More...

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

Inheritance diagram for CeresEngine::ShaderCompiler::ReflectionAnalyzer:
CeresEngine::ShaderCompiler::Visitor

Public Member Functions

 ReflectionAnalyzer (Log *log)
 
void reflect (Program &program, const ShaderTarget shaderTarget, Reflection::ReflectionData &reflectionData, bool enableWarnings)
 

Private Member Functions

void warning (const String &msg, const AST *ast=nullptr)
 
Int32 getBindingPoint (const Vector< RegisterPtr > &slotRegisters) const
 
Int32 evaluateConstExpressionInt (Expression &expression)
 
float evaluateConstExpressionFloat (Expression &expression)
 
void visitProgram (Program *ast, void *args) override
 
void visitSamplerDeclaration (SamplerDeclaration *ast, void *args) override
 
void visitStructDeclaration (StructDeclaration *ast, void *args) override
 
void visitFunctionDeclaration (FunctionDeclaration *ast, void *args) override
 
void visitUniformBufferDeclaration (UniformBufferDeclaration *ast, void *args) override
 
void visitBufferDeclarationStatement (BufferDeclarationStatement *ast, void *args) override
 
void visitVarDeclaration (VarDeclaration *ast, void *args) override
 
void reflectSamplerValue (const SamplerValue *ast, Reflection::SamplerStateDesc &desc)
 
void reflectSamplerValueFilter (const String &value, Reflection::Filter &filter, const AST *ast=nullptr)
 
void reflectSamplerValueTextureAddressMode (const String &value, Reflection::TextureAddressMode &addressMode, const AST *ast=nullptr)
 
void reflectSamplerValueComparisonFunc (const String &value, Reflection::ComparisonFunc &comparisonFunc, const AST *ast=nullptr)
 
void reflectAttributes (const Vector< AttributePtr > &attribs)
 
void reflectAttributesNumThreads (const Attribute *ast)
 
void reflectField (VarDeclaration *ast, Reflection::Field &field, UInt32 &accumSize, UInt32 &accumPadding)
 
void reflectFieldType (Reflection::Field &field, const TypeDenoter &typeDen)
 
Int32 findRecordIndex (const StructDeclaration *structDeclaration) const
 
- Private Member Functions inherited from CeresEngine::ShaderCompiler::Visitor
virtual ~Visitor ()=default
 
virtual void visitCodeBlock (CodeBlock *ast, void *args)
 
virtual void visitAttribute (Attribute *ast, void *args)
 
virtual void visitSwitchCase (SwitchCase *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 visitArrayDimension (ArrayDimension *ast, void *args)
 
virtual void visitTypeSpecifier (TypeSpecifier *ast, void *args)
 
virtual void visitBufferDeclaration (BufferDeclaration *ast, void *args)
 
virtual void visitAliasDeclaration (AliasDeclaration *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 visitForLoopStatement (ForLoopStatement *ast, void *args)
 
virtual void visitWhileLoopStatement (WhileLoopStatement *ast, void *args)
 
virtual void visitDoWhileLoopStatement (DoWhileLoopStatement *ast, void *args)
 
virtual void visitIfStatement (IfStatement *ast, void *args)
 
virtual void visitElseStatement (ElseStatement *ast, void *args)
 
virtual void visitSwitchStatement (SwitchStatement *ast, void *args)
 
virtual void visitExpressionStatement (ExpressionStatement *ast, void *args)
 
virtual void visitReturnStatement (ReturnStatement *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 visitSequenceExpression (SequenceExpression *ast, void *args)
 
virtual void visitLiteralExpression (LiteralExpression *ast, void *args)
 
virtual void visitTypeSpecifierExpression (TypeSpecifierExpression *ast, void *args)
 
virtual void visitTernaryExpression (TernaryExpression *ast, void *args)
 
virtual void visitBinaryExpression (BinaryExpression *ast, void *args)
 
virtual void visitUnaryExpression (UnaryExpression *ast, void *args)
 
virtual void visitPostUnaryExpression (PostUnaryExpression *ast, void *args)
 
virtual void visitCallExpression (CallExpression *ast, void *args)
 
virtual void visitBracketExpression (BracketExpression *ast, void *args)
 
virtual void visitAssignExpression (AssignExpression *ast, void *args)
 
virtual void visitObjectExpression (ObjectExpression *ast, void *args)
 
virtual void visitArrayExpression (ArrayExpression *ast, void *args)
 
virtual void visitCastExpression (CastExpression *ast, void *args)
 
virtual void visitInitializerExpression (InitializerExpression *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)
 

Private Attributes

ReportHandler mReportHandler
 
ShaderTarget mShaderTarget = ShaderTarget::VertexShader
 
ProgrammProgram = nullptr
 
Reflection::ReflectionDatamData = nullptr
 
bool mEnableWarnings = false
 
Map< const StructDeclaration *, std::size_t > mRecordIndicesMap
 

Detailed Description

Code reflection analyzer.

This class collects all meta information that can be optionally retrieved.

Constructor & Destructor Documentation

◆ ReflectionAnalyzer()

CeresEngine::ShaderCompiler::ReflectionAnalyzer::ReflectionAnalyzer ( Log log)

Member Function Documentation

◆ evaluateConstExpressionFloat()

float CeresEngine::ShaderCompiler::ReflectionAnalyzer::evaluateConstExpressionFloat ( Expression expression)
private

◆ evaluateConstExpressionInt()

Int32 CeresEngine::ShaderCompiler::ReflectionAnalyzer::evaluateConstExpressionInt ( Expression expression)
private

◆ findRecordIndex()

Int32 CeresEngine::ShaderCompiler::ReflectionAnalyzer::findRecordIndex ( const StructDeclaration structDeclaration) const
private

◆ getBindingPoint()

Int32 CeresEngine::ShaderCompiler::ReflectionAnalyzer::getBindingPoint ( const Vector< RegisterPtr > &  slotRegisters) const
private

◆ reflect()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflect ( Program program,
const ShaderTarget  shaderTarget,
Reflection::ReflectionData reflectionData,
bool  enableWarnings 
)

◆ reflectAttributes()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectAttributes ( const Vector< AttributePtr > &  attribs)
private

◆ reflectAttributesNumThreads()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectAttributesNumThreads ( const Attribute ast)
private

◆ reflectField()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectField ( VarDeclaration ast,
Reflection::Field field,
UInt32 accumSize,
UInt32 accumPadding 
)
private

◆ reflectFieldType()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectFieldType ( Reflection::Field field,
const TypeDenoter typeDen 
)
private

◆ reflectSamplerValue()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectSamplerValue ( const SamplerValue ast,
Reflection::SamplerStateDesc desc 
)
private

◆ reflectSamplerValueComparisonFunc()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectSamplerValueComparisonFunc ( const String value,
Reflection::ComparisonFunc comparisonFunc,
const AST ast = nullptr 
)
private

◆ reflectSamplerValueFilter()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectSamplerValueFilter ( const String value,
Reflection::Filter filter,
const AST ast = nullptr 
)
private

◆ reflectSamplerValueTextureAddressMode()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::reflectSamplerValueTextureAddressMode ( const String value,
Reflection::TextureAddressMode addressMode,
const AST ast = nullptr 
)
private

◆ visitBufferDeclarationStatement()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::visitBufferDeclarationStatement ( BufferDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitFunctionDeclaration()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::visitFunctionDeclaration ( FunctionDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitProgram()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::visitProgram ( Program ast,
void args 
)
overrideprivatevirtual

◆ visitSamplerDeclaration()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::visitSamplerDeclaration ( SamplerDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitStructDeclaration()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::visitStructDeclaration ( StructDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitUniformBufferDeclaration()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::visitUniformBufferDeclaration ( UniformBufferDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitVarDeclaration()

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

◆ warning()

void CeresEngine::ShaderCompiler::ReflectionAnalyzer::warning ( const String msg,
const AST ast = nullptr 
)
private

Member Data Documentation

◆ mData

Reflection::ReflectionData* CeresEngine::ShaderCompiler::ReflectionAnalyzer::mData = nullptr
private

◆ mEnableWarnings

bool CeresEngine::ShaderCompiler::ReflectionAnalyzer::mEnableWarnings = false
private

◆ mProgram

Program* CeresEngine::ShaderCompiler::ReflectionAnalyzer::mProgram = nullptr
private

◆ mRecordIndicesMap

Map<const StructDeclaration*, std::size_t> CeresEngine::ShaderCompiler::ReflectionAnalyzer::mRecordIndicesMap
private

◆ mReportHandler

ReportHandler CeresEngine::ShaderCompiler::ReflectionAnalyzer::mReportHandler
private

◆ mShaderTarget

ShaderTarget CeresEngine::ShaderCompiler::ReflectionAnalyzer::mShaderTarget = ShaderTarget::VertexShader
private

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