Skip to content

Commit 9d111e7

Browse files
authored
Merge pull request #8 from mortacious/feature/optix_7_5_support
Feature/optix 7 5 support
2 parents 7f29d4f + 483f8ca commit 9d111e7

File tree

9 files changed

+386
-120
lines changed

9 files changed

+386
-120
lines changed

optix/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.1.1"
1+
__version__ = "0.1.2"

optix/build.pxd

Lines changed: 89 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
304374
cdef class Instance(OptixObject):
305375
cdef OptixInstance instance
306376
cdef AccelerationStructure _traversable

0 commit comments

Comments
 (0)