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

#include <CeresEngine/Material/ShaderCompiler/Frontend/HLSL/HLSLAnalyzer.hpp>

Inheritance diagram for CeresEngine::ShaderCompiler::HLSLAnalyzer:
CeresEngine::ShaderCompiler::Analyzer CeresEngine::ShaderCompiler::VisitorTracker CeresEngine::ShaderCompiler::Visitor

Classes

struct  PrefixArgs
 

Public Member Functions

 HLSLAnalyzer (Log *log=nullptr)
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::Analyzer
 Analyzer (Log *log=nullptr)
 
bool decorateAST (Program &program, const ShaderInput &inputDesc, const ShaderOutput &outputDesc)
 

Private Types

using OnOverrideProc = ASTSymbolTable::OnOverrideProc
 
using OnValidAttributeValueProc = UniqueFunction< bool(const AttributeValue) const >
 
using OnAssignTypeDenoterProc = UniqueFunction< void(const TypeDenoterPtr &) const >
 

Private Member Functions

void decorateASTPrimary (Program &program, const ShaderInput &inputDesc, const ShaderOutput &outputDesc) override
 
void errorIfAttributeNotFound (bool found, const String &attribDesc)
 
bool isD3D9ShaderModel () const
 
void visitProgram (Program *ast, void *args) override
 
void visitCodeBlock (CodeBlock *ast, void *args) override
 
void visitAttribute (Attribute *ast, void *args) override
 
void visitArrayDimension (ArrayDimension *ast, void *args) override
 
void visitTypeSpecifier (TypeSpecifier *ast, void *args) override
 
void visitVarDeclaration (VarDeclaration *ast, void *args) override
 
void visitBufferDeclaration (BufferDeclaration *ast, void *args) override
 
void visitSamplerDeclaration (SamplerDeclaration *ast, void *args) override
 
void visitStructDeclaration (StructDeclaration *ast, void *args) override
 
void visitAliasDeclaration (AliasDeclaration *ast, void *args) override
 
void visitFunctionDeclaration (FunctionDeclaration *ast, void *args) override
 
void visitBufferDeclarationStatement (BufferDeclarationStatement *ast, void *args) override
 
void visitUniformBufferDeclaration (UniformBufferDeclaration *ast, void *args) override
 
void visitVarDeclarationStatement (VarDeclarationStatement *ast, void *args) override
 
void visitBasicDeclarationStatement (BasicDeclarationStatement *ast, void *args) override
 
