@@ -33,11 +33,13 @@ cdef extern from "optix.h" nogil:
3333 float timeBegin
3434 float timeEnd
3535
36+
3637 cdef struct OptixAccelBuildOptions:
3738 unsigned int buildFlags
3839 OptixBuildOperation operation
3940 OptixMotionOptions motionOptions
4041
42+
4143 cdef enum OptixBuildInputType:
4244 OPTIX_BUILD_INPUT_TYPE_TRIANGLES,
4345 OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES,
@@ -51,6 +53,7 @@ cdef extern from "optix.h" nogil:
5153 CUdeviceptr instances
5254 unsigned int numInstances
5355
56+
5457 cdef struct OptixAabb:
5558 float minX
5659 float minY
@@ -59,6 +62,7 @@ cdef extern from "optix.h" nogil:
5962 float maxY
6063 float maxZ
6164
65+
6266 cdef struct OptixBuildInputCustomPrimitiveArray:
6367 const CUdeviceptr * aabbBuffers
6468 unsigned int numPrimitives
@@ -70,19 +74,39 @@ cdef extern from "optix.h" nogil:
7074 unsigned int sbtIndexOffsetStrideInBytes
7175 unsigned int primitiveIndexOffset
7276
73- IF _OPTIX_VERSION_MAJOR == 7 and _OPTIX_VERSION_MINOR > 3 : # switch to new instance flags
77+
78+ IF _OPTIX_VERSION_MAJOR == 7 and _OPTIX_VERSION_MINOR > 4 : # switch to new instance flags
79+ cdef enum OptixPrimitiveType:
80+ OPTIX_PRIMITIVE_TYPE_CUSTOM,
81+ OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE,
82+ OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE,
83+ OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR,
84+ OPTIX_PRIMITIVE_TYPE_ROUND_CATMULLROM,
85+ OPTIX_PRIMITIVE_TYPE_SPHERE,
86+ OPTIX_PRIMITIVE_TYPE_TRIANGLE,
87+ ELIF _OPTIX_VERSION_MAJOR == 7 and _OPTIX_VERSION_MINOR > 3 :
7488 cdef enum OptixPrimitiveType:
7589 OPTIX_PRIMITIVE_TYPE_CUSTOM,
7690 OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE,
7791 OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE,
7892 OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR,
7993 OPTIX_PRIMITIVE_TYPE_ROUND_CATMULLROM,
8094 OPTIX_PRIMITIVE_TYPE_TRIANGLE,
95+ ELSE :
96+ cdef enum OptixPrimitiveType:
97+ OPTIX_PRIMITIVE_TYPE_CUSTOM,
98+ OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE,
99+ OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE,
100+ OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR,
101+ OPTIX_PRIMITIVE_TYPE_TRIANGLE,
102+
81103
104+ IF _OPTIX_VERSION_MAJOR == 7 and _OPTIX_VERSION_MINOR > 3 : # switch to new instance flags
82105 cdef enum OptixCurveEndcapFlags:
83106 OPTIX_CURVE_ENDCAP_DEFAULT,
84107 OPTIX_CURVE_ENDCAP_ON
85108
109+
86110 cdef struct OptixBuildInputCurveArray:
87111 OptixPrimitiveType curveType
88112 unsigned int numPrimitives
@@ -99,13 +123,6 @@ cdef extern from "optix.h" nogil:
99123 unsigned int primitiveIndexOffset
100124 unsigned int endcapFlags
101125 ELSE :
102- cdef enum OptixPrimitiveType:
103- OPTIX_PRIMITIVE_TYPE_CUSTOM,
104- OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE,
105- OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE,
106- OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR,
107- OPTIX_PRIMITIVE_TYPE_TRIANGLE,
108-
109126 cdef struct OptixBuildInputCurveArray:
110127 OptixPrimitiveType curveType
111128 unsigned int numPrimitives
@@ -121,11 +138,13 @@ cdef extern from "optix.h" nogil:
121138 unsigned int flag
122139 unsigned int primitiveIndexOffset
123140
141+
124142 cdef enum OptixIndicesFormat:
125143 OPTIX_INDICES_FORMAT_NONE,
126144 OPTIX_INDICES_FORMAT_UNSIGNED_SHORT3,
127145 OPTIX_INDICES_FORMAT_UNSIGNED_INT3
128146
147+
129148 cdef enum OptixVertexFormat:
130149 OPTIX_VERTEX_FORMAT_NONE,
131150 OPTIX_VERTEX_FORMAT_FLOAT3,
@@ -135,14 +154,23 @@ cdef extern from "optix.h" nogil:
135154 OPTIX_VERTEX_FORMAT_SNORM16_3,
136155 OPTIX_VERTEX_FORMAT_SNORM16_2
137156
157+
138158 cdef enum OptixTransformFormat:
139159 OPTIX_TRANSFORM_FORMAT_NONE,
140160 OPTIX_TRANSFORM_FORMAT_MATRIX_FLOAT12,
141161
142- cdef enum OptixGeometryFlags:
143- OPTIX_GEOMETRY_FLAG_NONE,
144- OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT,
145- OPTIX_GEOMETRY_FLAG_REQUIRE_SINGLE_ANYHIT_CALL
162+
163+ IF _OPTIX_VERSION > 70400 : # switch to new geometry flags
164+ cdef enum OptixGeometryFlags:
165+ OPTIX_GEOMETRY_FLAG_NONE,
166+ OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT,
167+ OPTIX_GEOMETRY_FLAG_REQUIRE_SINGLE_ANYHIT_CALL
168+ OPTIX_GEOMETRY_FLAG_DISABLE_TRIANGLE_FACE_CULLING
169+ ELSE :
170+ cdef enum OptixGeometryFlags:
171+ OPTIX_GEOMETRY_FLAG_NONE,
172+ OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT,
173+ OPTIX_GEOMETRY_FLAG_REQUIRE_SINGLE_ANYHIT_CALL
146174
147175 cdef struct OptixBuildInputTriangleArray:
148176 const CUdeviceptr * vertexBuffers
@@ -162,32 +190,63 @@ cdef extern from "optix.h" nogil:
162190 unsigned int primitiveIndexOffset
163191 OptixTransformFormat transformFormat
164192
165- cdef struct OptixBuildInput:
166- OptixBuildInputType type
167- # union
168- OptixBuildInputTriangleArray triangleArray
169- OptixBuildInputCurveArray curveArray
170- OptixBuildInputCustomPrimitiveArray customPrimitiveArray
171- OptixBuildInputInstanceArray instanceArray
193+
194+ IF _OPTIX_VERSION > 70400 : # switch to new geometry flags
195+ cdef struct OptixBuildInputSphereArray:
196+ const CUdeviceptr* vertexBuffers
197+ unsigned int vertexStrideInBytes
198+ unsigned int numVertices
199+ const CUdeviceptr * radiusBuffers
200+ unsigned int radiusStrideInBytes
201+ int singleRadius
202+ const unsigned int * flags
203+ unsigned int numSbtRecords
204+ CUdeviceptr sbtIndexOffsetBuffer
205+ unsigned int sbtIndexOffsetSizeInBytes
206+ unsigned int sbtIndexOffsetStrideInBytes
207+ unsigned int primitiveIndexOffset
208+
209+ cdef struct OptixBuildInput:
210+ OptixBuildInputType type
211+ # union
212+ OptixBuildInputTriangleArray triangleArray
213+ OptixBuildInputCurveArray curveArray
214+ OptixBuildInputSphereArray sphereArray
215+ OptixBuildInputCustomPrimitiveArray customPrimitiveArray
216+ OptixBuildInputInstanceArray instanceArray
217+ ELSE :
218+ cdef struct OptixBuildInput:
219+ OptixBuildInputType type
220+ # union
221+ OptixBuildInputTriangleArray triangleArray
222+ OptixBuildInputCurveArray curveArray
223+ OptixBuildInputCustomPrimitiveArray customPrimitiveArray
224+ OptixBuildInputInstanceArray instanceArray
225+
172226
173227 cdef struct OptixAccelBufferSizes:
174228 size_t outputSizeInBytes
175229 size_t tempSizeInBytes
176230 size_t tempUpdateSizeInBytes
177231
232+
178233 cdef enum OptixAccelPropertyType:
179234 OPTIX_PROPERTY_TYPE_COMPACTED_SIZE,
180235 OPTIX_PROPERTY_TYPE_AABBS,
181236
237+
182238 cdef struct OptixAccelEmitDesc:
183239 CUdeviceptr result
184240 OptixAccelPropertyType type
185241
242+
186243 ctypedef uintptr_t OptixTraversableHandle
187244
245+
188246 cdef struct OptixAccelRelocationInfo:
189247 unsigned long long info[4 ]
190248
249+
191250 cdef enum OptixTraversableType:
192251 OPTIX_TRAVERSABLE_TYPE_STATIC_TRANSFORM,
193252 OPTIX_TRAVERSABLE_TYPE_MATRIX_MOTION_TRANSFORM,
@@ -301,6 +360,17 @@ cdef class BuildInputCurveArray(BuildInputArray):
301360 cdef object _d_index_buffer
302361
303362
363+ IF _OPTIX_VERSION > 70400 :
364+ cdef class BuildInputSphereArray(BuildInputArray):
365+ cdef OptixBuildInputSphereArray build_input
366+ cdef list _d_vertex_buffers
367+ cdef vector[CUdeviceptr] _d_vertex_buffer_ptrs
368+ cdef list _d_radius_buffers
369+ cdef vector[CUdeviceptr] _d_radius_buffer_ptrs
370+ cdef object _d_sbt_offset_buffer
371+ cdef vector[unsigned int ] _flags
372+
373+
304374cdef class Instance(OptixObject):
305375 cdef OptixInstance instance
306376 cdef AccelerationStructure _traversable
0 commit comments