OWL
OptiX7 Wrapper Library
|
Go to the documentation of this file.
20 #include <driver_types.h>
23 #include <sys/types.h>
32 # define OWL_DLL_EXPORT __declspec(dllexport)
33 # define OWL_DLL_IMPORT __declspec(dllimport)
34 #elif defined(__clang__) || defined(__GNUC__)
35 # define OWL_DLL_EXPORT __attribute__((visibility("default")))
36 # define OWL_DLL_IMPORT __attribute__((visibility("default")))
38 # define OWL_DLL_EXPORT
39 # define OWL_DLL_IMPORT
43 # define OWL_IF_CPP(a) a
45 # define OWL_IF_CPP(a)
48 #if defined(OWL_DLL_INTERFACE)
50 # define OWL_API OWL_DLL_EXPORT
52 # define OWL_API OWL_DLL_IMPORT
56 # define OWL_API extern "C" OWL_DLL_EXPORT
70 #define OWL_OFFSETOF(type,member) \
71 ((char *)(&((struct type *)0)-> member ) \
73 (char *)(((struct type *)0)))
196 #define OWL_USER_TYPE(userType) ((OWLDataType)(OWL_USER_TYPE_BEGIN+sizeof(userType)))
213 #define OWL_ALL_RAY_TYPES -1
374 int32_t maxInstanceDepth);
390 const char *ptxCode);
398 size_t sizeOfVarStruct,
405 const char *programName,
406 size_t sizeOfVarStruct,
420 const char *programName,
421 size_t sizeOfVarStruct,
445 size_t numGeometries,
463 size_t numGeometries,
504 const uint32_t *initInstanceIDs
OWL_IF_CPP(=
nullptr),
510 const float *initTransforms
OWL_IF_CPP(=
nullptr),
522 size_t sizeOfVarStruct,
586 cudaGraphicsResource_t resource);
699 const float *floatsForThisStimeStep,
709 const uint32_t *instanceIDs);
715 const char *progName);
721 const char *progName);
727 const char *progName);
732 const char *progName);
756 const char *varName);
760 const char *varName);
764 const char *varName);
768 const char *varName);
779 #define _OWL_SET_HELPER(stype,abb) \
780 OWL_API void owlVariableSet1##abb(OWLVariable var, \
782 OWL_API void owlVariableSet2##abb(OWLVariable var, \
785 OWL_API void owlVariableSet3##abb(OWLVariable var, \
796 #undef _OWL_SET_HELPER
806 #define _OWL_SET_HELPERS_C(OType,stype,abb) \
808 inline void owl##OType##Set1##abb(OWL##OType object, \
809 const char *varName, \
813 = owl##OType##GetVariable(object,varName); \
814 owlVariableSet1##abb(var,v); \
815 owlVariableRelease(var); \
818 inline void owl##OType##Set2##abb(OWL##OType object, \
819 const char *varName, \
824 = owl##OType##GetVariable(object,varName); \
825 owlVariableSet2##abb(var,x,y); \
826 owlVariableRelease(var); \
829 inline void owl##OType##Set3##abb(OWL##OType object, \
830 const char *varName, \
836 = owl##OType##GetVariable(object,varName); \
837 owlVariableSet3##abb(var,x,y,z); \
838 owlVariableRelease(var); \
844 #define _OWL_SET_HELPERS_CPP(OType,stype,abb) \
845 inline void owl##OType##Set2##abb(OWL##OType object, \
846 const char *varName, \
847 const owl2##abb &v) \
850 = owl##OType##GetVariable(object,varName); \
851 owlVariableSet2##abb(var,v.x,v.y); \
852 owlVariableRelease(var); \
854 inline void owl##OType##Set3##abb(OWL##OType object, \
855 const char *varName, \
856 const owl3##abb &v) \
859 = owl##OType##GetVariable(object,varName); \
860 owlVariableSet3##abb(var,v.x,v.y,v.z); \
861 owlVariableRelease(var); \
865 #define _OWL_SET_HELPERS_CPP(OType,stype,abb)
868 #define _OWL_SET_HELPERS(Type) \
870 inline void owl##Type##SetTexture(OWL##Type object, \
871 const char *varName, \
875 = owl##Type##GetVariable(object,varName); \
876 owlVariableSetTexture(var,v); \
877 owlVariableRelease(var); \
880 inline void owl##Type##SetGroup(OWL##Type object, \
881 const char *varName, \
885 = owl##Type##GetVariable(object,varName); \
886 owlVariableSetGroup(var,v); \
887 owlVariableRelease(var); \
889 inline void owl##Type##SetRaw(OWL##Type object, \
890 const char *varName, \
894 = owl##Type##GetVariable(object,varName); \
895 owlVariableSetRaw(var,v); \
896 owlVariableRelease(var); \
898 inline void owl##Type##SetPointer(OWL##Type object, \
899 const char *varName, \
903 = owl##Type##GetVariable(object,varName); \
904 owlVariableSetPointer(var,v); \
905 owlVariableRelease(var); \
907 inline void owl##Type##SetBuffer(OWL##Type object, \
908 const char *varName, \
912 = owl##Type##GetVariable(object,varName); \
913 owlVariableSetBuffer(var,v); \
914 owlVariableRelease(var); \
917 _OWL_SET_HELPERS_C(Type,int32_t,i) \
918 _OWL_SET_HELPERS_C(Type,uint32_t,ui) \
919 _OWL_SET_HELPERS_C(Type,int64_t,l) \
920 _OWL_SET_HELPERS_C(Type,uint64_t,ul) \
921 _OWL_SET_HELPERS_C(Type,float,f) \
922 _OWL_SET_HELPERS_C(Type,double,d) \
923 _OWL_SET_HELPERS_CPP(Type,int32_t,i) \
924 _OWL_SET_HELPERS_CPP(Type,uint32_t,ui) \
925 _OWL_SET_HELPERS_CPP(Type,int64_t,l) \
926 _OWL_SET_HELPERS_CPP(Type,uint64_t,ul) \
927 _OWL_SET_HELPERS_CPP(Type,float,f) \
928 _OWL_SET_HELPERS_CPP(Type,double,d) \
936 #undef _OWL_SET_HELPERS_CPP
937 #undef _OWL_SET_HELPERS_C
938 #undef _OWL_SET_HELPERS
OWL_API void owlRayGenLaunch2D(OWLRayGen rayGen, int dims_x, int dims_y)
double y
Definition: owl_host.h:242
int32_t x
Definition: owl_host.h:223
@ OWL_TEXEL_FORMAT_RGBA32F
Definition: owl_host.h:256
@ OWL_UCHAR3
Definition: owl_host.h:173
struct _OWLVarDecl OWLVarDecl
double y
Definition: owl_host.h:235
@ OWL_ULONG
Definition: owl_host.h:155
OWL_API void owlTrianglesSetMotionVertices(OWLGeom triangles, size_t numKeys, OWLBuffer *vertexArrays, size_t count, size_t stride, size_t offset)
#define _OWL_SET_HELPERS(Type)
Definition: owl_host.h:868
float x
Definition: owl_host.h:227
@ OWL_LONG3
Definition: owl_host.h:152
OWL_API const void * owlBufferGetPointer(OWLBuffer buffer, int deviceID)
float z
Definition: owl_host.h:241
OWL_API void owlInstanceGroupSetTransform(OWLGroup group, int whichChild, const float *floats, OWLMatrixFormat matrixFormat OWL_IF_CPP(=OWL_MATRIX_FORMAT_OWL))
Definition: owl_host.h:242
OWL_API OWLVariable owlParamsGetVariable(OWLParams object, const char *varName)
@ OWL_CHAR3
Definition: owl_host.h:167
@ OWL_FLOAT3
Definition: owl_host.h:137
@ OWL_DOUBLE
Definition: owl_host.h:160
struct _OWLLaunchParams * OWLParams
Definition: owl_host.h:306
Definition: owl_host.h:241
struct _OWLGeomType * OWLGeomType
Definition: owl_host.h:291
OWL_API void owlGraphicsBufferMap(OWLBuffer buffer)
OWL_API OWLVariable owlMissProgGetVariable(OWLMissProg geom, const char *varName)
double x
Definition: owl_host.h:228
OWL_API OWLVariable owlRayGenGetVariable(OWLRayGen geom, const char *varName)
OWLBuildSBTFlags
Definition: owl_host.h:99
struct _OWL_ulong3 owl3ul
int64_t x
Definition: owl_host.h:239
int32_t w
Definition: owl_host.h:237
OWL_API void owlVariableRelease(OWLVariable variable)
uint32_t x
Definition: owl_host.h:231
int64_t z
Definition: owl_host.h:239
@ OWL_SBT_ALL
Definition: owl_host.h:104
@ OWL_TRIANGLES
Definition: owl_host.h:208
OWL_API void owlBuildPrograms(OWLContext context)
OWL_API CUtexObject owlTextureGetObject(OWLTexture texture, int deviceID)
#define OWL_IF_CPP(a)
Definition: owl_host.h:45
OWL_API OWLBuffer owlManagedMemoryBufferCreate(OWLContext context, OWLDataType type, size_t count, const void *init)
@ OWL_DOUBLE2
Definition: owl_host.h:161
Definition: owl_host.h:237
@ OWL_DOUBLE4
Definition: owl_host.h:163
@ OWL_TEXEL_FORMAT_R8
Definition: owl_host.h:257
@ OWL_MATRIX_FORMAT_OWL
Definition: owl_host.h:90
struct _OWLGeom * OWLGeom
Definition: owl_host.h:290
@ OWL_CHAR2
Definition: owl_host.h:166
OWL_API void owlInstanceGroupSetChild(OWLGroup group, int whichChild, OWLGroup child)
int64_t y
Definition: owl_host.h:232
OWL_API void owlGeomTypeSetIntersectProg(OWLGeomType type, int rayType, OWLModule module, const char *progName)
@ OWL_MATRIX_FORMAT_ROW_MAJOR
Definition: owl_host.h:95
@ OWL_INT
Definition: owl_host.h:140
@ OWL_ULONG2
Definition: owl_host.h:156
OWL_API CUstream owlParamsGetCudaStream(OWLParams params, int deviceID)
@ OWL_UCHAR4
Definition: owl_host.h:174
int32_t y
Definition: owl_host.h:224
@ OWL_TEXTURE_CLAMP
Definition: owl_host.h:272
@ OWL_CHAR
Definition: owl_host.h:165
OWL_API void owlGroupRefitAccel(OWLGroup group)
OWL_API OWLGeomType owlGeomTypeCreate(OWLContext context, OWLGeomKind kind, size_t sizeOfVarStruct, OWLVarDecl *vars, int numVars)
int64_t x
Definition: owl_host.h:232
@ OWL_GEOM_USER
Definition: owl_host.h:203
OWL_API OWLBuffer owlGraphicsBufferCreate(OWLContext context, OWLDataType type, size_t count, cudaGraphicsResource_t resource)
OWL_API void owlGeomSetPrimCount(OWLGeom geom, size_t primCount)
Definition: owl_host.h:227
@ OWL_DOUBLE3
Definition: owl_host.h:162
@ OWL_TEXTURE_BORDER
Definition: owl_host.h:273
OWL_API void owlTrianglesSetVertices(OWLGeom triangles, OWLBuffer vertices, size_t count, size_t stride, size_t offset)
int64_t w
Definition: owl_host.h:239
uint64_t y
Definition: owl_host.h:226
uint32_t z
Definition: owl_host.h:238
@ OWL_INT4
Definition: owl_host.h:143
struct _OWLGroup * OWLGroup
Definition: owl_host.h:294
OWL_API void owlContextSetRayTypeCount(OWLContext context, size_t numRayTypes)
Definition: owl_host.h:235
@ OWL_FLOAT4
Definition: owl_host.h:138
@ OWL_RAW_POINTER
Definition: owl_host.h:182
@ OWL_TEXEL_FORMAT_R32F
Definition: owl_host.h:258
@ OWL_INT3
Definition: owl_host.h:142
@ OWL_FLOAT2
Definition: owl_host.h:136
struct _OWLTexture * OWLTexture
Definition: owl_host.h:289
@ OWL_UINT4
Definition: owl_host.h:148
OWL_API OWLBuffer owlDeviceBufferCreate(OWLContext context, OWLDataType type, size_t count, const void *init)
@ OWL_GEOMETRY_USER
Definition: owl_host.h:201
float y
Definition: owl_host.h:234
OWL_API void owlVariableSetPointer(OWLVariable variable, const void *valuePtr)
struct _OWLMissProg * OWLMissProg
Definition: owl_host.h:296
OWL_API void owlModuleRelease(OWLModule module)
OWL_API OWLModule owlModuleCreate(OWLContext context, const char *ptxCode)
uint32_t y
Definition: owl_host.h:238
uint64_t x
Definition: owl_host.h:240
OWL_API OWLBuffer owlHostPinnedBufferCreate(OWLContext context, OWLDataType type, size_t count)
struct _OWLModule * OWLModule
Definition: owl_host.h:293
OWL_API OWLVariable owlGeomGetVariable(OWLGeom geom, const char *varName)
@ OWL_UINT
Definition: owl_host.h:145
const char * name
Definition: owl_host.h:247
owl3f vy
Definition: owl_host.h:244
@ OWL_GEOMETRY_TRIANGLES
Definition: owl_host.h:205
Definition: owl_host.h:228
OWL_API void owlTexture2DDestroy(OWLTexture texture)
double x
Definition: owl_host.h:242
OWL_API void owlSetMaxInstancingDepth(OWLContext context, int32_t maxInstanceDepth)
Definition: owl_host.h:230
owl3f t
Definition: owl_host.h:244
uint64_t x
Definition: owl_host.h:233
OWL_API void owlLaunch2D(OWLRayGen rayGen, int dims_x, int dims_y, OWLParams params)
@ OWL_MATRIX_FORMAT_COLUMN_MAJOR
Definition: owl_host.h:85
float y
Definition: owl_host.h:241
owl3f vx
Definition: owl_host.h:244
OWL_API void owlContextDestroy(OWLContext context)
double z
Definition: owl_host.h:242
@ OWL_LONG2
Definition: owl_host.h:151
uint32_t x
Definition: owl_host.h:238
struct _OWL_ulong4 owl4ul
OWL_API void owlBufferResize(OWLBuffer buffer, size_t newItemCount)
#define OWL_API
Definition: owl_host.h:58
Definition: owl_host.h:223
OWL_API void owlBufferUpload(OWLBuffer buffer, const void *hostPtr)
#define _OWL_SET_HELPER(stype, abb)
Definition: owl_host.h:779
@ OWL_GEOM_TRIANGLES
Definition: owl_host.h:207
OWL_API void owlGeomRelease(OWLGeom geometry)
uint32_t w
Definition: owl_host.h:238
uint64_t y
Definition: owl_host.h:233
uint32_t z
Definition: owl_host.h:231
OWL_API void owlMissProgSet(OWLContext context, int rayType, OWLMissProg missProgToUse)
@ OWL_SBT_MISSPROGS
Definition: owl_host.h:103
int64_t y
Definition: owl_host.h:225
float y
Definition: owl_host.h:227
@ OWL_GROUP
Definition: owl_host.h:117
OWL_API void owlBufferRelease(OWLBuffer buffer)
OWL_API OWLParams owlParamsCreate(OWLContext context, size_t sizeOfVarStruct, OWLVarDecl *vars, int numVars)
@ OWL_SBT_HITGROUPS
Definition: owl_host.h:100
float x
Definition: owl_host.h:234
struct _OWLDeviceBuffer2D OWLDeviceBuffer2D
OWL_API OptixTraversableHandle owlGroupGetTraversable(OWLGroup group, int deviceID)
int32_t y
Definition: owl_host.h:230
Definition: owl_host.h:231
@ OWL_BUFFER
Definition: owl_host.h:111
OWL_API void owlGroupRelease(OWLGroup group)
@ OWL_TEXTURE
Definition: owl_host.h:126
Definition: owl_host.h:232
OWL_API void owlVariableSetRaw(OWLVariable variable, const void *valuePtr)
OWL_API void owlEnableMotionBlur(OWLContext _context)
uint64_t w
Definition: owl_host.h:240
int32_t z
Definition: owl_host.h:237
OWLGeomKind
Definition: owl_host.h:199
int32_t x
Definition: owl_host.h:230
OWLTextureFilterMode
Definition: owl_host.h:263
OWL_API OptixDeviceContext owlContextGetOptixContext(OWLContext context, int deviceID)
Definition: owl_host.h:224
Definition: owl_host.h:240
OWL_API OWLMissProg owlMissProgCreate(OWLContext context, OWLModule module, const char *programName, size_t sizeOfVarStruct, OWLVarDecl *vars, int numVars)
OWL_API OWLGroup owlUserGeomGroupCreate(OWLContext context, size_t numGeometries, OWLGeom *arrayOfChildGeoms)
OWL_API void owlLaunchSync(OWLParams params)
Definition: owl_host.h:225
@ OWL_LONG4
Definition: owl_host.h:153
OWL_API void owlBuildPipeline(OWLContext context)
float z
Definition: owl_host.h:234
Definition: owl_host.h:226
OWL_API void owlBuildSBT(OWLContext context, OWLBuildSBTFlags flags OWL_IF_CPP(=OWL_SBT_ALL))
struct _OWLContext * OWLContext
Definition: owl_host.h:287
owl2i dims
Definition: owl_host.h:284
struct _OWL_double3 owl3d
uint64_t z
Definition: owl_host.h:233
OWL_API void owlGeomTypeSetAnyHit(OWLGeomType type, int rayType, OWLModule module, const char *progName)
struct _OWL_affine3f owl4x3f
@ OWL_TEXTURE_LINEAR
Definition: owl_host.h:265
struct _OWLRayGen * OWLRayGen
Definition: owl_host.h:295
@ OWL_CHAR4
Definition: owl_host.h:168
@ OWL_GEOMETRY_HAIR
Definition: owl_host.h:209
OWL_API OWLTexture owlTexture2DCreate(OWLContext context, OWLTexelFormat texelFormat, uint32_t size_x, uint32_t size_y, const void *texels, OWLTextureFilterMode filterMode OWL_IF_CPP(=OWL_TEXTURE_LINEAR), OWLTextureAddressMode addressMode OWL_IF_CPP(=OWL_TEXTURE_CLAMP), uint32_t linePitchInBytes OWL_IF_CPP(=0))
@ OWL_USER_TYPE_BEGIN
Definition: owl_host.h:192
void * d_pointer
Definition: owl_host.h:284
OWL_API void owlVariableSetBuffer(OWLVariable variable, OWLBuffer value)
struct _OWLLaunchParams * OWLGlobals
Definition: owl_host.h:306
OWLTextureAddressMode
Definition: owl_host.h:270
OWL_API void owlGraphicsBufferUnmap(OWLBuffer buffer)
@ OWL_TEXTURE_MIRROR
Definition: owl_host.h:274
OWL_API OWLGroup owlInstanceGroupCreate(OWLContext context, size_t numInstances, const OWLGroup *initGroups OWL_IF_CPP(=nullptr), const uint32_t *initInstanceIDs OWL_IF_CPP(=nullptr), const float *initTransforms OWL_IF_CPP(=nullptr), OWLMatrixFormat matrixFormat OWL_IF_CPP(=OWL_MATRIX_FORMAT_OWL))
OWLMatrixFormat
Definition: owl_host.h:79
int64_t OWL_long
Definition: owl_host.h:220
OWL_API void owlGroupBuildAccel(OWLGroup group)
int64_t x
Definition: owl_host.h:225
@ OWL_DEVICE
Definition: owl_host.h:123
OWL_API OWLContext owlContextCreate(int32_t *requestedDeviceIDs OWL_IF_CPP(=nullptr), int numDevices OWL_IF_CPP(=0))
@ OWL_UCHAR2
Definition: owl_host.h:172
@ OWL_FLOAT
Definition: owl_host.h:135
OWL_API void owlVariableSetGroup(OWLVariable variable, OWLGroup value)
@ OWL_ULONG3
Definition: owl_host.h:157
@ _OWL_BEGIN_COPYABLE_TYPES
Definition: owl_host.h:132
OWL_API int32_t owlGetDeviceCount(OWLContext context)
Definition: owl_host.h:238
uint64_t y
Definition: owl_host.h:240
OptixTraversableHandle OWLDeviceTraversable
Definition: owl_host.h:283
@ OWL_ULONG4
Definition: owl_host.h:158
OWL_API CUstream owlContextGetStream(OWLContext context, int deviceID)
@ OWL_TEXTURE_WRAP
Definition: owl_host.h:271
OWL_API void owlGeomTypeSetClosestHit(OWLGeomType type, int rayType, OWLModule module, const char *progName)
Definition: owl_host.h:239
int64_t y
Definition: owl_host.h:239
Definition: owl_host.h:246
int32_t x
Definition: owl_host.h:224
@ OWL_BUFPTR
Definition: owl_host.h:115
@ OWL_TEXEL_FORMAT_RGBA8
Definition: owl_host.h:255
OWL_API void owlGeomTypeSetBoundsProg(OWLGeomType type, OWLModule module, const char *progName)
@ OWL_UCHAR
Definition: owl_host.h:171
double y
Definition: owl_host.h:228
OWL_API void owlTrianglesSetIndices(OWLGeom triangles, OWLBuffer indices, size_t count, size_t stride, size_t offset)
Definition: owl_host.h:233
float w
Definition: owl_host.h:241
struct _OWLVariable * OWLVariable
Definition: owl_host.h:292
@ OWL_BUFFER_POINTER
Definition: owl_host.h:114
uint64_t x
Definition: owl_host.h:226
OWL_API void owlInstanceGroupSetInstanceIDs(OWLGroup group, const uint32_t *instanceIDs)
double w
Definition: owl_host.h:242
OWL_API void owlRayGenRelease(OWLRayGen rayGen)
Definition: owl_host.h:244
Definition: owl_host.h:284
@ OWL_TEXTURE_2D
Definition: owl_host.h:127
struct _OWL_double4 owl4d
double z
Definition: owl_host.h:235
struct _OWL_double2 owl2d
@ OWL_SBT_RAYGENS
Definition: owl_host.h:102
OWL_API void owlVariableSetTexture(OWLVariable variable, OWLTexture value)
OWLDataType
Definition: owl_host.h:108
@ OWL_LONG
Definition: owl_host.h:150
Definition: owl_host.h:234
struct _OWLBuffer * OWLBuffer
Definition: owl_host.h:288
int32_t OWL_int
Definition: owl_host.h:218
@ OWL_UINT3
Definition: owl_host.h:147
@ OWL_TEXTURE_NEAREST
Definition: owl_host.h:264
OWL_API void owlAsyncLaunch2D(OWLRayGen rayGen, int dims_x, int dims_y, OWLParams params)
@ OWL_UINT2
Definition: owl_host.h:146
int32_t y
Definition: owl_host.h:237
@ OWL_INT2
Definition: owl_host.h:141
struct _OWL_ulong2 owl2ul
float x
Definition: owl_host.h:241
@ OWL_AFFINE3F
Definition: owl_host.h:186
uint32_t offset
Definition: owl_host.h:249
OWL_API OWLRayGen owlRayGenCreate(OWLContext context, OWLModule module, const char *programName, size_t sizeOfVarStruct, OWLVarDecl *vars, int numVars)
OWL_API OWLGeom owlGeomCreate(OWLContext context, OWLGeomType type)
OWL_API void owlInstanceGroupSetTransforms(OWLGroup group, uint32_t timeStep, const float *floatsForThisStimeStep, OWLMatrixFormat matrixFormat OWL_IF_CPP(=OWL_MATRIX_FORMAT_OWL))
OWLTexelFormat
Definition: owl_host.h:254
int32_t x
Definition: owl_host.h:237
double OWL_double
Definition: owl_host.h:217
@ OWL_SBT_GEOMS
Definition: owl_host.h:101
uint64_t OWL_ulong
Definition: owl_host.h:221
int64_t z
Definition: owl_host.h:232
@ OWL_BUFFER_ID
Definition: owl_host.h:113
struct _OWLLaunchParams * OWLLaunchParams
Definition: owl_host.h:306
int32_t y
Definition: owl_host.h:223
owl3f vz
Definition: owl_host.h:244
double x
Definition: owl_host.h:235
uint32_t y
Definition: owl_host.h:231
OWL_API void owlBufferDestroy(OWLBuffer buffer)
OWL_API OWLGroup owlTrianglesGeomGroupCreate(OWLContext context, size_t numGeometries, OWLGeom *initValues)
@ OWL_INVALID_TYPE
Definition: owl_host.h:109
OWLDataType type
Definition: owl_host.h:248
@ OWL_BUFFER_SIZE
Definition: owl_host.h:112
float OWL_float
Definition: owl_host.h:216
int32_t z
Definition: owl_host.h:230
uint64_t z
Definition: owl_host.h:240
uint32_t OWL_uint
Definition: owl_host.h:219