OWL
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
owl::UserGeomType Struct Reference

#include <UserGeom.h>

Inheritance diagram for owl::UserGeomType:
owl::GeomType owl::SBTObjectType owl::RegisteredObject owl::ContextObject owl::Object

Classes

struct  DeviceData
 

Public Types

typedef std::shared_ptr< UserGeomTypeSP
 
- Public Types inherited from owl::GeomType
typedef std::shared_ptr< GeomTypeSP
 
- Public Types inherited from owl::SBTObjectType
typedef std::shared_ptr< SBTObjectTypeSP
 
- Public Types inherited from owl::ContextObject
typedef std::shared_ptr< ContextObjectSP
 
- Public Types inherited from owl::Object
typedef std::shared_ptr< ObjectSP
 

Public Member Functions

 UserGeomType (Context *const context, size_t varStructSize, const std::vector< OWLVarDecl > &varDecls)
 
void setIntersectProg (int rayType, Module::SP module, const std::string &progName)
 
void setBoundsProg (Module::SP module, const std::string &progName)
 
void setMotionBoundsProg (Module::SP module, const std::string &progName)
 
void buildBoundsProg ()
 
void buildMotionBoundsProg ()
 
std::string toString () const override
 
virtual std::shared_ptr< GeomcreateGeom () override
 
DeviceDatagetDD (const DeviceContext::SP &device) const
 
RegisteredObject::DeviceData::SP createOn (const DeviceContext::SP &device) override
 
- Public Member Functions inherited from owl::GeomType
 GeomType (Context *const context, size_t varStructSize, const std::vector< OWLVarDecl > &varDecls)
 
std::string toString () const override
 
DeviceDatagetDD (const DeviceContext::SP &device) const
 
RegisteredObject::DeviceData::SP createOn (const DeviceContext::SP &device) override
 
virtual std::shared_ptr< GeomcreateGeom ()=0
 
void setAnyHitProgram (int rayType, Module::SP module, const std::string &progName)
 
void setClosestHitProgram (int rayType, Module::SP module, const std::string &progName)
 
- Public Member Functions inherited from owl::SBTObjectType
 SBTObjectType (Context *const context, ObjectRegistry &registry, size_t varStructSize, const std::vector< OWLVarDecl > &varDecls)
 
virtual ~SBTObjectType ()
 
int getVariableIdx (const std::string &varName)
 
bool hasVariable (const std::string &varName)
 
std::string toString () const override
 
void declareVariable (const std::string &varName, OWLDataType type, size_t offset)
 
std::vector< Variable::SP > instantiateVariables ()
 
- Public Member Functions inherited from owl::RegisteredObject
 RegisteredObject (Context *const context, ObjectRegistry &registry)
 
- Public Member Functions inherited from owl::ContextObject
 ContextObject (Context *const context)
 
std::string toString () const override
 
- Public Member Functions inherited from owl::Object
 Object ()
 
virtual std::string toString () const
 
virtual DeviceData::SP createOn (const std::shared_ptr< DeviceContext > &device)
 
void createDeviceData (const std::vector< std::shared_ptr< DeviceContext > > &devices)
 
template<typename T >
std::shared_ptr< T > as ()
 

Public Attributes

ProgramDesc boundsProg
 
ProgramDesc motionBoundsProg
 
std::vector< ProgramDescintersectProg
 
- Public Attributes inherited from owl::GeomType
std::vector< ProgramDescclosestHit
 
std::vector< ProgramDescanyHit
 
- Public Attributes inherited from owl::SBTObjectType
const size_t varStructSize
 
const std::vector< OWLVarDeclvarDecls
 
- Public Attributes inherited from owl::RegisteredObject
int ID
 
ObjectRegistryregistry
 
- Public Attributes inherited from owl::ContextObject
Context *const context
 
- Public Attributes inherited from owl::Object
const size_t uniqueID
 
std::vector< DeviceData::SP > deviceData
 

Additional Inherited Members

- Static Public Attributes inherited from owl::Object
static std::atomic< uint64_t > nextAvailableID
 

Detailed Description

Describes a geometry type for "User Geometries" or, as they area also known in OptiX land, "Custom Primitives" - ie, primitives where the user specifies bounding box program and intersection program. This "Type" class describes these programs; the "UserGeom" class then creates objects of this type and stores the respective data that describe that object

Constructor & Destructor Documentation

◆ UserGeomType()

owl::UserGeomType::UserGeomType ( Context *const  context,
size_t  varStructSize,
const std::vector< OWLVarDecl > &  varDecls 
)

constructor, using the variable declaratoins that the user supplied

Member Function Documentation

◆ buildBoundsProg()

void owl::UserGeomType::buildBoundsProg ( )

build the CUDA bounds program kernel (if bounds prog is set)

◆ buildMotionBoundsProg()

void owl::UserGeomType::buildMotionBoundsProg ( )

build the CUDA bounds program kernel (if motion bounds prog is set)

◆ createGeom()

virtual std::shared_ptr< Geom > owl::UserGeomType::createGeom ( )
overridevirtual

create an instance of this geometry that the user can then parameterize and attach to a group

Implements owl::GeomType.

◆ createOn()

RegisteredObject::DeviceData::SP owl::UserGeomType::createOn ( const DeviceContext::SP &  device)
override

create this object's device-specific data for the device

◆ getDD()

UserGeomType::DeviceData & owl::UserGeomType::getDD ( const DeviceContext::SP &  device) const
inline

get reference to given device-specific data for this object

◆ setBoundsProg()

void owl::UserGeomType::setBoundsProg ( Module::SP  module,
const std::string &  progName 
)

set bounding box program to run for this type

◆ setIntersectProg()

void owl::UserGeomType::setIntersectProg ( int  rayType,
Module::SP  module,
const std::string &  progName 
)

set intersection program to run for this type and given ray type

◆ setMotionBoundsProg()

void owl::UserGeomType::setMotionBoundsProg ( Module::SP  module,
const std::string &  progName 
)

set motion bounding box program to run for this type

◆ toString()

std::string owl::UserGeomType::toString ( ) const
overridevirtual

pretty-printer, for printf-debugging

Reimplemented from owl::GeomType.

Member Data Documentation

◆ boundsProg

ProgramDesc owl::UserGeomType::boundsProg

the bounds prog to run for this type

◆ intersectProg

std::vector<ProgramDesc> owl::UserGeomType::intersectProg

the vector of intersect programs to run for this type, one per ray type

◆ motionBoundsProg

ProgramDesc owl::UserGeomType::motionBoundsProg

the motion bounds prog to run for this type (if motion blur is enabled)


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