24 #ifndef PXR_IMAGING_HD_ST_GEOMETRIC_SHADER_H
25 #define PXR_IMAGING_HD_ST_GEOMETRIC_SHADER_H
40 std::shared_ptr<class HdSt_GeometricShader>;
42 std::shared_ptr<class HdStResourceRegistry>;
43 struct HdSt_ShaderKey;
152 bool useHardwareFaceCulling,
153 bool hasMirroredTransform,
155 bool useMetalTessellation,
160 float lineWidth = 0);
172 HdSt_ResourceBinder
const &binder)
override;
176 HdSt_ResourceBinder
const &binder)
override;
182 return _frustumCullingPass;
190 return _useMetalTessellation;
239 return _fvarPatchType;
267 HdSt_ShaderKey
const &shaderKey,
273 bool _useHardwareFaceCulling;
274 bool _hasMirroredTransform;
276 bool _useMetalTessellation;
280 std::unique_ptr<HioGlslfx> _glslfx;
281 bool _frustumCullingPass;
289 HioGlslfx const * _GetGlslfx()
const override;
295 #endif // PXR_IMAGING_HD_ST_GEOMETRIC_SHADER_H
FvarPatchType GetFvarPatchType() const
PrimitiveType GetPrimitiveType() const
HDST_API std::string GetSource(TfToken const &shaderStageKey) const override
static bool IsPrimTypeQuads(PrimitiveType primType)
static bool IsPrimTypeCompute(PrimitiveType primType)
bool IsPrimTypeTriQuads() const
static bool IsPrimTypeTriangles(PrimitiveType primType)
HdPolygonMode GetPolygonMode() const
HDST_API int GetNumPatchEvalVerts() const
bool IsPrimTypeCompute() const
GLsizei const GLchar *const * string
bool IsPrimTypeTriangles() const
std::vector< class HdStBindingRequest > HdStBindingRequestVector
std::shared_ptr< class HdSt_GeometricShader > HdSt_GeometricShaderSharedPtr
bool IsPrimTypeRefinedMesh() const
bool IsPrimTypeQuads() const
static bool IsPrimTypeTriQuads(PrimitiveType primType)
static bool IsPrimTypeMesh(PrimitiveType primType)
bool IsPrimTypeMesh() const
HDST_API int GetPrimitiveIndexSize() const
PrimitiveType
Used in HdSt_CodeGen to generate the appropriate shader source.
static bool IsPrimTypeRefinedMesh(PrimitiveType primType)
HDST_API HdSt_GeometricShader(std::string const &glslfxString, PrimitiveType primType, HdCullStyle cullStyle, bool useHardwareFaceCulling, bool hasMirroredTransform, bool doubleSided, bool useMetalTessellation, HdPolygonMode polygonMode, bool cullingPass, FvarPatchType fvarPatchType, SdfPath const &debugId=SdfPath(), float lineWidth=0)
HDST_API void UnbindResources(int program, HdSt_ResourceBinder const &binder) override
Unbinds shader-specific resources.
static bool IsPrimTypeBasisCurves(PrimitiveType primType)
bool IsPrimTypePoints() const
member query functions for PrimitiveType
bool IsPrimTypePatches() const
HDST_API ~HdSt_GeometricShader() override
static bool IsPrimTypePatches(PrimitiveType primType)
bool GetUseMetalTessellation() const
HDST_API ID ComputeHash() const override
static HdSt_GeometricShaderSharedPtr Create(HdSt_ShaderKey const &shaderKey, HdStResourceRegistrySharedPtr const &resourceRegistry)
HDST_API int GetNumPrimitiveVertsForGeometryShader() const
bool IsPrimTypeBasisCurves() const
float GetLineWidth() const
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
HDST_API void BindResources(int program, HdSt_ResourceBinder const &binder) override
static bool IsPrimTypePoints(PrimitiveType primType)
static query functions for PrimitiveType
HDST_API HgiPrimitiveType GetHgiPrimitiveType() const
#define PXR_NAMESPACE_CLOSE_SCOPE
bool IsFrustumCullingPass() const
Returns true if this geometric shader is used for GPU frustum culling.
HDST_API void AddBindings(HdStBindingRequestVector *customBindings) override
Add custom bindings (used by codegen)
HDST_API HgiCullMode ResolveCullMode(HdCullStyle const renderStateCullStyle) const
std::shared_ptr< class HdStResourceRegistry > HdStResourceRegistrySharedPtr
GLbitfield GLuint program