HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GR_PolySurface Class Referenceabstract

#include <GR_PolySurface.h>

+ Inheritance diagram for GR_PolySurface:

Public Member Functions

 GR_PolySurface (GR_Primitive *prim, bool needs_convexing)
 
 ~GR_PolySurface () override
 
const char * className () const override
 
void update (RE_RenderContext r, const GT_PrimitiveHandle &primh, const GR_UpdateParms &p, const char *cache_name) override
 
bool hasTransparency () const override
 returns true if this drawable renders some transparent elements More...
 
GT_PrimitiveHandle getConvexGeometry ()
 
exint getNumGLPrimitives () const override
 
- Public Member Functions inherited from GR_GeoRenderGL
 GR_GeoRenderGL (GR_Primitive *parent_prim)
 
 ~GR_GeoRenderGL () override
 
virtual void updateInstanceGroupArray (const RE_VertexArray *array, int instance_group=-1, const char *attrib_name=NULL, RE_GenericAttribID id=RE_GENATTRIB_NONE)
 
RE_GeometrycreateGeometry (int npoints=0)
 
RE_GeometrygetGeometry () override
 
void getPickConnectGroup (unsigned int pick_mode, GR_PickGeometry pick_geo, int &out_connect_start, int &out_connect_num) override
 
void setupGeoOverride (RE_Render *r, const GR_DisplayOption *opt, RE_Geometry *geo, UT_UniquePtr< RE_OverrideList > &override_list)
 
void cleanupGeoOverride (RE_Render *r, const GR_DisplayOption *opt, RE_Geometry *geo)
 
- Public Member Functions inherited from GR_GeoRender
 GR_GeoRender (GR_Primitive *parent_prim, RenderType type)
 
virtual ~GR_GeoRender ()
 
bool isGL () const
 
bool isVulkan () const
 
virtual void viewUpdate (RE_RenderContext r, const GR_DisplayOption &opts, const char *cache_name, RE_CacheVersion geo_version, RE_CacheVersion select_version)
 
virtual void draw (RE_RenderContext r, GR_RenderMode mode, GR_RenderFlags flags, GR_DrawParms draw_parms)=0
 Normal drawing method. Only issue rendering commands. More...
 
virtual bool supportsInstances () const
 By default, no instanced drawing support. More...
 
virtual bool isConvexed () const
 
virtual void geometryUpdated (RE_RenderContext)
 
virtual RV_GeometrygetVkGeometry ()
 
void getPickConnectGroup (unsigned int pick_mode, GR_PickGeometry pick_geo, int &out_connect_start, int &out_connect_num, int &out_connect_end)
 
virtual RV_GeometrygetVkPickGeometry (unsigned int pick_mode)
 
bool showSelections () const
 
GR_RenderVersion getRenderVersion () const
 
void allowGeoOverride (bool allow_overrides)
 
virtual bool canFrustumCull ()
 
bool inViewFrustum (const UT_Matrix4D &objviewproj, const UT_BoundingBoxD *bbox)
 
bool isRasterizedInView (const UT_Matrix4F &objviewproj, const UT_Vector2F &min_proj_size, const UT_BoundingBoxF *bbox=nullptr)
 
GR_BasePrimType getParentType () const
 
RenderType getRenderType () const
 
void buildInformation (bool prim_id, bool point_id)
 
bool shouldBuildPrimID () const
 
bool shouldBuildPointID () const
 
void setSelectionMask (GR_AttribMask selection_mask)
 
GR_AttribMask getSelectionMask () const
 
void setSelectionDisplayMode (GR_SelectMode m)
 
GR_SelectMode getSelectionDisplayMode () const
 
void setSelectionInstance (int i)
 
int getSelectionInstance () const
 
void setMaterialOverride (int mat_index)
 
void clearMaterialOverride ()
 
bool getDetailPrimID (int &id) const
 
