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;
148 bool useHardwareFaceCulling,
149 bool hasMirroredTransform,
151 bool useMetalTessellation,
156 float lineWidth = 0);
168 HdSt_ResourceBinder
const &binder)
override;
172 HdSt_ResourceBinder
const &binder)
override;
178 return _frustumCullingPass;
190 return _useHardwareFaceCulling;
194 return _hasMirroredTransform;
202 return _useMetalTessellation;
243 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
HdCullStyle GetCullStyle() const
FvarPatchType GetFvarPatchType() const
PrimitiveType GetPrimitiveType() const
bool GetUseHardwareFaceCulling() const
HDST_API std::string GetSource(TfToken const &shaderStageKey) const override
static bool IsPrimTypeQuads(PrimitiveType primType)
bool GetDoubleSided() const
bool IsPrimTypeTriQuads() const
static bool IsPrimTypeTriangles(PrimitiveType primType)
HdPolygonMode GetPolygonMode() const
HDST_API int GetNumPatchEvalVerts() const
bool IsPrimTypeTriangles() const
std::shared_ptr< class HdSt_GeometricShader > HdSt_GeometricShaderSharedPtr
GLbitfield GLuint program
bool IsPrimTypeQuads() const
static bool IsPrimTypeTriQuads(PrimitiveType primType)
static bool IsPrimTypeMesh(PrimitiveType primType)
bool GetHasMirroredTransform() const
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.
GLsizei const GLchar *const * string
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
HDST_API void AddBindings(HdBindingRequestVector *customBindings) override
Add custom bindings (used by codegen)
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.
std::shared_ptr< class HdStResourceRegistry > HdStResourceRegistrySharedPtr
std::vector< class HdBindingRequest > HdBindingRequestVector