34 struct BaseTypeDenoter;
#define DECLARATION_VISIT_PROC(CLASS_NAME)
Definition Visitor.hpp:88
Definition GLSLGenerator.hpp:37
void writeWrapperIntrinsicsClip(const IntrinsicUsage &usage)
void assertIntrinsicNumArgs(CallExpression *callExpression, std::size_t numArgsMin, std::size_t numArgsMax=~0)
RawFlags mExtensions
Definition GLSLGenerator.hpp:64
bool writeGlobalLayoutsGeometry(const Program::LayoutGeometryShader &layout)
void preProcessFuncNameConverter()
void writeDataType(DataType dataType, bool writePrecisionSpecifier=false, const AST *ast=nullptr)
void writeFunctionEntryPointBody(FunctionDeclaration *ast)
void writeLayoutSet(const Vector< RegisterPtr > &slotRegisters)
void writeCallExpressionIntrinsicTextureQueryLod(CallExpression *callExpression, bool clamped)
void writeLayout(const InitializerList< LayoutEntryFunctor > &entryFunctors)
void writeTypeModifiers(const Set< TypeModifier > &typeModifiers, const TypeDenoterPtr &typeDenoter=nullptr)
void writeScopedStatement(Statement *ast)
void writeObjectExpression(const ObjectExpression &objectExpression)
void writeProgramHeaderExtension(const String &extensionName)
void writeWrapperIntrinsicsMemoryBarrier(const Intrinsic intrinsic, bool groupSync)
void writeGlobalInputSemantics(const FunctionDeclaration *entryPoint)
void writeLayoutGlobalOut(const InitializerList< LayoutEntryFunctor > &entryFunctors, const LayoutEntryFunctor &varFunctor=nullptr)
bool writeGlobalLayoutsCompute(const Program::LayoutComputeShader &layout)
void writeStatementList(const Vector< T > &statements, bool isGlobalScope=false)
void writeFunctionSecondaryEntryPoint(FunctionDeclaration *ast)
void writeLocalInputSemanticsVarDeclaration(VarDeclaration *varDeclaration)
void writeProgramHeader()
void preProcessPackedUniforms()
void preProcessReferenceAnalyzer(const ShaderInput &inputDesc)
void writeStatementComment(const Statement *ast, bool insertBlank=false)
void writeSamplerDeclaration(const SamplerDeclaration &samplerDeclaration)
void writeCallExpressionIntrinsicRcp(CallExpression *callExpression)
bool mWriteHeaderComment
Definition GLSLGenerator.hpp:59
bool mAutoBinding
Definition GLSLGenerator.hpp:58
void writeWrapperIntrinsicsF16toF32()
void writeWrapperIntrinsicsSinCos(const IntrinsicUsage &usage)
void writeLocalOutputSemanticsStructDeclarationParam(VarDeclarationStatement *param, const StructDeclaration *structDeclaration)
void writeProgramHeaderVersion()
void writeLineMark(int lineNumber)
void preProcessStructParameterAnalyzer(const ShaderInput &inputDesc)
void writeLocalOutputSemantics(const FunctionDeclaration *entryPoint)
void writeCallExpressionStandard(const CallExpression *callExpression)
Map< CiString, VertexSemanticLoc > mVertexSemanticsMap
Definition GLSLGenerator.hpp:46
bool writeGlobalLayoutsTessControl(const Program::LayoutTessControlShader &layout)
void writeGlobalLayouts()
OutputShaderVersion mVersionOut
Definition GLSLGenerator.hpp:44
void writeOutputSemanticsAssignmentStructDeclarationParam(const FunctionDeclaration::ParameterStructure ¶mStruct, bool writeAsListedExpression=false, const String &tempIdent="output")
void errorIntrinsic(const String &intrinsicName, const AST *ast=nullptr)
bool mAlwaysBracedScopes
Definition GLSLGenerator.hpp:55
UPtr< String > systemValueToKeyword(const IndexedSemantic &semantic) const
bool writeStructDeclaration(const StructDeclaration *structDeclaration, bool endWithSemicolon)
Set< int > mUsedInLocationsSet
Definition GLSLGenerator.hpp:61
void writeBuiltinBlockRedeclarationsPerVertex(bool input, const String &name="")
Set< int > mUsedOutLocationsSet
Definition GLSLGenerator.hpp:62
void preProcessExpressionConverterSecondary()
bool mCompactWrappers
Definition GLSLGenerator.hpp:54
const String * samplerTypeToKeyword(const SamplerType samplerType, const AST *ast=nullptr)
void writeCallExpressionIntrinsicImageAtomic(CallExpression *callExpression)
bool writeGlobalLayoutsTessEvaluation(const Program::LayoutTessEvaluationShader &layout)
void writeFunctionEntryPoint(FunctionDeclaration *ast)
bool hasShadingLanguage420Pack() const
void writeBuiltinBlockRedeclarations()
void writeCallExpressionIntrinsicImageAtomicCompSwap(CallExpression *callExpression)
void writeGlobalUniformsParameter(const VarDeclarationStatement *param)
bool isTypeCompatibleWithSemantic(const Semantic semantic, const TypeDenoter &typeDenoter)
void writeStorageClasses(const Set< StorageClass > &storageClasses, const AST *ast=nullptr)
void writeLiteral(const String &value, const DataType &dataType, const AST *ast=nullptr)
void writeArrayIndices(const Vector< ExpressionPtr > &arrayIndices)
void writeObjectExpressionIdentOrSystemValue(const ObjectExpression &objectExpression, Declaration *symbol)
void writeArrayExpression(const ArrayExpression &arrayExpression)
void preProcessTypeConverter()
bool writeGlobalLayoutsFragment(const Program::LayoutFragmentShader &layout)
bool mAllowExtensions
Definition GLSLGenerator.hpp:50
void writeGlobalUniforms()
bool mPreserveComments
Definition GLSLGenerator.hpp:52
void writeLayoutBinding(const Vector< RegisterPtr > &slotRegisters)
bool mSeparateSamplers
Definition GLSLGenerator.hpp:57
void writeParameter(const VarDeclarationStatement *ast)
void writeLayoutBindingOrLocation(const Vector< RegisterPtr > &slotRegisters)
bool isGlsL120OrEssL100() const
void writeWrapperIntrinsics()
bool isWrappedIntrinsic(const Intrinsic intrinsic) const
void writeVarDeclarationIdentOrSystemValue(const VarDeclaration *varDeclaration, Int32 arrayIndex=-1)
bool mExplicitBinding
Definition GLSLGenerator.hpp:51
void writeCallExpressionIntrinsicClip(CallExpression *callExpression)
void writeGlobalOutputSemanticsSlot(TypeSpecifier *typeSpecifier, IndexedSemantic &semantic, const String &ident, const VarDeclaration *varDeclaration=nullptr)
void writeObjectExpressionIdent(const ObjectExpression &objectExpression, bool writePrefix=true)
void reportOptionalFeedback()
void writeBufferDeclarationTexture(const BufferDeclaration *bufferDeclaration)
void writeLocalInputSemanticsStructDeclarationParam(VarDeclarationStatement *param, StructDeclaration *structDeclaration)
void writeBufferDeclaration(BufferDeclaration *bufferDeclaration)
void generateCodePrimary(Program &program, const ShaderInput &inputDesc, const ShaderOutput &outputDesc) override
void writeLayoutGlobal(const InitializerList< LayoutEntryFunctor > &entryFunctors, const LayoutEntryFunctor &varFunctor, const String &modifier)
void writeGlobalInputSemanticsVarDeclaration(VarDeclaration *varDeclaration)
void writeWrapperMatrixSubscript(const MatrixSubscriptUsage &usage)
const String * bufferTypeToKeyword(const BufferType bufferType, const AST *ast=nullptr)
NameMangling mNameMangling
Definition GLSLGenerator.hpp:45
void writeGlobalOutputSemantics(FunctionDeclaration *entryPoint)
void writeTypeDenoter(const TypeDenoter &typeDenoter, bool writePrecisionSpecifier=false, const AST *ast=nullptr)
void writeProgramHeaderComment()
void preProcessGLSLConverter(const ShaderInput &inputDesc, const ShaderOutput &outputDesc)
void writeComment(const String &text)
bool mAllowLineMarks
Definition GLSLGenerator.hpp:53
void writeInterpModifiers(const Set< InterpModifier > &interpModifiers, const AST *ast=nullptr)
void writeLocalInputSemantics(FunctionDeclaration *entryPoint)
bool mSeparateShaders
Definition GLSLGenerator.hpp:56
void writeCallExpressionIntrinsicStreamOutputAppend(CallExpression *callExpression)
void writeCallExpressionArguments(const CallExpression *callExpression, std::size_t firstArgIndex=0, std::size_t numWriteArgs=~0u)
FunctionView< void() const > LayoutEntryFunctor
Definition GLSLGenerator.hpp:71
void writeCallExpressionIntrinsicMul(CallExpression *callExpression)
void writeTypeModifiersFrom(const TypeSpecifierPtr &typeSpecifier)
void writeBufferDeclarationStorageBuffer(BufferDeclaration *bufferDeclaration)
void writeWrapperIntrinsicsLit(const IntrinsicUsage &usage)
void writeOutputSemanticsAssignment(Expression *expression, bool writeAsListedExpression=false)
bool useSeparateSamplers() const
void writeGlobalOutputSemanticsVarDeclaration(VarDeclaration *varDeclaration, bool useSemanticName=false)
void writeCallExpressionIntrinsicAtomic(CallExpression *callExpression)
UniformPacking mUniformPacking
Definition GLSLGenerator.hpp:47
void preProcessAST(const ShaderInput &inputDesc, const ShaderOutput &outputDesc)
void preProcessExpressionConverterPrimary()
void writeCallExpressionIntrinsicAtomicCompSwap(CallExpression *callExpression)
void writeLayoutGlobalIn(const InitializerList< LayoutEntryFunctor > &entryFunctors, const LayoutEntryFunctor &varFunctor=nullptr)
void writeFunction(const FunctionDeclaration *ast)
Int32 getNumBindingLocations(const TypeDenoter *typeDenoter)
String mEntryPointName
Definition GLSLGenerator.hpp:48
Int32 getBindingLocation(const TypeDenoter *typeDenoter, bool input)
Definition Generator.hpp:24
Definition ASTEnums.hpp:1557
Log base class.
Definition Log.hpp:19
SPtr< TypeSpecifier > TypeSpecifierPtr
Definition Visitor.hpp:37
TypeModifier
Definition ASTEnums.hpp:471
SPtr< Expression > ExpressionPtr
Definition Visitor.hpp:26
InterpModifier
Definition ASTEnums.hpp:453
Semantic
Definition ASTEnums.hpp:1487
Intrinsic
Intrinsics function enumeration (currently only HLSL intrinsics).
Definition ASTEnums.hpp:980
StorageClass
Definition ASTEnums.hpp:441
OutputShaderVersion
Output shader version enumeration.
Definition Targets.hpp:67
@ GLSL
Auto-detect minimal required GLSL version (for OpenGL 2+).
SPtr< TypeDenoter > TypeDenoterPtr
Definition TypeDenoter.hpp:29
DataType
Definition ASTEnums.hpp:159
BufferType
Definition ASTEnums.hpp:492
SPtr< Token > TokenPtr
Definition Token.hpp:174
SPtr< Register > RegisterPtr
Definition Visitor.hpp:34
SamplerType
Definition ASTEnums.hpp:571
std::unique_ptr< T, Deleter > UPtr
UPtr is a smart pointer that owns and manages another object through a pointer and disposes of that o...
Definition SmartPtr.hpp:28
std::initializer_list< T > InitializerList
An object of type InitializerList<T> is a lightweight proxy object that provides access to an array o...
Definition InitializerList.hpp:40
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
std::int32_t Int32
Definition DataTypes.hpp:21
FunctionBase< false, true, fu2::capacity_default, true, false, Signatures... > FunctionView
A non owning copyable function wrapper for arbitrary callable types.
Definition Function.hpp:64
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
std::set< Key, Compare, ScopedAllocatorAdaptor< StdAllocator< Key, RawAllocator > > > Set
Set is an associative container that contains a sorted set of unique objects of type Key.
Definition Set.hpp:21
std::map< Key, T, Compare, ScopedAllocatorAdaptor< StdAllocator< Pair< const Key, T >, RawAllocator > > > Map
Map is a sorted associative container that contains key-value pairs with unique keys.
Definition Map.hpp:24
Definition GLSLGenerator.hpp:39
bool found
Definition GLSLGenerator.hpp:41
Int32 location
Definition GLSLGenerator.hpp:40
Definition ASTEnums.hpp:1432
Definition ASTEnums.hpp:338
Name mangling descriptor structure for shader input/output variables (also referred to as "varyings")...
Definition ShaderCompiler.hpp:185
Shader output descriptor structure.
Definition ShaderCompiler.hpp:293
Definition TypeDenoter.hpp:82