void addUpdateMessage (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addUpdateWarning (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addUpdateError (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addUpdateFatal (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addRedrawMessage (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addRedrawWarning (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addRedrawError (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
void addRedrawFatal (GR_ErrorManager::Source err_source, GR_ErrorCode gr_code, UT_StringHolder extra_text=UT_StringHolder(), UT_StringHolder src_name=UT_StringHolder())
 
GT_DataArrayHandle buildPointIDData (const GT_Primitive &prim, const GU_ConstDetailHandle &geo, int npoints)
 
GT_DataArrayHandle buildPrimitiveIDData (const GT_Primitive &prim, const GU_ConstDetailHandle &geo)
 
void setGeoBounds (const UT_BoundingBox &b)
 
const UT_BoundingBoxDgetGeoBounds () const
 

Static Public Member Functions

static GR_PolySurfacecreate (GR_Primitive *parent, bool convex)
 
- Static Public Member Functions inherited from GR_GeoRenderGL
static RE_VertexArraygetDirtyAttribArray (RE_Render *r, RE_Geometry *geo, const char *attrib_name, const GT_DataArrayHandle &h, const GR_DisplayOption &opts, RE_ArrayType atype, RE_CacheVersion attr_version)
 
static void fillGeoAttribs (RE_Render *r, const GT_Primitive *prim, const GR_UpdateParms &p, RE_Geometry *geo, bool needs_nml, bool needs_uv, bool needs_tangent, bool need_prim_vert_info, const GT_DataArrayHandle &point_norm, GR_BasePrimType packed_type, bool build_point_id, bool build_prim_id, GR_GeoRenderGL *geo_ren=nullptr, bool *has_detail_prim_id=nullptr, int *detail_prim_id=nullptr, int *num_bone_deform=nullptr)
 
- Static Public Member Functions inherited from GR_GeoRender
static bool createTanAttrib (UT_Vector4F *tan_data, const GT_DataArray *nml, const GT_DataArray *tanu, const GT_DataArray *tanv, const GT_DataArray *vlist)
 

Protected Member Functions

void retireGeometry () override
 
virtual int buildVertexAttributes (RE_Render *r, const GT_PrimPolygonMesh *pmesh, const GR_UpdateParms &p, bool needs_normal, bool needs_uv, bool needs_tangent, bool new_geo, bool &vertex_promote)=0
 
virtual void buildConnectivity (RE_Render *r, const GT_PrimPolygonMesh *pmesh, const char *cache_name, RE_CacheVersion geo_version, const RE_MaterialAtlas &mats, int npoints, bool wireframe, bool vertex_promote, bool convexed)=0
 
virtual GT_PrimitiveHandle convexSurface (const GT_PrimPolygonMesh *pmesh)=0
 
GT_PrimitiveHandle convexWithEdgeInfo (const GT_PrimPolygonMesh *pmesh, GT_DataArrayHandle &ph, GT_DataArrayHandle &vh, GT_DataArrayHandle &vch)
 
GT_DataArrayHandle getPointNormals ()
 
void freePointNormals ()
 
virtual bool updateBoneTransforms (RE_Render *r, const GT_DataArrayHandle &a)=0
 
virtual bool updateBlendShapeWeights (RE_Render *r, const GT_DataArrayHandle &weights_attr)=0
 
virtual int numMaterials () const =0
 
- Protected Member Functions inherited from GR_GeoRenderGL
void initLights (RE_Render *r, RE_Shader *sh, GR_RenderMode mode, GR_RenderFlags flags, const GR_DisplayOption *opt)
 
void buildPointID (RE_Render *r, const GT_Primitive &prim, const GU_ConstDetailHandle &geo, RE_CacheVersion geo_version)
 
void buildPrimitiveID (RE_Render *r, const GT_Primitive &primh, const GU_ConstDetailHandle &geo, RE_CacheVersion geo_version)
 
GR_SelectMode buildSelection (RE_Render *r, const GR_UpdateParms &parms, RE_Geometry &obj, const GT_PrimitiveHandle &primh, const GT_DataArrayHandle &vertexlist)
 
GR_SelectMode addToPointSelection (RE_Render *r, RE_VertexArray *select_array, int length, const GU_Detail &geo, const GT_DataArrayHandle &vh, const GT_DataArrayHandle &vl, const GA_PointGroup *pntsel, bool use_vertex_for_point_select, bool &init)
 
GR_SelectMode addToVertexSelection (RE_Render *r, RE_VertexArray *select_array, int length, const GU_Detail &geo, const GT_DataArrayHandle &vh, const GA_VertexGroup *vertsel, bool &init)
 
GR_SelectMode addToEdgeSelection (RE_Render *r, RE_VertexArray *select_array, int length, const GU_Detail &geo, const GT_DataArrayHandle &vt, const GT_DataArrayHandle &vert_list, const GA_EdgeGroup *edgesel, bool &init)
 
GR_SelectMode addToPrimSelection (RE_Render *r, RE_VertexArray *sel_array, const GT_DataArrayHandle &vh, const GA_PrimitiveGroup *primsel, bool &init)
 
virtual GR_SelectMode addToBreakpointSelection (RE_Render *r, RE_VertexArray *select, int bpnt_len, const GA_BreakpointGroup *bps, bool &init)
 
GR_SelectMode buildInstanceSelection (RE_Render *r, const GR_UpdateParms &p, RE_Geometry &obj)
 
void fillAttributesGL3 (RE_Render *r, const GT_Primitive *prim, const GR_UpdateParms &p, RE_Geometry *geo, bool needs_nml, bool needs_uv, bool needs_tangent, bool need_prim_vert_info, const GT_DataArrayHandle &point_norm)
 
virtual int setupSelection (RE_Render *r, const GR_DisplayOption *opt, GR_RenderFlags flags, bool supports_outline=false) const
 
virtual void cleanupSelection (RE_Render *r, int key) const
 Clean up selection uniforms; much be paired with a setupSelection(). More...
 
void updateWireColor (RE_Render *r, RE_Geometry *geo, const GR_DisplayOption *opt, int start_draw_idx, int num_draw_idx=1) const
 
- Protected Member Functions inherited from GR_GeoRender
GR_AttribMask hasAttribute (const GT_Primitive *prim, const char *name, GT_DataArrayHandle &h) const
 
GT_PrimitiveHandle getCachedGTPrimitive ()
 
void cacheGTPrimitive (GT_PrimitiveHandle &primh)
 
int getCurrentLayer () const
 
template<typename T >
GR_SelectMode addToPointSelection (const UT_Span< T > &out_select, const GU_Detail &geo, const GT_DataArrayHandle &vh, const GT_DataArrayHandle &vl, const GA_PointGroup *pntsel, bool use_vertex_for_point_select, bool &init)
 
GR_SelectMode addToVertexSelection (const UT_Span< uint8 > &out_select, const GU_Detail &geo, const GT_DataArrayHandle &vh, const GA_VertexGroup *vertsel, bool &init)
 
template<typename T >
GR_SelectMode addToEdgeSelection (const UT_Span< T > &out_select, const GU_Detail &geo, const GT_DataArrayHandle &vt, const GT_DataArrayHandle &vert_list, const GA_EdgeGroup *edgesel, bool &init)
 
GR_SelectMode addToPrimSelection (const UT_Span< uint8 > &out_select, const GT_DataArrayHandle &vh, const GA_PrimitiveGroup *primsel, bool &init)
 

Protected Attributes

bool myHasAlpha
 
bool myHasVertexUV
 
bool myHasTransparentMaterial
 
- Protected Attributes inherited from GR_GeoRenderGL
RE_GeometrymyGeometry
 
- Protected Attributes inherited from GR_GeoRender
RenderType myRenderer
 
const GR_RenderInfomyInfo
 
GR_MaterialGroups myMatGroups
 
UT_BoundingBoxD myBounds
 
unsigned myBuildPointInfo: 1
 
unsigned myBuildPrimInfo: 1
 
unsigned myHasDetailPrimID: 1
 
unsigned myHasInstancedTransform: 1
 
unsigned myHasIdentityTransform: 1
 
unsigned myUseBoneDeform: 1
 
unsigned myNumBoneDeform: 2
 
unsigned myAllowGeoOverride: 1
 
UT_Matrix4D myPrimitiveTransform
 
GR_AttribMask mySelectionMask
 
GR_SelectMode myCurrentSelection
 
int myCurrentPointSelectInstance
 
int myMaterialOverride
 
int myConvexFlag
 
int myDetailPrimID
 
GR_PrimitivemyParentPrim
 
int myCurrentLayer
 

Additional Inherited Members

- Public Types inherited from GR_GeoRender
enum  RenderType { OPENGL, VULKAN }
 

Detailed Description

Definition at line 27 of file GR_PolySurface.h.

Constructor & Destructor Documentation

GR_PolySurface::GR_PolySurface ( GR_Primitive prim,
bool  needs_convexing 
)
GR_PolySurface::~GR_PolySurface ( )
override

Member Function Documentation

virtual void GR_PolySurface::buildConnectivity ( RE_Render r,
const GT_PrimPolygonMesh pmesh,
const char *  cache_name,
RE_CacheVersion  geo_version,
const RE_MaterialAtlas mats,
int  npoints,
bool  wireframe,
bool  vertex_promote,
bool  convexed 
)
protectedpure virtual
virtual int GR_PolySurface::buildVertexAttributes ( RE_Render r,
const GT_PrimPolygonMesh pmesh,
const GR_UpdateParms p,
bool  needs_normal,
bool  needs_uv,
bool  needs_tangent,
bool  new_geo,
bool &  vertex_promote 
)
protectedpure virtual
const char* GR_PolySurface::className ( ) const
inlineoverridevirtual

Implements GR_GeoRender.

Reimplemented in GR_PolySurfaceGL3.

Definition at line 36 of file GR_PolySurface.h.

virtual GT_PrimitiveHandle GR_PolySurface::convexSurface ( const GT_PrimPolygonMesh pmesh)
protectedpure virtual
GT_PrimitiveHandle GR_PolySurface::convexWithEdgeInfo ( const GT_PrimPolygonMesh pmesh,
GT_DataArrayHandle ph,
GT_DataArrayHandle vh,
GT_DataArrayHandle vch 
)
protected
static GR_PolySurface* GR_PolySurface::create ( GR_Primitive parent,
bool  convex 
)
static
void GR_PolySurface::freePointNormals ( )
protected
GT_PrimitiveHandle GR_PolySurface::getConvexGeometry ( )
inline

Definition at line 46 of file GR_PolySurface.h.

exint GR_PolySurface::getNumGLPrimitives ( ) const
overridevirtual

return the number of GL primitives that this renderer produces. May be roughly estimated.

Implements GR_GeoRender.

GT_DataArrayHandle GR_PolySurface::getPointNormals ( )
inlineprotected

Definition at line 80 of file GR_PolySurface.h.

bool GR_PolySurface::hasTransparency ( ) const
inlineoverridevirtual

returns true if this drawable renders some transparent elements

Reimplemented from GR_GeoRender.

Definition at line 43 of file GR_PolySurface.h.

virtual int GR_PolySurface::numMaterials ( ) const
protectedpure virtual

Implemented in GR_PolySurfaceGL3.

void GR_PolySurface::retireGeometry ( )
overrideprotectedvirtual

Reimplemented from GR_GeoRenderGL.

void GR_PolySurface::update ( RE_RenderContext  r,
const GT_PrimitiveHandle primh,
const GR_UpdateParms p,
const char *  cache_name 
)
overridevirtual

Update the geometry of this render object using the GT primitive. No rendering commands should be issued.

Implements GR_GeoRender.

virtual bool GR_PolySurface::updateBlendShapeWeights ( RE_Render r,
const GT_DataArrayHandle weights_attr 
)
protectedpure virtual

Implemented in GR_PolySurfaceGL3.

virtual bool GR_PolySurface::updateBoneTransforms ( RE_Render r,
const GT_DataArrayHandle a 
)
protectedpure virtual

Implemented in GR_PolySurfaceGL3.

Member Data Documentation

bool GR_PolySurface::myHasAlpha
protected

Definition at line 91 of file GR_PolySurface.h.

bool GR_PolySurface::myHasTransparentMaterial
protected

Definition at line 93 of file GR_PolySurface.h.

bool GR_PolySurface::myHasVertexUV
protected

Definition at line 92 of file GR_PolySurface.h.


The documentation for this class was generated from the following file: