25#ifndef PXR_IMAGING_HGI_SHADERSECTION_H
26#define PXR_IMAGING_HGI_SHADERSECTION_H
29#include "pxr/imaging/hgi/api.h"
35PXR_NAMESPACE_OPEN_SCOPE
38struct HgiShaderSectionAttribute
40 std::string identifier;
44using HgiShaderSectionAttributeVector =
45 std::vector<HgiShaderSectionAttribute>;
89 return _identifierVar;
103 return !_blockInstanceIdentifier.empty();
109 const std::string &identifier,
110 const HgiShaderSectionAttributeVector& attributes = {},
111 const std::string &defaultValue = std::string(),
112 const std::string &arraySize = std::string(),
113 const std::string &blockInstanceIdentifier = std::string());
116 const std::string& _GetDefaultValue()
const;
119 const std::string _identifierVar;
120 const HgiShaderSectionAttributeVector _attributes;
121 const std::string _defaultValue;
122 const std::string _arraySize;
123 const std::string _blockInstanceIdentifier;
126PXR_NAMESPACE_CLOSE_SCOPE
A base class for a Shader Section.
HGI_API const HgiShaderSectionAttributeVector & GetAttributes() const
Returns the attributes of the section.
virtual HGI_API void WriteType(std::ostream &ss) const
Write out the type, shader section does not hold a type string as how a type is defined is fully cont...
const std::string & GetIdentifier() const
Returns the identifier of the section.
virtual HGI_API void WriteIdentifier(std::ostream &ss) const
Writes the unique name of an instance of the section.
virtual HGI_API void WriteArraySize(std::ostream &ss) const
Writes the arraySize to a function.
const std::string & GetArraySize() const
Returns the arraySize of the section.
virtual HGI_API void WriteBlockInstanceIdentifier(std::ostream &ss) const
Writes the block instance name of an instance of the section.
virtual HGI_API void WriteParameter(std::ostream &ss) const
Writes the section as a parameter to a function.
bool HasBlockInstanceIdentifier() const
Returns whether the section has a block instance identifier.
virtual HGI_API void WriteDeclaration(std::ostream &ss) const
Writes a decleration statement for a member or in global scope.