void visitCodeBlockStatement (CodeBlockStatement *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 visitUnaryExpression (UnaryExpression *ast, void *args) override
 
void visitPostUnaryExpression (PostUnaryExpression *ast, void *args) override
 
void visitCallExpression (CallExpression *ast, void *args) override
 
void visitAssignExpression (AssignExpression *ast, void *args) override
 
void visitObjectExpression (ObjectExpression *ast, void *args) override
 
void visitArrayExpression (ArrayExpression *ast, void *args) override
 
void analyzeVarDeclaration (VarDeclaration *varDeclaration)
 
void analyzeVarDeclarationLocal (VarDeclaration *varDeclaration, bool registerVarIdent=true)
 
void analyzeVarDeclarationStaticMember (VarDeclaration *varDeclaration)
 
void analyzeCallExpression (CallExpression *callExpression)
 
void analyzeCallExpressionPrimary (CallExpression *callExpression, const TypeDenoter *prefixTypeDenoter=nullptr)
 
void analyzeCallExpressionFunction (CallExpression *callExpression, bool isStatic=false, const Expression *prefixExpression=nullptr, const TypeDenoter *prefixTypeDenoter=nullptr)
 
void analyzeCallExpressionIntrinsic (CallExpression *callExpression, const HLSLIntrinsicEntry &intr, bool isStatic=false, const TypeDenoter *prefixTypeDenoter=nullptr)
 
void analyzeCallExpressionIntrinsicPrimary (CallExpression *callExpression, const HLSLIntrinsicEntry &intr)
 
void analyzeCallExpressionIntrinsicFromBufferType (const CallExpression *callExpression, const BufferType bufferType)
 
void analyzeIntrinsicWrapperInlining (CallExpression *callExpression)
 
void analyzeObjectExpression (ObjectExpression *expression, PrefixArgs *args)
 
void analyzeObjectExpressionVarDeclarationFromStruct (ObjectExpression *expression, StructDeclaration *baseStructDeclaration, const StructTypeDenoter &structTypeDen)
 
void analyzeObjectExpressionBaseStructDeclarationFromStruct (ObjectExpression *expression, PrefixArgs &outputArgs, const StructTypeDenoter &structTypeDen)
 
bool analyzeStaticAccessExpression (const Expression *prefixExpression, bool isStatic, const AST *ast=nullptr)
 
bool analyzeStaticTypeSpecifier (const TypeSpecifier *typeSpecifier, const String &ident, const Expression *expression, bool isStatic)
 
void analyzeLValueExpression (Expression *expression, const AST *ast=nullptr, VarDeclaration *param=nullptr)
 
void analyzeLValueExpressionObject (ObjectExpression *objectExpression, const AST *ast=nullptr, VarDeclaration *param=nullptr)
 
void analyzeArrayExpression (ArrayExpression *expression)
 
void analyzeEntryPoint (FunctionDeclaration *funcDeclaration)
 
void analyzeEntryPointInputOutput (FunctionDeclaration *funcDeclaration)
 
void analyzeEntryPointParameter (FunctionDeclaration *funcDeclaration, const VarDeclarationStatement *param)
 
void analyzeEntryPointParameterInOut (FunctionDeclaration *funcDeclaration, VarDeclaration *varDeclaration, bool input, TypeDenoterPtr varTypeDen=nullptr)
 
void analyzeEntryPointParameterInOutVariable (FunctionDeclaration *funcDeclaration, VarDeclaration *varDeclaration, bool input)
 
void analyzeEntryPointParameterInOutStruct (FunctionDeclaration *funcDeclaration, StructDeclaration *structDeclaration, bool input)
 
void analyzeEntryPointParameterInOutBuffer (FunctionDeclaration *funcDeclaration, VarDeclaration *varDeclaration, const BufferTypeDenoter *bufferTypeDen, bool input)
 
void analyzeEntryPointAttributes (const Vector< AttributePtr > &attribs)
 
void analyzeEntryPointAttributesTessControlShader (const Vector< AttributePtr > &attribs)
 
void analyzeEntryPointAttributesTessEvaluationShader (const Vector< AttributePtr > &attribs)
 
void analyzeEntryPointAttributesGeometryShader (const Vector< AttributePtr > &attribs)
 
void analyzeEntryPointAttributesFragmentShader (const Vector< AttributePtr > &attribs)
 
void analyzeEntryPointAttributesComputeShader (const Vector< AttributePtr > &attribs)
 
void analyzeEntryPointSemantics (FunctionDeclaration *funcDeclaration, const Vector< Semantic > &inSemantics, const Vector< Semantic > &outSemantics)
 
void analyzeEntryPointOutput (Expression *expression)
 
void analyzeSecondaryEntryPoint (FunctionDeclaration *funcDeclaration, bool isPatchConstantFunc=false)
 
void analyzeSecondaryEntryPointAttributes (const Vector< AttributePtr > &attribs)
 
void analyzeSecondaryEntryPointAttributesTessEvaluationShader (const Vector< AttributePtr > &attribs)
 
bool analyzeNumArgsAttribute (const Attribute *attrib, std::size_t minNumArgs, std::size_t maxNumArgs, bool required)
 
bool analyzeNumArgsAttribute (const Attribute *attrib, std::size_t expectedNumArgs, bool required=true)
 
void analyzeAttributeDomain (const Attribute *attrib, bool required=true)
 
void analyzeAttributeOutputTopology (const Attribute *attrib, bool required=true)
 
void analyzeAttributePartitioning (const Attribute *attrib, bool required=true)
 
void analyzeAttributeOutputControlPoints (const Attribute *attrib)
 
void analyzeAttributePatchConstantFunc (const Attribute *attrib)
 
void analyzeAttributeMaxVertexCount (const Attribute *attrib)
 
void analyzeAttributeNumThreads (const Attribute *attrib)
 
void analyzeAttributeNumThreadsArgument (Expression *expression, UInt32 &value)
 
void analyzeAttributeValue (Expression *argExpression, AttributeValue &value, const OnValidAttributeValueProc &expectedValueFunc, const String &expectationDesc, bool required=true)
 
bool analyzeAttributeValuePrimary (Expression *argExpression, AttributeValue &value, const OnValidAttributeValueProc &expectedValueFunc, String &literalValue)
 
void analyzeSemantic (IndexedSemantic &semantic)
 
void analyzeSemanticSM3 (IndexedSemantic &semantic, bool input)
 
void analyzeSemanticSM3Remaining ()
 
void analyzeSemanticVarDeclaration (IndexedSemantic &semantic, VarDeclaration *varDeclaration)
 
void analyzeSemanticFunctionReturn (IndexedSemantic &semantic)
 
void analyzeExtAttributes (const Vector< AttributePtr > &attribs, const TypeDenoterPtr &typeDen)
 
void analyzeAttributeLayout (const Attribute *attrib, const TypeDenoterPtr &typeDen)
 
void analyzeAttributeSpace (const Attribute *attrib, const TypeDenoterPtr &typeDen)
 
bool analyzeAttributeSpaceIdent (const Attribute *attrib, std::size_t argIndex, String &ident)
 
void analyzeVectorSpaceAssign (TypedAST *lhs, const TypeDenoter &rhsTypeDen, const OnAssignTypeDenoterProc &assignTypeDenProc=nullptr, bool swapAssignOrder=false)
 
void analyzeArrayDimensionList (const Vector< ArrayDimensionPtr > &arrayDimensions)
 
void analyzeParameter (VarDeclarationStatement *param)
 

Private Attributes

ProgrammProgram = nullptr
 
String mEntryPoint
 
String mSecondaryEntryPoint
 
bool mSecondaryEntryPointFound = false
 
ShaderTarget mShaderTarget = ShaderTarget::VertexShader
 
InputShaderVersion mVersionIn = InputShaderVersion::HLSL5
 
ShaderVersion mShaderModel = {5, 0}
 
bool mPreferWrappers = false
 
Set< VarDeclaration * > mVarDeclarationSM3Semantics
 
RawFlags mExtensions
 

Additional Inherited Members

- Protected Types inherited from CeresEngine::ShaderCompiler::Analyzer
using OnOverrideProc = ASTSymbolTable::OnOverrideProc
 
- Protected Member Functions inherited from CeresEngine::ShaderCompiler::Analyzer
void submitReport (bool isError, const String &msg, const AST *ast=nullptr, const Vector< const AST * > &astAppendices={})
 
void error (const String &msg, const AST *ast=nullptr, const Vector< const AST * > &astAppendices={})
 
void errorUndeclaredIdent (const String &ident, const AST *ast=nullptr)
 
void errorUndeclaredIdent (const String &ident, const String &contextName, const AST *ast=nullptr)
 
void errorUndeclaredIdent (const String &ident, const String &contextName, const String &similarIdent, const AST *ast=nullptr)
 
void errorInternal (const String &msg, const AST *ast=nullptr)
 
void warning (const String &msg, const AST *ast=nullptr)
 
void warningOnNullStatement (const StatementPtr &ast, const String &statementTypeName)
 
ReportHandlergetReportHandler ()
 
bool isWarningEnabled (UInt32 flags) const
 
void openScope ()
 
void closeScope ()
 
void register_ (const String &ident, AST *ast)
 
ASTfetch (const String &ident, const AST *ast=nullptr)
 
ASTfetchFromCurrentScopeOrNull (const String &ident) const
 
DeclarationfetchDeclaration (const String &ident, const AST *ast=nullptr)
 
DeclarationfetchType (const String &ident, const AST *ast=nullptr)
 
VarDeclarationfetchVarDeclaration (const String &ident, const AST *ast=nullptr)
 
FunctionDeclarationfetchFunctionDeclaration (const String &ident, const Vector< ExpressionPtr > &args, const AST *ast=nullptr)
 
FunctionDeclarationfetchFunctionDeclaration (const String &ident, const AST *ast=nullptr)
 
VarDeclarationfetchVarDeclarationFromStruct (const StructTypeDenoter &structTypeDenoter, const String &ident, const AST *ast=nullptr)
 
FunctionDeclarationfetchFunctionDeclarationFromStruct (const StructTypeDenoter &structTypeDenoter, const String &ident, const Vector< ExpressionPtr > &args, const AST *ast=nullptr)
 
StructDeclarationfetchStructDeclarationFromIdent (const String &ident, const AST *ast=nullptr)
 
StructDeclarationfetchStructDeclarationFromTypeDenoter (const TypeDenoter &typeDenoter)
 
StructDeclarationfindCompatibleStructDeclaration (const StructDeclaration &rhs)
 
bool isInsideGlobalScope () const
 
void analyzeTypeDenoter (TypeDenoterPtr &typeDenoter, const AST *ast)
 
void analyzeBufferTypeDenoter (BufferTypeDenoter &bufferTypeDen, const AST *ast)
 
void analyzeStructTypeDenoter (StructTypeDenoter &structTypeDen, const AST *ast)
 
void analyzeAliasTypeDenoter (TypeDenoterPtr &typeDenoter, const AST *ast)
 
void analyzeTypeSpecifier (TypeSpecifier *typeSpecifier)
 
void analyzeTypeSpecifierForParameter (const TypeSpecifier *typeSpecifier)
 
void analyzeFunctionEndOfScopes (const FunctionDeclaration &funcDeclaration)
 
void analyzeFunctionControlPath (FunctionDeclaration &funcDeclaration)
 
TypeDenoterPtr getTypeDenoterFrom (TypedAST *ast, const TypeDenoter *expectedTypeDenoter=nullptr)
 
void validateTypeCast (const TypeDenoter &sourceTypeDen, const TypeDenoter &destTypeDen, const String &contextDesc, const AST *ast=nullptr)
 
void validateTypeCastFrom (TypedAST *sourceAST, TypedAST *destAST, const String &contextDesc)
 
void analyzeConditionalExpression (Expression *expression)
 
Variant evaluateConstExpression (Expression &expression)
 
Variant evaluateConstExpressionObject (const ObjectExpression &expression)
 
Variant evaluateOrDefault (Expression &expression, const Variant &defaultValue={})
 
Int32 evaluateConstExpressionInt (Expression &expression)
 
float evaluateConstExpressionFloat (Expression &expression)
 
- Protected Member Functions inherited from CeresEngine::ShaderCompiler::VisitorTracker
bool isInsideGlobalScope () const
 
void pushFunctionDeclaration (FunctionDeclaration *funcDeclaration)
 
void popFunctionDeclaration ()
 
bool isInsideFunctionDeclaration () const
 
bool isInsideEntryPoint () const
 
bool isInsideSecondaryEntryPoint () const
 
FunctionDeclarationgetActiveFunctionDeclaration () const
 
StructDeclarationgetActiveFunctionStructDeclaration () const
 
void pushCallExpression (CallExpression *callExpression)
 
void popCallExpression ()
 
CallExpressiongetActiveCallExpression () const
 
void pushLValueExpression (Expression *expression)
 
void popLValueExpression ()
 
ExpressiongetActiveLValueExpression () const
 
void pushStructDeclaration (StructDeclaration *structDeclaration)
 
void popStructDeclaration ()
 
bool isInsideStructDeclaration () const
 
StructDeclarationgetActiveStructDeclaration () const
 
const Vector< StructDeclaration * > & getStructDeclarationStack () const
 
void pushUniformBufferDeclaration (UniformBufferDeclaration *uniformBufferDeclaration)
 
void popUniformBufferDeclaration ()
 
bool isInsideUniformBufferDeclaration () const
 
const Vector< UniformBufferDeclaration * > & getUniformBufferDeclarationStack () const
 
void pushVarDeclarationStatement (VarDeclarationStatement *varDeclarationStatement)
 
void popVarDeclarationStatement ()
 
bool isInsideVarDeclarationStatement () const
 
VarDeclarationStatementgetActiveVarDeclarationStatement () const
 
- Protected Member Functions inherited from CeresEngine::ShaderCompiler::Visitor
template<typename T >
void visit (const T &ast, void *args=nullptr)
 
template<typename T >
void visit (const Vector< T > &astList, void *args=nullptr)
 
virtual ~Visitor ()=default
 
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 visitSamplerDeclarationStatement (SamplerDeclarationStatement *ast, void *args)
 
virtual void visitAliasDeclarationStatement (AliasDeclarationStatement *ast, void *args)
 
virtual void visitNullStatement (NullStatement *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 visitBracketExpression (BracketExpression *ast, void *args)
 
virtual void visitCastExpression (CastExpression *ast, void *args)
 
virtual void visitInitializerExpression (InitializerExpression *ast, void *args)
 

Member Typedef Documentation

◆ OnAssignTypeDenoterProc

◆ OnOverrideProc

◆ OnValidAttributeValueProc

Constructor & Destructor Documentation

◆ HLSLAnalyzer()

CeresEngine::ShaderCompiler::HLSLAnalyzer::HLSLAnalyzer ( Log log = nullptr)

Member Function Documentation

◆ analyzeArrayDimensionList()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeArrayDimensionList ( const Vector< ArrayDimensionPtr > &  arrayDimensions)
private

◆ analyzeArrayExpression()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeArrayExpression ( ArrayExpression expression)
private

◆ analyzeAttributeDomain()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeDomain ( const Attribute attrib,
bool  required = true 
)
private

◆ analyzeAttributeLayout()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeLayout ( const Attribute attrib,
const TypeDenoterPtr typeDen 
)
private

◆ analyzeAttributeMaxVertexCount()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeMaxVertexCount ( const Attribute attrib)
private

◆ analyzeAttributeNumThreads()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeNumThreads ( const Attribute attrib)
private

◆ analyzeAttributeNumThreadsArgument()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeNumThreadsArgument ( Expression expression,
UInt32 value 
)
private

◆ analyzeAttributeOutputControlPoints()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeOutputControlPoints ( const Attribute attrib)
private

◆ analyzeAttributeOutputTopology()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeOutputTopology ( const Attribute attrib,
bool  required = true 
)
private

◆ analyzeAttributePartitioning()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributePartitioning ( const Attribute attrib,
bool  required = true 
)
private

◆ analyzeAttributePatchConstantFunc()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributePatchConstantFunc ( const Attribute attrib)
private

◆ analyzeAttributeSpace()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeSpace ( const Attribute attrib,
const TypeDenoterPtr typeDen 
)
private

◆ analyzeAttributeSpaceIdent()

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeSpaceIdent ( const Attribute attrib,
std::size_t  argIndex,
String ident 
)
private

◆ analyzeAttributeValue()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeValue ( Expression argExpression,
AttributeValue value,
const OnValidAttributeValueProc expectedValueFunc,
const String expectationDesc,
bool  required = true 
)
private

◆ analyzeAttributeValuePrimary()

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeAttributeValuePrimary ( Expression argExpression,
AttributeValue value,
const OnValidAttributeValueProc expectedValueFunc,
String literalValue 
)
private

◆ analyzeCallExpression()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeCallExpression ( CallExpression callExpression)
private

◆ analyzeCallExpressionFunction()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeCallExpressionFunction ( CallExpression callExpression,
bool  isStatic = false,
const Expression prefixExpression = nullptr,
const TypeDenoter prefixTypeDenoter = nullptr 
)
private

◆ analyzeCallExpressionIntrinsic()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeCallExpressionIntrinsic ( CallExpression callExpression,
const HLSLIntrinsicEntry intr,
bool  isStatic = false,
const TypeDenoter prefixTypeDenoter = nullptr 
)
private

◆ analyzeCallExpressionIntrinsicFromBufferType()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeCallExpressionIntrinsicFromBufferType ( const CallExpression callExpression,
const BufferType  bufferType 
)
private

◆ analyzeCallExpressionIntrinsicPrimary()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeCallExpressionIntrinsicPrimary ( CallExpression callExpression,
const HLSLIntrinsicEntry intr 
)
private

◆ analyzeCallExpressionPrimary()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeCallExpressionPrimary ( CallExpression callExpression,
const TypeDenoter prefixTypeDenoter = nullptr 
)
private

◆ analyzeEntryPoint()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPoint ( FunctionDeclaration funcDeclaration)
private

◆ analyzeEntryPointAttributes()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointAttributes ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeEntryPointAttributesComputeShader()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointAttributesComputeShader ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeEntryPointAttributesFragmentShader()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointAttributesFragmentShader ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeEntryPointAttributesGeometryShader()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointAttributesGeometryShader ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeEntryPointAttributesTessControlShader()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointAttributesTessControlShader ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeEntryPointAttributesTessEvaluationShader()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointAttributesTessEvaluationShader ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeEntryPointInputOutput()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointInputOutput ( FunctionDeclaration funcDeclaration)
private

◆ analyzeEntryPointOutput()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointOutput ( Expression expression)
private

◆ analyzeEntryPointParameter()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointParameter ( FunctionDeclaration funcDeclaration,
const VarDeclarationStatement param 
)
private

◆ analyzeEntryPointParameterInOut()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointParameterInOut ( FunctionDeclaration funcDeclaration,
VarDeclaration varDeclaration,
bool  input,
TypeDenoterPtr  varTypeDen = nullptr 
)
private

◆ analyzeEntryPointParameterInOutBuffer()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointParameterInOutBuffer ( FunctionDeclaration funcDeclaration,
VarDeclaration varDeclaration,
const BufferTypeDenoter bufferTypeDen,
bool  input 
)
private

◆ analyzeEntryPointParameterInOutStruct()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointParameterInOutStruct ( FunctionDeclaration funcDeclaration,
StructDeclaration structDeclaration,
bool  input 
)
private

◆ analyzeEntryPointParameterInOutVariable()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointParameterInOutVariable ( FunctionDeclaration funcDeclaration,
VarDeclaration varDeclaration,
bool  input 
)
private

◆ analyzeEntryPointSemantics()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeEntryPointSemantics ( FunctionDeclaration funcDeclaration,
const Vector< Semantic > &  inSemantics,
const Vector< Semantic > &  outSemantics 
)
private

◆ analyzeExtAttributes()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeExtAttributes ( const Vector< AttributePtr > &  attribs,
const TypeDenoterPtr typeDen 
)
private

◆ analyzeIntrinsicWrapperInlining()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeIntrinsicWrapperInlining ( CallExpression callExpression)
private

◆ analyzeLValueExpression()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeLValueExpression ( Expression expression,
const AST ast = nullptr,
VarDeclaration param = nullptr 
)
private

◆ analyzeLValueExpressionObject()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeLValueExpressionObject ( ObjectExpression objectExpression,
const AST ast = nullptr,
VarDeclaration param = nullptr 
)
private

◆ analyzeNumArgsAttribute() [1/2]

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeNumArgsAttribute ( const Attribute attrib,
std::size_t  expectedNumArgs,
bool  required = true 
)
private

◆ analyzeNumArgsAttribute() [2/2]

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeNumArgsAttribute ( const Attribute attrib,
std::size_t  minNumArgs,
std::size_t  maxNumArgs,
bool  required 
)
private

◆ analyzeObjectExpression()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeObjectExpression ( ObjectExpression expression,
PrefixArgs args 
)
private

◆ analyzeObjectExpressionBaseStructDeclarationFromStruct()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeObjectExpressionBaseStructDeclarationFromStruct ( ObjectExpression expression,
PrefixArgs outputArgs,
const StructTypeDenoter structTypeDen 
)
private

◆ analyzeObjectExpressionVarDeclarationFromStruct()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeObjectExpressionVarDeclarationFromStruct ( ObjectExpression expression,
StructDeclaration baseStructDeclaration,
const StructTypeDenoter structTypeDen 
)
private

◆ analyzeParameter()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeParameter ( VarDeclarationStatement param)
private

◆ analyzeSecondaryEntryPoint()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSecondaryEntryPoint ( FunctionDeclaration funcDeclaration,
bool  isPatchConstantFunc = false 
)
private

◆ analyzeSecondaryEntryPointAttributes()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSecondaryEntryPointAttributes ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeSecondaryEntryPointAttributesTessEvaluationShader()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSecondaryEntryPointAttributesTessEvaluationShader ( const Vector< AttributePtr > &  attribs)
private

◆ analyzeSemantic()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSemantic ( IndexedSemantic semantic)
private

◆ analyzeSemanticFunctionReturn()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSemanticFunctionReturn ( IndexedSemantic semantic)
private

◆ analyzeSemanticSM3()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSemanticSM3 ( IndexedSemantic semantic,
bool  input 
)
private

◆ analyzeSemanticSM3Remaining()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSemanticSM3Remaining ( )
private

◆ analyzeSemanticVarDeclaration()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeSemanticVarDeclaration ( IndexedSemantic semantic,
VarDeclaration varDeclaration 
)
private

◆ analyzeStaticAccessExpression()

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeStaticAccessExpression ( const Expression prefixExpression,
bool  isStatic,
const AST ast = nullptr 
)
private

◆ analyzeStaticTypeSpecifier()

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeStaticTypeSpecifier ( const TypeSpecifier typeSpecifier,
const String ident,
const Expression expression,
bool  isStatic 
)
private

◆ analyzeVarDeclaration()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeVarDeclaration ( VarDeclaration varDeclaration)
private

◆ analyzeVarDeclarationLocal()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeVarDeclarationLocal ( VarDeclaration varDeclaration,
bool  registerVarIdent = true 
)
private

◆ analyzeVarDeclarationStaticMember()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeVarDeclarationStaticMember ( VarDeclaration varDeclaration)
private

◆ analyzeVectorSpaceAssign()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::analyzeVectorSpaceAssign ( TypedAST lhs,
const TypeDenoter rhsTypeDen,
const OnAssignTypeDenoterProc assignTypeDenProc = nullptr,
bool  swapAssignOrder = false 
)
private

◆ decorateASTPrimary()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::decorateASTPrimary ( Program program,
const ShaderInput inputDesc,
const ShaderOutput outputDesc 
)
overrideprivatevirtual

◆ errorIfAttributeNotFound()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::errorIfAttributeNotFound ( bool  found,
const String attribDesc 
)
private

◆ isD3D9ShaderModel()

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::isD3D9ShaderModel ( ) const
private

◆ visitAliasDeclaration()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitAliasDeclaration ( AliasDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitArrayDimension()

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

◆ visitArrayExpression()

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

◆ visitAssignExpression()

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

◆ visitAttribute()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitAttribute ( Attribute ast,
void args 
)
overrideprivatevirtual

◆ visitBasicDeclarationStatement()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitBasicDeclarationStatement ( BasicDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitBufferDeclaration()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitBufferDeclaration ( BufferDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitBufferDeclarationStatement()

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

◆ visitCallExpression()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitCallExpression ( CallExpression ast,
void args 
)
overrideprivatevirtual

◆ visitCodeBlock()

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

◆ visitCodeBlockStatement()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitCodeBlockStatement ( CodeBlockStatement ast,
void args 
)
overrideprivatevirtual

◆ visitDoWhileLoopStatement()

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

◆ visitElseStatement()

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

◆ visitExpressionStatement()

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

◆ visitForLoopStatement()

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

◆ visitFunctionDeclaration()

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

◆ visitIfStatement()

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

◆ visitObjectExpression()

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

◆ visitPostUnaryExpression()

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

◆ visitProgram()

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

◆ visitReturnStatement()

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

◆ visitSamplerDeclaration()

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

◆ visitStructDeclaration()

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

◆ visitSwitchStatement()

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

◆ visitTypeSpecifier()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitTypeSpecifier ( TypeSpecifier ast,
void args 
)
overrideprivatevirtual

◆ visitUnaryExpression()

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

◆ visitUniformBufferDeclaration()

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

◆ visitVarDeclaration()

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

◆ visitVarDeclarationStatement()

void CeresEngine::ShaderCompiler::HLSLAnalyzer::visitVarDeclarationStatement ( VarDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitWhileLoopStatement()

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

Member Data Documentation

◆ mEntryPoint

String CeresEngine::ShaderCompiler::HLSLAnalyzer::mEntryPoint
private

◆ mExtensions

RawFlags CeresEngine::ShaderCompiler::HLSLAnalyzer::mExtensions
private

◆ mPreferWrappers

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::mPreferWrappers = false
private

◆ mProgram

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

◆ mSecondaryEntryPoint

String CeresEngine::ShaderCompiler::HLSLAnalyzer::mSecondaryEntryPoint
private

◆ mSecondaryEntryPointFound

bool CeresEngine::ShaderCompiler::HLSLAnalyzer::mSecondaryEntryPointFound = false
private

◆ mShaderModel

ShaderVersion CeresEngine::ShaderCompiler::HLSLAnalyzer::mShaderModel = {5, 0}
private

◆ mShaderTarget

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

◆ mVarDeclarationSM3Semantics

Set<VarDeclaration*> CeresEngine::ShaderCompiler::HLSLAnalyzer::mVarDeclarationSM3Semantics
private

◆ mVersionIn

InputShaderVersion CeresEngine::ShaderCompiler::HLSLAnalyzer::mVersionIn = InputShaderVersion::HLSL5
private

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