8#ifndef PXR_IMAGING_HGI_SHADERSECTION_H
9#define PXR_IMAGING_HGI_SHADERSECTION_H
12#include "pxr/imaging/hgi/api.h"
18PXR_NAMESPACE_OPEN_SCOPE
21struct HgiShaderSectionAttribute
23 std::string identifier;
27using HgiShaderSectionAttributeVector =
28 std::vector<HgiShaderSectionAttribute>;
72 return _identifierVar;
86 return !_blockInstanceIdentifier.empty();
92 const std::string &identifier,
93 const HgiShaderSectionAttributeVector& attributes = {},
94 const std::string &defaultValue = std::string(),
95 const std::string &arraySize = std::string(),
96 const std::string &blockInstanceIdentifier = std::string());
99 const std::string& _GetDefaultValue()
const;
102 const std::string _identifierVar;
103 const HgiShaderSectionAttributeVector _attributes;
104 const std::string _defaultValue;
105 const std::string _arraySize;
106 const std::string _blockInstanceIdentifier;
109PXR_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.