OWL
Loading...
Searching...
No Matches
owl_host.h
1// ======================================================================== //
2// Copyright 2019-2021 Ingo Wald //
3// //
4// Licensed under the Apache License, Version 2.0 (the "License"); //
5// you may not use this file except in compliance with the License. //
6// You may obtain a copy of the License at //
7// //
8// http://www.apache.org/licenses/LICENSE-2.0 //
9// //
10// Unless required by applicable law or agreed to in writing, software //
11// distributed under the License is distributed on an "AS IS" BASIS, //
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //
13// See the License for the specific language governing permissions and //
14// limitations under the License. //
15// ======================================================================== //
16
17#pragma once
18
19#include <cuda.h>
20#include <driver_types.h>
21#include <optix.h>
22
23#include <sys/types.h>
24#include <stdint.h>
25
26#ifdef __cplusplus
27# include <cstddef>
28#endif
29
32#if OPTIX_VERSION >= 70400
33# define OWL_CAN_DO_CURVES 1
34#endif
35
36#if OPTIX_VERSION >= 70500
37# define OWL_CAN_DO_SPHERES 1
38#endif
39
40
41#if defined(_MSC_VER)
42# define OWL_DLL_EXPORT __declspec(dllexport)
43# define OWL_DLL_IMPORT __declspec(dllimport)
44#elif defined(__clang__) || defined(__GNUC__)
45# define OWL_DLL_EXPORT __attribute__((visibility("default")))
46# define OWL_DLL_IMPORT __attribute__((visibility("default")))
47#else
48# define OWL_DLL_EXPORT
49# define OWL_DLL_IMPORT
50#endif
51
52#ifdef __cplusplus
53# define OWL_IF_CPP(a) a
54#else
55# define OWL_IF_CPP(a) /* drop it */
56#endif
57
58# ifdef __cplusplus
59# define OWL_API extern "C" OWL_DLL_EXPORT
60# else
61# define OWL_API /* bla */
62# endif
63
64
65#define OWL_OFFSETOF(type,member) \
66 (uint32_t)((char *)(&((struct type *)0)-> member ) \
67 - \
68 (char *)(((struct type *)0)))
69
70
73typedef enum
74 {
80 OWL_MATRIX_FORMAT_COLUMN_MAJOR=0,
81
85 OWL_MATRIX_FORMAT_OWL=OWL_MATRIX_FORMAT_COLUMN_MAJOR,
86
90 OWL_MATRIX_FORMAT_ROW_MAJOR
91 } OWLMatrixFormat;
92
93typedef enum
94 {
95 OWL_SBT_HITGROUPS = 0x1,
96 OWL_SBT_GEOMS = OWL_SBT_HITGROUPS,
97 OWL_SBT_RAYGENS = 0x2,
98 OWL_SBT_MISSPROGS = 0x4,
99 OWL_SBT_ALL = 0x7
100 } OWLBuildSBTFlags;
101
102typedef enum
103 {
104 OWL_INVALID_TYPE = 0,
105
106 OWL_BUFFER=10,
108 OWL_BUFFER_SIZE,
109 OWL_BUFFER_ID,
110 OWL_BUFFER_POINTER,
111 OWL_BUFPTR=OWL_BUFFER_POINTER,
112
113 OWL_GROUP=20,
114
119 OWL_DEVICE=30,
120
122 OWL_TEXTURE=40,
123 OWL_TEXTURE_2D=OWL_TEXTURE,
124
125
126 /* all types that are naively copyable should be below this value,
127 all that aren't should be above */
128 _OWL_BEGIN_COPYABLE_TYPES = 1000,
129
130
131 OWL_FLOAT=1000,
132 OWL_FLOAT2,
133 OWL_FLOAT3,
134 OWL_FLOAT4,
135
136 OWL_INT=1010,
137 OWL_INT2,
138 OWL_INT3,
139 OWL_INT4,
140
141 OWL_UINT=1020,
142 OWL_UINT2,
143 OWL_UINT3,
144 OWL_UINT4,
145
146 OWL_LONG=1030,
147 OWL_LONG2,
148 OWL_LONG3,
149 OWL_LONG4,
150
151 OWL_ULONG=1040,
152 OWL_ULONG2,
153 OWL_ULONG3,
154 OWL_ULONG4,
155
156 OWL_DOUBLE=1050,
157 OWL_DOUBLE2,
158 OWL_DOUBLE3,
159 OWL_DOUBLE4,
160
161 OWL_CHAR=1060,
162 OWL_CHAR2,
163 OWL_CHAR3,
164 OWL_CHAR4,
165
167 OWL_UCHAR=1070,
168 OWL_UCHAR2,
169 OWL_UCHAR3,
170 OWL_UCHAR4,
171
172 OWL_SHORT=1080,
173 OWL_SHORT2,
174 OWL_SHORT3,
175 OWL_SHORT4,
176
178 OWL_USHORT=1090,
179 OWL_USHORT2,
180 OWL_USHORT3,
181 OWL_USHORT4,
182
183 OWL_BOOL,
184 OWL_BOOL2,
185 OWL_BOOL3,
186 OWL_BOOL4,
187
194 OWL_RAW_POINTER=OWL_ULONG,
195 OWL_BYTE = OWL_UCHAR,
196 // OWL_BOOL = OWL_UCHAR,
197 // OWL_BOOL2 = OWL_UCHAR2,
198 // OWL_BOOL3 = OWL_UCHAR3,
199 // OWL_BOOL4 = OWL_UCHAR4,
200
201
202 /* matrix formats */
203 OWL_AFFINE3F=1300,
204
209 OWL_USER_TYPE_BEGIN=10000
210 }
211 OWLDataType;
212
213#define OWL_USER_TYPE(userType) ((OWLDataType)(OWL_USER_TYPE_BEGIN+sizeof(userType)))
214
215typedef enum
216 {
217 // soon to be deprecated old naming
218 OWL_GEOMETRY_USER,
219 // new naming, to be consistent with type OLWGeom (not OWLGeometry):
220 OWL_GEOM_USER=OWL_GEOMETRY_USER,
221 // soon to be deprecated old naming
222 OWL_GEOMETRY_TRIANGLES,
223 // new naming, to be consistent with type OLWGeom (not OWLGeometry):
224 OWL_GEOM_TRIANGLES=OWL_GEOMETRY_TRIANGLES,
225 OWL_TRIANGLES=OWL_GEOMETRY_TRIANGLES,
227 OWL_GEOMETRY_CURVES,
229 OWL_GEOMETRY_SPHERES
230 }
231 OWLGeomKind;
232
233#define OWL_ALL_RAY_TYPES -1
234
235
236typedef float OWL_float;
237typedef double OWL_double;
238typedef int32_t OWL_int;
239typedef uint32_t OWL_uint;
240typedef int64_t OWL_long;
241typedef uint64_t OWL_ulong;
242
243typedef struct _OWL_int2 { int32_t x,y; } owl2i;
244typedef struct _OWL_uint2 { int32_t x,y; } owl2ui;
245typedef struct _OWL_long2 { int64_t x,y; } owl2l;
246typedef struct _OWL_ulong2 { uint64_t x,y; } owl2ul;
247typedef struct _OWL_float2 { float x,y; } owl2f;
248typedef struct _OWL_double2 { double x,y; } owl2d;
249
250typedef struct _OWL_int3 { int32_t x,y,z; } owl3i;
251typedef struct _OWL_uint3 { uint32_t x,y,z; } owl3ui;
252typedef struct _OWL_long3 { int64_t x,y,z; } owl3l;
253typedef struct _OWL_ulong3 { uint64_t x,y,z; } owl3ul;
254typedef struct _OWL_float3 { float x,y,z; } owl3f;
255typedef struct _OWL_double3 { double x,y,z; } owl3d;
256
257typedef struct _OWL_int4 { int32_t x,y,z,w; } owl4i;
258typedef struct _OWL_uint4 { uint32_t x,y,z,w; } owl4ui;
259typedef struct _OWL_long4 { int64_t x,y,z,w; } owl4l;
260typedef struct _OWL_ulong4 { uint64_t x,y,z,w; } owl4ul;
261typedef struct _OWL_float4 { float x,y,z,w; } owl4f;
262typedef struct _OWL_double4 { double x,y,z,w; } owl4d;
263
264typedef struct _OWL_affine3f { owl3f vx,vy,vz,t; } owl4x3f;
265
266typedef struct _OWLVarDecl {
267 const char *name;
268 OWLDataType type;
269 uint32_t offset;
270} OWLVarDecl;
271
272typedef struct _OWLBoundValueDecl {
273 OWLVarDecl var;
274 void *boundValuePtr;
276
277
279typedef enum {
280 OWL_TEXEL_FORMAT_RGBA8,
281 OWL_TEXEL_FORMAT_RGBA32F,
282 OWL_TEXEL_FORMAT_R8,
283 OWL_TEXEL_FORMAT_R32F
284}
285OWLTexelFormat;
286
288typedef enum {
289 OWL_TEXTURE_NEAREST,
290 OWL_TEXTURE_LINEAR
291}
292OWLTextureFilterMode;
293
295typedef enum {
296 OWL_TEXTURE_WRAP,
297 OWL_TEXTURE_CLAMP,
298 OWL_TEXTURE_BORDER,
299 OWL_TEXTURE_MIRROR
300}
301OWLTextureAddressMode;
302
304typedef enum {
305 OWL_COLOR_SPACE_LINEAR,
306 OWL_COLOR_SPACE_SRGB
307}
308OWLTextureColorSpace;
309
310// ------------------------------------------------------------------
311// device-objects - size of those _HAS_ to match the device-side
312// definition of these types
313// ------------------------------------------------------------------
314typedef OptixTraversableHandle OWLDeviceTraversable;
315typedef struct _OWLDeviceBuffer2D { void *d_pointer; owl2i dims; } OWLDeviceBuffer2D;
316
317
318typedef struct _OWLContext *OWLContext;
319typedef struct _OWLBuffer *OWLBuffer;
320typedef struct _OWLTexture *OWLTexture;
321typedef struct _OWLGeom *OWLGeom;
322typedef struct _OWLGeomType *OWLGeomType;
323typedef struct _OWLVariable *OWLVariable;
324typedef struct _OWLModule *OWLModule;
325typedef struct _OWLGroup *OWLGroup;
326typedef struct _OWLRayGen *OWLRayGen;
327typedef struct _OWLMissProg *OWLMissProg;
337typedef struct _OWLLaunchParams *OWLLaunchParams, *OWLParams, *OWLGlobals;
338
339OWL_API void owlBuildPrograms(OWLContext context);
340OWL_API void owlBuildPipeline(OWLContext context);
341OWL_API void owlBuildSBT(OWLContext context,
342 OWLBuildSBTFlags flags OWL_IF_CPP(=OWL_SBT_ALL));
343
345OWL_API int32_t
346owlGetDeviceCount(OWLContext context);
347
363OWL_API OWLContext
364owlContextCreate(int32_t *requestedDeviceIDs OWL_IF_CPP(=nullptr),
365 int numDevices OWL_IF_CPP(=0));
366
367OWL_API void
368owlContextDestroy(OWLContext context);
369
374OWL_API void
375owlEnableCurves(OWLContext _context);
376
381OWL_API void
382owlEnableSpheres(OWLContext _context);
383
388OWL_API void
389owlEnableMotionBlur(OWLContext _context);
390
396OWL_API void
397owlContextDisablePerGeometrySBTRecords(OWLContext context);
398
402OWL_API void
403owlContextSetRayTypeCount(OWLContext context,
404 size_t numRayTypes);
405
406/* Set number of attributes for passing data from custom Intersection programs
407 to ClosestHit programs. Default 2. Has no effect once programs are built.*/
408OWL_API void
409owlContextSetNumAttributeValues(OWLContext context,
410 size_t numAttributeValues);
411
415OWL_API void
416owlContextSetNumPayloadValues(OWLContext context,
417 size_t numRayPayloadValues);
418
425OWL_API void
426owlContextSetBoundLaunchParamValues(OWLContext context,
427 const OWLBoundValueDecl *boundValues,
428 int numBoundValues);
429
452OWL_API void
453owlSetMaxInstancingDepth(OWLContext context,
454 int32_t maxInstanceDepth);
455
456/* return the cuda stream associated with the given device. */
457OWL_API CUstream
458owlContextGetStream(OWLContext context, int deviceID);
459
460/* return the optix context associated with the given device. */
461OWL_API OptixDeviceContext
462owlContextGetOptixContext(OWLContext context, int deviceID);
463
464OWL_API OWLModule
465owlModuleCreate(OWLContext context,
466 const char *ptxCode);
467
468/* Note, this does not currently support bounds programs */
469OWL_API OWLModule
470owlModuleCreateFromIR(OWLContext context,
471 uint8_t* bytes, uint32_t numBytes);
472
473OWL_API void
474owlModuleRelease(OWLModule module);
475
476OWL_API OWLGeom
477owlGeomCreate(OWLContext context,
478 OWLGeomType type);
479
480OWL_API void
481owlGeomRelease(OWLGeom geometry);
482
483OWL_API OWLParams
484owlParamsCreate(OWLContext context,
485 size_t sizeOfVarStruct,
486 const OWLVarDecl *vars,
487 int numVars);
488
489OWL_API OWLRayGen
490owlRayGenCreate(OWLContext context,
491 OWLModule module,
492 const char *programName,
493 size_t sizeOfVarStruct,
494 const OWLVarDecl *vars,
495 int numVars);
496
497OWL_API void
498owlRayGenRelease(OWLRayGen rayGen);
499
507OWL_API OWLMissProg
508owlMissProgCreate(OWLContext context,
509 OWLModule module,
510 const char *programName,
511 size_t sizeOfVarStruct,
512 const OWLVarDecl *vars,
513 int numVars);
514
516OWL_API void
517owlMissProgSet(OWLContext context,
518 int rayType,
519 OWLMissProg missProgToUse);
520
521// ------------------------------------------------------------------
536OWL_API OWLGroup
537owlUserGeomGroupCreate(OWLContext context,
538 size_t numGeometries,
539 OWLGeom *arrayOfChildGeoms,
540 unsigned int buildFlags OWL_IF_CPP(=0));
541
542
543// ------------------------------------------------------------------
558OWL_API OWLGroup
559owlTrianglesGeomGroupCreate(OWLContext context,
560 size_t numGeometries,
561 OWLGeom *initValues,
562 unsigned int buildFlags OWL_IF_CPP(=0));
563
564
565
566// ------------------------------------------------------------------
585OWL_API OWLGroup
586owlCurvesGeomGroupCreate(OWLContext context,
587 size_t numCurveGeometries,
588 OWLGeom *curveGeometries,
589 unsigned int buildFlags OWL_IF_CPP(=0));
590
591// ------------------------------------------------------------------
606OWL_API OWLGroup
607owlSphereGeomGroupCreate(OWLContext context,
608 size_t numGeometries,
609 OWLGeom *arrayOfChildGeoms,
610 unsigned int buildFlags OWL_IF_CPP(=0));
611
612
613// ------------------------------------------------------------------
630OWL_API OWLGroup
631owlInstanceGroupCreate(OWLContext context,
632
634 size_t numInstances,
635
644 const OWLGroup *initGroups OWL_IF_CPP(= nullptr),
645
656 const uint32_t *initInstanceIDs OWL_IF_CPP(= nullptr),
657
662 const float *initTransforms OWL_IF_CPP(= nullptr),
663 OWLMatrixFormat matrixFormat OWL_IF_CPP(=OWL_MATRIX_FORMAT_OWL),
664
667 unsigned int buildFlags OWL_IF_CPP(=0),
668
672 bool useInstanceProgram OWL_IF_CPP(=false)
673 );
674
675
676OWL_API void
677owlGroupRelease(OWLGroup group);
678
679OWL_API void owlGroupBuildAccel(OWLGroup group, OWLParams params OWL_IF_CPP(=nullptr));
680OWL_API void owlGroupRefitAccel(OWLGroup group, OWLParams params OWL_IF_CPP(=nullptr));
681
688OWL_API void
689owlGroupGetAccelSize(OWLGroup group,
690 size_t *p_memFinal,
691 size_t *p_memPeak);
692
696OWL_API uint32_t
697owlGroupGetSBTOffset(OWLGroup group);
698
699OWL_API OWLGeomType
700owlGeomTypeCreate(OWLContext context,
701 OWLGeomKind kind,
702 size_t sizeOfVarStruct,
703 const OWLVarDecl *vars,
704 int numVars);
705
706
711OWL_API OWLTexture
712owlTexture2DCreate(OWLContext context,
713 OWLTexelFormat texelFormat,
715 uint32_t size_x,
717 uint32_t size_y,
718 const void *texels,
719 OWLTextureFilterMode filterMode OWL_IF_CPP(=OWL_TEXTURE_LINEAR),
720 OWLTextureAddressMode addressMode OWL_IF_CPP(=OWL_TEXTURE_CLAMP),
721 OWLTextureColorSpace colorSpace OWL_IF_CPP(=OWL_COLOR_SPACE_LINEAR),
724 uint32_t linePitchInBytes OWL_IF_CPP(=0)
725 );
726
729OWL_API void
730owlTexture2DDestroy(OWLTexture texture);
731
734OWL_API CUtexObject
735owlTextureGetObject(OWLTexture texture, int deviceID);
736
739OWL_API OWLBuffer
740owlDeviceBufferCreate(OWLContext context,
741 OWLDataType type,
742 size_t count,
743 const void *init);
744
748OWL_API OWLBuffer
749owlHostPinnedBufferCreate(OWLContext context,
750 OWLDataType type,
751 size_t count);
752
756OWL_API OWLBuffer
757owlManagedMemoryBufferCreate(OWLContext context,
758 OWLDataType type,
759 size_t count,
760 const void *init);
761
764OWL_API OWLBuffer
765owlGraphicsBufferCreate(OWLContext context,
766 OWLDataType type,
767 size_t count,
768 cudaGraphicsResource_t resource);
769
773OWL_API void
774owlBufferRelease(OWLBuffer buffer);
775
780OWL_API void
781owlBufferDestroy(OWLBuffer buffer);
782
783OWL_API void
784owlGraphicsBufferMap(OWLBuffer buffer);
785
786OWL_API void
787owlGraphicsBufferUnmap(OWLBuffer buffer);
788
797OWL_API const void *
798owlBufferGetPointer(OWLBuffer buffer, int deviceID);
799
800OWL_API OptixTraversableHandle
801owlGroupGetTraversable(OWLGroup group, int deviceID);
802
803OWL_API void
804owlBufferResize(OWLBuffer buffer, size_t newItemCount);
805
806OWL_API size_t
807owlBufferSizeInBytes(OWLBuffer buffer);
808
831OWL_API void
832owlBufferUpload(OWLBuffer buffer,
833 const void *hostPtr,
834 size_t destItemOffset OWL_IF_CPP(=0),
835 size_t numItems OWL_IF_CPP(=size_t(-1)));
836
840OWL_API void
841owlBufferClear(OWLBuffer buffer);
842
846OWL_API void
847owlRayGenLaunch2D(OWLRayGen rayGen, int dims_x, int dims_y);
848
850OWL_API void
851owlRayGenLaunch3D(OWLRayGen rayGen, int dims_x, int dims_y, int dims_z);
852
857OWL_API void
858owlLaunch2D(OWLRayGen rayGen, int dims_x, int dims_y,
859 OWLParams params);
860
862OWL_API void
863owlLaunch3D(OWLRayGen rayGen, int dims_x, int dims_y, int dims_z,
864 OWLParams params);
865
870OWL_API void
871owlAsyncLaunch2D(OWLRayGen rayGen, int dims_x, int dims_y,
872 OWLParams params);
873
875OWL_API void
876owlAsyncLaunch3D(OWLRayGen rayGen, int dims_x, int dims_y, int dims_z,
877 OWLParams params);
878
881OWL_API void
882owlAsyncLaunch2DOnDevice(OWLRayGen rayGen, int dims_x, int dims_y,
883 int deviceID, OWLParams params);
884
885
886OWL_API CUstream
887owlParamsGetCudaStream(OWLParams params, int deviceID);
888
890OWL_API void
891owlLaunchSync(OWLParams params);
892
893// ==================================================================
894// "Triangles" functions
895// ==================================================================
896OWL_API void owlTrianglesSetVertices(OWLGeom triangles,
897 OWLBuffer vertices,
898 size_t count,
899 size_t stride,
900 size_t offset);
901OWL_API void owlTrianglesSetMotionVertices(OWLGeom triangles,
909 size_t numKeys,
910 OWLBuffer *vertexArrays,
911 size_t count,
912 size_t stride,
913 size_t offset);
914OWL_API void owlTrianglesSetIndices(OWLGeom triangles,
915 OWLBuffer indices,
916 size_t count,
917 size_t stride,
918 size_t offset);
919
920// ==================================================================
921// "Curves" functions
922// ==================================================================
923
928OWL_API void owlCurvesSetDegree(OWLGeomType curvesGeomType,
929 int degree,
930 bool forceCaps);
931
934OWL_API void owlCurvesSetControlPoints(OWLGeom curvesGeom,
935 int numControlPoints,
939 OWLBuffer vertices,
944 OWLBuffer widths);
945
946OWL_API void owlCurvesSetSegmentIndices(OWLGeom curvesGeom,
947 int numSegmentIndices,
948 OWLBuffer segmentIndices);
949
950// ==================================================================
951// "Spheres" functions
952// ==================================================================
953
956OWL_API void owlSpheresSetVertices(OWLGeom spheresGeom,
957 int numSpheres,
960 OWLBuffer vertices,
963 OWLBuffer radius);
964
965// -------------------------------------------------------
966// group/hierarchy creation and setting
967// -------------------------------------------------------
968OWL_API void
969owlInstanceGroupSetChild(OWLGroup group,
970 int whichChild,
971 OWLGroup child);
972
975OWL_API void
976owlInstanceGroupSetTransform(OWLGroup group,
977 int whichChild,
978 const float *floats,
979 OWLMatrixFormat matrixFormat
980 OWL_IF_CPP(=OWL_MATRIX_FORMAT_OWL));
981
985OWL_API void
986owlInstanceGroupSetTransforms(OWLGroup group,
989 uint32_t timeStep,
990 const float *floatsForThisStimeStep,
991 OWLMatrixFormat matrixFormat
992 OWL_IF_CPP(=OWL_MATRIX_FORMAT_OWL));
993
999OWL_API void
1000owlInstanceGroupSetInstanceIDs(OWLGroup group,
1001 const uint32_t *instanceIDs);
1002
1003OWL_API void
1004owlInstanceGroupSetVisibilityMasks(OWLGroup group,
1005 const uint8_t *visibilityMasks);
1006
1007OWL_API void
1008owlInstanceGroupSetInstanceProg(OWLGroup group,
1009 OWLModule module,
1010 const char *progName);
1011
1012// todo, finish implementing this...
1013// OWL_API void
1014// owlInstanceGroupSetMotionInstanceProg(OWLGroup group,
1015// OWLModule module,
1016// const char *progName);
1017
1018OWL_API void
1019owlGeomTypeSetClosestHit(OWLGeomType type,
1020 int rayType,
1021 OWLModule module,
1022 const char *progName);
1023
1024OWL_API void
1025owlGeomTypeSetAnyHit(OWLGeomType type,
1026 int rayType,
1027 OWLModule module,
1028 const char *progName);
1029
1030OWL_API void
1031owlGeomTypeSetIntersectProg(OWLGeomType type,
1032 int rayType,
1033 OWLModule module,
1034 const char *progName);
1035
1036OWL_API void
1037owlGeomTypeSetBoundsProg(OWLGeomType type,
1038 OWLModule module,
1039 const char *progName);
1040
1041OWL_API void
1042owlGeomTypeSetMotionBoundsProg(OWLGeomType type,
1043 OWLModule module,
1044 const char *progName);
1045
1048OWL_API void
1049owlGeomSetPrimCount(OWLGeom geom,
1050 size_t primCount);
1051
1054OWL_API void
1055owlGeomSetBoundsBuffer(OWLGeom _geom,
1056 OWLBuffer aabbArray);
1057
1060OWL_API void
1061owlGeomSetMotionBoundsBuffers(OWLGeom _geom,
1062 OWLBuffer aabbArrayKey0,
1063 OWLBuffer aabbArrayKey1);
1064
1065// -------------------------------------------------------
1066// VariableGet for the various types
1067// -------------------------------------------------------
1068OWL_API OWLVariable
1069owlGeomGetVariable(OWLGeom geom,
1070 const char *varName);
1071
1072OWL_API OWLVariable
1073owlRayGenGetVariable(OWLRayGen geom,
1074 const char *varName);
1075
1076OWL_API OWLVariable
1077owlMissProgGetVariable(OWLMissProg geom,
1078 const char *varName);
1079
1080OWL_API OWLVariable
1081owlParamsGetVariable(OWLParams object,
1082 const char *varName);
1083
1084OWL_API void
1085owlVariableRelease(OWLVariable variable);
1086
1087// -------------------------------------------------------
1088// VariableSet for different variable types
1089// -------------------------------------------------------
1090
1091// setters for bools (c++ only)
1092#ifdef __cplusplus
1093OWL_API void owlVariableSet1b(OWLVariable var, bool val);
1094OWL_API void owlVariableSet2b(OWLVariable var, bool x, bool y);
1095OWL_API void owlVariableSet3b(OWLVariable var, bool x, bool y, bool z);
1096OWL_API void owlVariableSet4b(OWLVariable var, bool x, bool y, bool z, bool w);
1097OWL_API void owlVariableSet2bv(OWLVariable var, const bool *val);
1098OWL_API void owlVariableSet3bv(OWLVariable var, const bool *val);
1099OWL_API void owlVariableSet4bv(OWLVariable var, const bool *val);
1100#endif
1101
1102// setters for 8-bit signed ints
1103OWL_API void owlVariableSet1c(OWLVariable var, int8_t val);
1104OWL_API void owlVariableSet2c(OWLVariable var, int8_t x, int8_t y);
1105OWL_API void owlVariableSet3c(OWLVariable var, int8_t x, int8_t y, int8_t z);
1106OWL_API void owlVariableSet4c(OWLVariable var, int8_t x, int8_t y, int8_t z, int8_t w);
1107OWL_API void owlVariableSet2cv(OWLVariable var, const int8_t *val);
1108OWL_API void owlVariableSet3cv(OWLVariable var, const int8_t *val);
1109OWL_API void owlVariableSet4cv(OWLVariable var, const int8_t *val);
1110
1111// setters for 8-bit unsigned ints
1112OWL_API void owlVariableSet1uc(OWLVariable var, uint8_t val);
1113OWL_API void owlVariableSet2uc(OWLVariable var, uint8_t x, uint8_t y);
1114OWL_API void owlVariableSet3uc(OWLVariable var, uint8_t x, uint8_t y, uint8_t z);
1115OWL_API void owlVariableSet4uc(OWLVariable var, uint8_t x, uint8_t y, uint8_t z, uint8_t w);
1116OWL_API void owlVariableSet2ucv(OWLVariable var, const uint8_t *val);
1117OWL_API void owlVariableSet3ucv(OWLVariable var, const uint8_t *val);
1118OWL_API void owlVariableSet4ucv(OWLVariable var, const uint8_t *val);
1119
1120// setters for 16-bit signed ints
1121OWL_API void owlVariableSet1s(OWLVariable var, int16_t val);
1122OWL_API void owlVariableSet2s(OWLVariable var, int16_t x, int16_t y);
1123OWL_API void owlVariableSet3s(OWLVariable var, int16_t x, int16_t y, int16_t z);
1124OWL_API void owlVariableSet4s(OWLVariable var, int16_t x, int16_t y, int16_t z, int16_t w);
1125OWL_API void owlVariableSet2sv(OWLVariable var, const int16_t *val);
1126OWL_API void owlVariableSet3sv(OWLVariable var, const int16_t *val);
1127OWL_API void owlVariableSet4sv(OWLVariable var, const int16_t *val);
1128
1129// setters for 16-bit unsigned ints
1130OWL_API void owlVariableSet1us(OWLVariable var, uint16_t val);
1131OWL_API void owlVariableSet2us(OWLVariable var, uint16_t x, uint16_t y);
1132OWL_API void owlVariableSet3us(OWLVariable var, uint16_t x, uint16_t y, uint16_t z);
1133OWL_API void owlVariableSet4us(OWLVariable var, uint16_t x, uint16_t y, uint16_t z, uint16_t w);
1134OWL_API void owlVariableSet2usv(OWLVariable var, const uint16_t *val);
1135OWL_API void owlVariableSet3usv(OWLVariable var, const uint16_t *val);
1136OWL_API void owlVariableSet4usv(OWLVariable var, const uint16_t *val);
1137
1138// setters for 32-bit floats
1139OWL_API void owlVariableSet1f(OWLVariable var, float val);
1140OWL_API void owlVariableSet2f(OWLVariable var, float x, float y);
1141OWL_API void owlVariableSet3f(OWLVariable var, float x, float y, float z);
1142OWL_API void owlVariableSet4f(OWLVariable var, float x, float y, float z, float w);
1143OWL_API void owlVariableSet2fv(OWLVariable var, const float *val);
1144OWL_API void owlVariableSet3fv(OWLVariable var, const float *val);
1145OWL_API void owlVariableSet4fv(OWLVariable var, const float *val);
1146
1147// setters for 32-bit signed ints
1148OWL_API void owlVariableSet1i(OWLVariable var, int32_t val);
1149OWL_API void owlVariableSet2i(OWLVariable var, int32_t x, int32_t y);
1150OWL_API void owlVariableSet3i(OWLVariable var, int32_t x, int32_t y, int32_t z);
1151OWL_API void owlVariableSet4i(OWLVariable var, int32_t x, int32_t y, int32_t z, int32_t w);
1152OWL_API void owlVariableSet2iv(OWLVariable var, const int32_t *val);
1153OWL_API void owlVariableSet3iv(OWLVariable var, const int32_t *val);
1154OWL_API void owlVariableSet4iv(OWLVariable var, const int32_t *val);
1155
1156// setters for 32-bit unsigned ints
1157OWL_API void owlVariableSet1ui(OWLVariable var, uint32_t val);
1158OWL_API void owlVariableSet2ui(OWLVariable var, uint32_t x, uint32_t y);
1159OWL_API void owlVariableSet3ui(OWLVariable var, uint32_t x, uint32_t y, uint32_t z);
1160OWL_API void owlVariableSet4ui(OWLVariable var, uint32_t x, uint32_t y, uint32_t z, uint32_t w);
1161OWL_API void owlVariableSet2uiv(OWLVariable var, const uint32_t *val);
1162OWL_API void owlVariableSet3uiv(OWLVariable var, const uint32_t *val);
1163OWL_API void owlVariableSet4uiv(OWLVariable var, const uint32_t *val);
1164
1165// setters for 64-bit doubles
1166OWL_API void owlVariableSet1d(OWLVariable var, double val);
1167OWL_API void owlVariableSet2d(OWLVariable var, double x, double y);
1168OWL_API void owlVariableSet3d(OWLVariable var, double x, double y, double z);
1169OWL_API void owlVariableSet4d(OWLVariable var, double x, double y, double z, double w);
1170OWL_API void owlVariableSet2dv(OWLVariable var, const double *val);
1171OWL_API void owlVariableSet3dv(OWLVariable var, const double *val);
1172OWL_API void owlVariableSet4dv(OWLVariable var, const double *val);
1173
1174// setters for 64-bit signed ints
1175OWL_API void owlVariableSet1l(OWLVariable var, int64_t val);
1176OWL_API void owlVariableSet2l(OWLVariable var, int64_t x, int64_t y);
1177OWL_API void owlVariableSet3l(OWLVariable var, int64_t x, int64_t y, int64_t z);
1178OWL_API void owlVariableSet4l(OWLVariable var, int64_t x, int64_t y, int64_t z, int64_t w);
1179OWL_API void owlVariableSet2lv(OWLVariable var, const int64_t *val);
1180OWL_API void owlVariableSet3lv(OWLVariable var, const int64_t *val);
1181OWL_API void owlVariableSet4lv(OWLVariable var, const int64_t *val);
1182
1183// setters for 64-bit unsigned ints
1184OWL_API void owlVariableSet1ul(OWLVariable var, uint64_t val);
1185OWL_API void owlVariableSet2ul(OWLVariable var, uint64_t x, uint64_t y);
1186OWL_API void owlVariableSet3ul(OWLVariable var, uint64_t x, uint64_t y, uint64_t z);
1187OWL_API void owlVariableSet4ul(OWLVariable var, uint64_t x, uint64_t y, uint64_t z, uint64_t w);
1188OWL_API void owlVariableSet2ulv(OWLVariable var, const uint64_t *val);
1189OWL_API void owlVariableSet3ulv(OWLVariable var, const uint64_t *val);
1190OWL_API void owlVariableSet4ulv(OWLVariable var, const uint64_t *val);
1191
1192// setters for 'meta' variables
1193OWL_API void owlVariableSetGroup (OWLVariable variable, OWLGroup value);
1194OWL_API void owlVariableSetTexture(OWLVariable variable, OWLTexture value);
1195OWL_API void owlVariableSetBuffer (OWLVariable variable, OWLBuffer value);
1196OWL_API void owlVariableSetRaw (OWLVariable variable, const void *valuePtr,
1197 int devID OWL_IF_CPP(=-1));
1198OWL_API void owlVariableSetPointer(OWLVariable variable, const void *valuePtr);
1199
1200#ifdef __cplusplus
1201// ------------------------------------------------------------------
1202// setters for variables of type "bool" (bools only on c++)
1203// ------------------------------------------------------------------
1204
1205// setters for variables on "RayGen"s
1206OWL_API void owlRayGenSet1b(OWLRayGen var, const char *name, bool val);
1207OWL_API void owlRayGenSet2b(OWLRayGen var, const char *name, bool x, bool y);
1208OWL_API void owlRayGenSet3b(OWLRayGen var, const char *name, bool x, bool y, bool z);
1209OWL_API void owlRayGenSet4b(OWLRayGen var, const char *name, bool x, bool y, bool z, bool w);
1210OWL_API void owlRayGenSet2bv(OWLRayGen var, const char *name, const bool *val);
1211OWL_API void owlRayGenSet3bv(OWLRayGen var, const char *name, const bool *val);
1212OWL_API void owlRayGenSet4bv(OWLRayGen var, const char *name, const bool *val);
1213
1214// setters for variables on "MissProg"s
1215OWL_API void owlMissProgSet1b(OWLMissProg var, const char *name, bool val);
1216OWL_API void owlMissProgSet2b(OWLMissProg var, const char *name, bool x, bool y);
1217OWL_API void owlMissProgSet3b(OWLMissProg var, const char *name, bool x, bool y, bool z);
1218OWL_API void owlMissProgSet4b(OWLMissProg var, const char *name, bool x, bool y, bool z, bool w);
1219OWL_API void owlMissProgSet2bv(OWLMissProg var, const char *name, const bool *val);
1220OWL_API void owlMissProgSet3bv(OWLMissProg var, const char *name, const bool *val);
1221OWL_API void owlMissProgSet4bv(OWLMissProg var, const char *name, const bool *val);
1222
1223// setters for variables on "Geom"s
1224OWL_API void owlGeomSet1b(OWLGeom var, const char *name, bool val);
1225OWL_API void owlGeomSet2b(OWLGeom var, const char *name, bool x, bool y);
1226OWL_API void owlGeomSet3b(OWLGeom var, const char *name, bool x, bool y, bool z);
1227OWL_API void owlGeomSet4b(OWLGeom var, const char *name, bool x, bool y, bool z, bool w);
1228OWL_API void owlGeomSet2bv(OWLGeom var, const char *name, const bool *val);
1229OWL_API void owlGeomSet3bv(OWLGeom var, const char *name, const bool *val);
1230OWL_API void owlGeomSet4bv(OWLGeom var, const char *name, const bool *val);
1231
1232// setters for variables on "Params"s
1233OWL_API void owlParamsSet1b(OWLParams var, const char *name, bool val);
1234OWL_API void owlParamsSet2b(OWLParams var, const char *name, bool x, bool y);
1235OWL_API void owlParamsSet3b(OWLParams var, const char *name, bool x, bool y, bool z);
1236OWL_API void owlParamsSet4b(OWLParams var, const char *name, bool x, bool y, bool z, bool w);
1237OWL_API void owlParamsSet2bv(OWLParams var, const char *name, const bool *val);
1238OWL_API void owlParamsSet3bv(OWLParams var, const char *name, const bool *val);
1239OWL_API void owlParamsSet4bv(OWLParams var, const char *name, const bool *val);
1240#endif
1241
1242// ------------------------------------------------------------------
1243// setters for variables of type "char"
1244// ------------------------------------------------------------------
1245
1246// setters for variables on "RayGen"s
1247OWL_API void owlRayGenSet1c(OWLRayGen obj, const char *name, char val);
1248OWL_API void owlRayGenSet2c(OWLRayGen obj, const char *name, char x, char y);
1249OWL_API void owlRayGenSet3c(OWLRayGen obj, const char *name, char x, char y, char z);
1250OWL_API void owlRayGenSet4c(OWLRayGen obj, const char *name, char x, char y, char z, char w);
1251OWL_API void owlRayGenSet2cv(OWLRayGen obj, const char *name, const char *val);
1252OWL_API void owlRayGenSet3cv(OWLRayGen obj, const char *name, const char *val);
1253OWL_API void owlRayGenSet4cv(OWLRayGen obj, const char *name, const char *val);
1254
1255// setters for variables on "MissProg"s
1256OWL_API void owlMissProgSet1c(OWLMissProg obj, const char *name, char val);
1257OWL_API void owlMissProgSet2c(OWLMissProg obj, const char *name, char x, char y);
1258OWL_API void owlMissProgSet3c(OWLMissProg obj, const char *name, char x, char y, char z);
1259OWL_API void owlMissProgSet4c(OWLMissProg obj, const char *name, char x, char y, char z, char w);
1260OWL_API void owlMissProgSet2cv(OWLMissProg obj, const char *name, const char *val);
1261OWL_API void owlMissProgSet3cv(OWLMissProg obj, const char *name, const char *val);
1262OWL_API void owlMissProgSet4cv(OWLMissProg obj, const char *name, const char *val);
1263
1264// setters for variables on "Geom"s
1265OWL_API void owlGeomSet1c(OWLGeom obj, const char *name, char val);
1266OWL_API void owlGeomSet2c(OWLGeom obj, const char *name, char x, char y);
1267OWL_API void owlGeomSet3c(OWLGeom obj, const char *name, char x, char y, char z);
1268OWL_API void owlGeomSet4c(OWLGeom obj, const char *name, char x, char y, char z, char w);
1269OWL_API void owlGeomSet2cv(OWLGeom obj, const char *name, const char *val);
1270OWL_API void owlGeomSet3cv(OWLGeom obj, const char *name, const char *val);
1271OWL_API void owlGeomSet4cv(OWLGeom obj, const char *name, const char *val);
1272
1273// setters for variables on "Params"s
1274OWL_API void owlParamsSet1c(OWLParams obj, const char *name, char val);
1275OWL_API void owlParamsSet2c(OWLParams obj, const char *name, char x, char y);
1276OWL_API void owlParamsSet3c(OWLParams obj, const char *name, char x, char y, char z);
1277OWL_API void owlParamsSet4c(OWLParams obj, const char *name, char x, char y, char z, char w);
1278OWL_API void owlParamsSet2cv(OWLParams obj, const char *name, const char *val);
1279OWL_API void owlParamsSet3cv(OWLParams obj, const char *name, const char *val);
1280OWL_API void owlParamsSet4cv(OWLParams obj, const char *name, const char *val);
1281
1282// ------------------------------------------------------------------
1283// setters for variables of type "uint8_t"
1284// ------------------------------------------------------------------
1285
1286// setters for variables on "RayGen"s
1287OWL_API void owlRayGenSet1uc(OWLRayGen obj, const char *name, uint8_t val);
1288OWL_API void owlRayGenSet2uc(OWLRayGen obj, const char *name, uint8_t x, uint8_t y);
1289OWL_API void owlRayGenSet3uc(OWLRayGen obj, const char *name, uint8_t x, uint8_t y, uint8_t z);
1290OWL_API void owlRayGenSet4uc(OWLRayGen obj, const char *name, uint8_t x, uint8_t y, uint8_t z, uint8_t w);
1291OWL_API void owlRayGenSet2ucv(OWLRayGen obj, const char *name, const uint8_t *val);
1292OWL_API void owlRayGenSet3ucv(OWLRayGen obj, const char *name, const uint8_t *val);
1293OWL_API void owlRayGenSet4ucv(OWLRayGen obj, const char *name, const uint8_t *val);
1294
1295// setters for variables on "MissProg"s
1296OWL_API void owlMissProgSet1uc(OWLMissProg obj, const char *name, uint8_t val);
1297OWL_API void owlMissProgSet2uc(OWLMissProg obj, const char *name, uint8_t x, uint8_t y);
1298OWL_API void owlMissProgSet3uc(OWLMissProg obj, const char *name, uint8_t x, uint8_t y, uint8_t z);
1299OWL_API void owlMissProgSet4uc(OWLMissProg obj, const char *name, uint8_t x, uint8_t y, uint8_t z, uint8_t w);
1300OWL_API void owlMissProgSet2ucv(OWLMissProg obj, const char *name, const uint8_t *val);
1301OWL_API void owlMissProgSet3ucv(OWLMissProg obj, const char *name, const uint8_t *val);
1302OWL_API void owlMissProgSet4ucv(OWLMissProg obj, const char *name, const uint8_t *val);
1303
1304// setters for variables on "Geom"s
1305OWL_API void owlGeomSet1uc(OWLGeom obj, const char *name, uint8_t val);
1306OWL_API void owlGeomSet2uc(OWLGeom obj, const char *name, uint8_t x, uint8_t y);
1307OWL_API void owlGeomSet3uc(OWLGeom obj, const char *name, uint8_t x, uint8_t y, uint8_t z);
1308OWL_API void owlGeomSet4uc(OWLGeom obj, const char *name, uint8_t x, uint8_t y, uint8_t z, uint8_t w);
1309OWL_API void owlGeomSet2ucv(OWLGeom obj, const char *name, const uint8_t *val);
1310OWL_API void owlGeomSet3ucv(OWLGeom obj, const char *name, const uint8_t *val);
1311OWL_API void owlGeomSet4ucv(OWLGeom obj, const char *name, const uint8_t *val);
1312
1313// setters for variables on "Params"s
1314OWL_API void owlParamsSet1uc(OWLParams obj, const char *name, uint8_t val);
1315OWL_API void owlParamsSet2uc(OWLParams obj, const char *name, uint8_t x, uint8_t y);
1316OWL_API void owlParamsSet3uc(OWLParams obj, const char *name, uint8_t x, uint8_t y, uint8_t z);
1317OWL_API void owlParamsSet4uc(OWLParams obj, const char *name, uint8_t x, uint8_t y, uint8_t z, uint8_t w);
1318OWL_API void owlParamsSet2ucv(OWLParams obj, const char *name, const uint8_t *val);
1319OWL_API void owlParamsSet3ucv(OWLParams obj, const char *name, const uint8_t *val);
1320OWL_API void owlParamsSet4ucv(OWLParams obj, const char *name, const uint8_t *val);
1321
1322// ------------------------------------------------------------------
1323// setters for variables of type "int16_t"
1324// ------------------------------------------------------------------
1325
1326// setters for variables on "RayGen"s
1327OWL_API void owlRayGenSet1s(OWLRayGen obj, const char *name, int16_t val);
1328OWL_API void owlRayGenSet2s(OWLRayGen obj, const char *name, int16_t x, int16_t y);
1329OWL_API void owlRayGenSet3s(OWLRayGen obj, const char *name, int16_t x, int16_t y, int16_t z);
1330OWL_API void owlRayGenSet4s(OWLRayGen obj, const char *name, int16_t x, int16_t y, int16_t z, int16_t w);
1331OWL_API void owlRayGenSet2sv(OWLRayGen obj, const char *name, const int16_t *val);
1332OWL_API void owlRayGenSet3sv(OWLRayGen obj, const char *name, const int16_t *val);
1333OWL_API void owlRayGenSet4sv(OWLRayGen obj, const char *name, const int16_t *val);
1334
1335// setters for variables on "MissProg"s
1336OWL_API void owlMissProgSet1s(OWLMissProg obj, const char *name, int16_t val);
1337OWL_API void owlMissProgSet2s(OWLMissProg obj, const char *name, int16_t x, int16_t y);
1338OWL_API void owlMissProgSet3s(OWLMissProg obj, const char *name, int16_t x, int16_t y, int16_t z);
1339OWL_API void owlMissProgSet4s(OWLMissProg obj, const char *name, int16_t x, int16_t y, int16_t z, int16_t w);
1340OWL_API void owlMissProgSet2sv(OWLMissProg obj, const char *name, const int16_t *val);
1341OWL_API void owlMissProgSet3sv(OWLMissProg obj, const char *name, const int16_t *val);
1342OWL_API void owlMissProgSet4sv(OWLMissProg obj, const char *name, const int16_t *val);
1343
1344// setters for variables on "Geom"s
1345OWL_API void owlGeomSet1s(OWLGeom obj, const char *name, int16_t val);
1346OWL_API void owlGeomSet2s(OWLGeom obj, const char *name, int16_t x, int16_t y);
1347OWL_API void owlGeomSet3s(OWLGeom obj, const char *name, int16_t x, int16_t y, int16_t z);
1348OWL_API void owlGeomSet4s(OWLGeom obj, const char *name, int16_t x, int16_t y, int16_t z, int16_t w);
1349OWL_API void owlGeomSet2sv(OWLGeom obj, const char *name, const int16_t *val);
1350OWL_API void owlGeomSet3sv(OWLGeom obj, const char *name, const int16_t *val);
1351OWL_API void owlGeomSet4sv(OWLGeom obj, const char *name, const int16_t *val);
1352
1353// setters for variables on "Params"s
1354OWL_API void owlParamsSet1s(OWLParams obj, const char *name, int16_t val);
1355OWL_API void owlParamsSet2s(OWLParams obj, const char *name, int16_t x, int16_t y);
1356OWL_API void owlParamsSet3s(OWLParams obj, const char *name, int16_t x, int16_t y, int16_t z);
1357OWL_API void owlParamsSet4s(OWLParams obj, const char *name, int16_t x, int16_t y, int16_t z, int16_t w);
1358OWL_API void owlParamsSet2sv(OWLParams obj, const char *name, const int16_t *val);
1359OWL_API void owlParamsSet3sv(OWLParams obj, const char *name, const int16_t *val);
1360OWL_API void owlParamsSet4sv(OWLParams obj, const char *name, const int16_t *val);
1361
1362// ------------------------------------------------------------------
1363// setters for variables of type "uint16_t"
1364// ------------------------------------------------------------------
1365
1366// setters for variables on "RayGen"s
1367OWL_API void owlRayGenSet1us(OWLRayGen obj, const char *name, uint16_t val);
1368OWL_API void owlRayGenSet2us(OWLRayGen obj, const char *name, uint16_t x, uint16_t y);
1369OWL_API void owlRayGenSet3us(OWLRayGen obj, const char *name, uint16_t x, uint16_t y, uint16_t z);
1370OWL_API void owlRayGenSet4us(OWLRayGen obj, const char *name, uint16_t x, uint16_t y, uint16_t z, uint16_t w);
1371OWL_API void owlRayGenSet2usv(OWLRayGen obj, const char *name, const uint16_t *val);
1372OWL_API void owlRayGenSet3usv(OWLRayGen obj, const char *name, const uint16_t *val);
1373OWL_API void owlRayGenSet4usv(OWLRayGen obj, const char *name, const uint16_t *val);
1374
1375// setters for variables on "MissProg"s
1376OWL_API void owlMissProgSet1us(OWLMissProg obj, const char *name, uint16_t val);
1377OWL_API void owlMissProgSet2us(OWLMissProg obj, const char *name, uint16_t x, uint16_t y);
1378OWL_API void owlMissProgSet3us(OWLMissProg obj, const char *name, uint16_t x, uint16_t y, uint16_t z);
1379OWL_API void owlMissProgSet4us(OWLMissProg obj, const char *name, uint16_t x, uint16_t y, uint16_t z, uint16_t w);
1380OWL_API void owlMissProgSet2usv(OWLMissProg obj, const char *name, const uint16_t *val);
1381OWL_API void owlMissProgSet3usv(OWLMissProg obj, const char *name, const uint16_t *val);
1382OWL_API void owlMissProgSet4usv(OWLMissProg obj, const char *name, const uint16_t *val);
1383
1384// setters for variables on "Geom"s
1385OWL_API void owlGeomSet1us(OWLGeom obj, const char *name, uint16_t val);
1386OWL_API void owlGeomSet2us(OWLGeom obj, const char *name, uint16_t x, uint16_t y);
1387OWL_API void owlGeomSet3us(OWLGeom obj, const char *name, uint16_t x, uint16_t y, uint16_t z);
1388OWL_API void owlGeomSet4us(OWLGeom obj, const char *name, uint16_t x, uint16_t y, uint16_t z, uint16_t w);
1389OWL_API void owlGeomSet2usv(OWLGeom obj, const char *name, const uint16_t *val);
1390OWL_API void owlGeomSet3usv(OWLGeom obj, const char *name, const uint16_t *val);
1391OWL_API void owlGeomSet4usv(OWLGeom obj, const char *name, const uint16_t *val);
1392
1393// setters for variables on "Params"s
1394OWL_API void owlParamsSet1us(OWLParams obj, const char *name, uint16_t val);
1395OWL_API void owlParamsSet2us(OWLParams obj, const char *name, uint16_t x, uint16_t y);
1396OWL_API void owlParamsSet3us(OWLParams obj, const char *name, uint16_t x, uint16_t y, uint16_t z);
1397OWL_API void owlParamsSet4us(OWLParams obj, const char *name, uint16_t x, uint16_t y, uint16_t z, uint16_t w);
1398OWL_API void owlParamsSet2usv(OWLParams obj, const char *name, const uint16_t *val);
1399OWL_API void owlParamsSet3usv(OWLParams obj, const char *name, const uint16_t *val);
1400OWL_API void owlParamsSet4usv(OWLParams obj, const char *name, const uint16_t *val);
1401
1402// ------------------------------------------------------------------
1403// setters for variables of type "int"
1404// ------------------------------------------------------------------
1405
1406// setters for variables on "RayGen"s
1407OWL_API void owlRayGenSet1i(OWLRayGen obj, const char *name, int val);
1408OWL_API void owlRayGenSet2i(OWLRayGen obj, const char *name, int x, int y);
1409OWL_API void owlRayGenSet3i(OWLRayGen obj, const char *name, int x, int y, int z);
1410OWL_API void owlRayGenSet4i(OWLRayGen obj, const char *name, int x, int y, int z, int w);
1411OWL_API void owlRayGenSet2iv(OWLRayGen obj, const char *name, const int *val);
1412OWL_API void owlRayGenSet3iv(OWLRayGen obj, const char *name, const int *val);
1413OWL_API void owlRayGenSet4iv(OWLRayGen obj, const char *name, const int *val);
1414
1415// setters for variables on "MissProg"s
1416OWL_API void owlMissProgSet1i(OWLMissProg obj, const char *name, int val);
1417OWL_API void owlMissProgSet2i(OWLMissProg obj, const char *name, int x, int y);
1418OWL_API void owlMissProgSet3i(OWLMissProg obj, const char *name, int x, int y, int z);
1419OWL_API void owlMissProgSet4i(OWLMissProg obj, const char *name, int x, int y, int z, int w);
1420OWL_API void owlMissProgSet2iv(OWLMissProg obj, const char *name, const int *val);
1421OWL_API void owlMissProgSet3iv(OWLMissProg obj, const char *name, const int *val);
1422OWL_API void owlMissProgSet4iv(OWLMissProg obj, const char *name, const int *val);
1423
1424// setters for variables on "Geom"s
1425OWL_API void owlGeomSet1i(OWLGeom obj, const char *name, int val);
1426OWL_API void owlGeomSet2i(OWLGeom obj, const char *name, int x, int y);
1427OWL_API void owlGeomSet3i(OWLGeom obj, const char *name, int x, int y, int z);
1428OWL_API void owlGeomSet4i(OWLGeom obj, const char *name, int x, int y, int z, int w);
1429OWL_API void owlGeomSet2iv(OWLGeom obj, const char *name, const int *val);
1430OWL_API void owlGeomSet3iv(OWLGeom obj, const char *name, const int *val);
1431OWL_API void owlGeomSet4iv(OWLGeom obj, const char *name, const int *val);
1432
1433// setters for variables on "Params"s
1434OWL_API void owlParamsSet1i(OWLParams obj, const char *name, int val);
1435OWL_API void owlParamsSet2i(OWLParams obj, const char *name, int x, int y);
1436OWL_API void owlParamsSet3i(OWLParams obj, const char *name, int x, int y, int z);
1437OWL_API void owlParamsSet4i(OWLParams obj, const char *name, int x, int y, int z, int w);
1438OWL_API void owlParamsSet2iv(OWLParams obj, const char *name, const int *val);
1439OWL_API void owlParamsSet3iv(OWLParams obj, const char *name, const int *val);
1440OWL_API void owlParamsSet4iv(OWLParams obj, const char *name, const int *val);
1441
1442// ------------------------------------------------------------------
1443// setters for variables of type "uint32_t"
1444// ------------------------------------------------------------------
1445
1446// setters for variables on "RayGen"s
1447OWL_API void owlRayGenSet1ui(OWLRayGen obj, const char *name, uint32_t val);
1448OWL_API void owlRayGenSet2ui(OWLRayGen obj, const char *name, uint32_t x, uint32_t y);
1449OWL_API void owlRayGenSet3ui(OWLRayGen obj, const char *name, uint32_t x, uint32_t y, uint32_t z);
1450OWL_API void owlRayGenSet4ui(OWLRayGen obj, const char *name, uint32_t x, uint32_t y, uint32_t z, uint32_t w);
1451OWL_API void owlRayGenSet2uiv(OWLRayGen obj, const char *name, const uint32_t *val);
1452OWL_API void owlRayGenSet3uiv(OWLRayGen obj, const char *name, const uint32_t *val);
1453OWL_API void owlRayGenSet4uiv(OWLRayGen obj, const char *name, const uint32_t *val);
1454
1455// setters for variables on "MissProg"s
1456OWL_API void owlMissProgSet1ui(OWLMissProg obj, const char *name, uint32_t val);
1457OWL_API void owlMissProgSet2ui(OWLMissProg obj, const char *name, uint32_t x, uint32_t y);
1458OWL_API void owlMissProgSet3ui(OWLMissProg obj, const char *name, uint32_t x, uint32_t y, uint32_t z);
1459OWL_API void owlMissProgSet4ui(OWLMissProg obj, const char *name, uint32_t x, uint32_t y, uint32_t z, uint32_t w);
1460OWL_API void owlMissProgSet2uiv(OWLMissProg obj, const char *name, const uint32_t *val);
1461OWL_API void owlMissProgSet3uiv(OWLMissProg obj, const char *name, const uint32_t *val);
1462OWL_API void owlMissProgSet4uiv(OWLMissProg obj, const char *name, const uint32_t *val);
1463
1464// setters for variables on "Geom"s
1465OWL_API void owlGeomSet1ui(OWLGeom obj, const char *name, uint32_t val);
1466OWL_API void owlGeomSet2ui(OWLGeom obj, const char *name, uint32_t x, uint32_t y);
1467OWL_API void owlGeomSet3ui(OWLGeom obj, const char *name, uint32_t x, uint32_t y, uint32_t z);
1468OWL_API void owlGeomSet4ui(OWLGeom obj, const char *name, uint32_t x, uint32_t y, uint32_t z, uint32_t w);
1469OWL_API void owlGeomSet2uiv(OWLGeom obj, const char *name, const uint32_t *val);
1470OWL_API void owlGeomSet3uiv(OWLGeom obj, const char *name, const uint32_t *val);
1471OWL_API void owlGeomSet4uiv(OWLGeom obj, const char *name, const uint32_t *val);
1472
1473// setters for variables on "Params"s
1474OWL_API void owlParamsSet1ui(OWLParams obj, const char *name, uint32_t val);
1475OWL_API void owlParamsSet2ui(OWLParams obj, const char *name, uint32_t x, uint32_t y);
1476OWL_API void owlParamsSet3ui(OWLParams obj, const char *name, uint32_t x, uint32_t y, uint32_t z);
1477OWL_API void owlParamsSet4ui(OWLParams obj, const char *name, uint32_t x, uint32_t y, uint32_t z, uint32_t w);
1478OWL_API void owlParamsSet2uiv(OWLParams obj, const char *name, const uint32_t *val);
1479OWL_API void owlParamsSet3uiv(OWLParams obj, const char *name, const uint32_t *val);
1480OWL_API void owlParamsSet4uiv(OWLParams obj, const char *name, const uint32_t *val);
1481
1482// ------------------------------------------------------------------
1483// setters for variables of type "float"
1484// ------------------------------------------------------------------
1485
1486// setters for variables on "RayGen"s
1487OWL_API void owlRayGenSet1f(OWLRayGen obj, const char *name, float val);
1488OWL_API void owlRayGenSet2f(OWLRayGen obj, const char *name, float x, float y);
1489OWL_API void owlRayGenSet3f(OWLRayGen obj, const char *name, float x, float y, float z);
1490OWL_API void owlRayGenSet4f(OWLRayGen obj, const char *name, float x, float y, float z, float w);
1491OWL_API void owlRayGenSet2fv(OWLRayGen obj, const char *name, const float *val);
1492OWL_API void owlRayGenSet3fv(OWLRayGen obj, const char *name, const float *val);
1493OWL_API void owlRayGenSet4fv(OWLRayGen obj, const char *name, const float *val);
1494
1495// setters for variables on "MissProg"s
1496OWL_API void owlMissProgSet1f(OWLMissProg obj, const char *name, float val);
1497OWL_API void owlMissProgSet2f(OWLMissProg obj, const char *name, float x, float y);
1498OWL_API void owlMissProgSet3f(OWLMissProg obj, const char *name, float x, float y, float z);
1499OWL_API void owlMissProgSet4f(OWLMissProg obj, const char *name, float x, float y, float z, float w);
1500OWL_API void owlMissProgSet2fv(OWLMissProg obj, const char *name, const float *val);
1501OWL_API void owlMissProgSet3fv(OWLMissProg obj, const char *name, const float *val);
1502OWL_API void owlMissProgSet4fv(OWLMissProg obj, const char *name, const float *val);
1503
1504// setters for variables on "Geom"s
1505OWL_API void owlGeomSet1f(OWLGeom obj, const char *name, float val);
1506OWL_API void owlGeomSet2f(OWLGeom obj, const char *name, float x, float y);
1507OWL_API void owlGeomSet3f(OWLGeom obj, const char *name, float x, float y, float z);
1508OWL_API void owlGeomSet4f(OWLGeom obj, const char *name, float x, float y, float z, float w);
1509OWL_API void owlGeomSet2fv(OWLGeom obj, const char *name, const float *val);
1510OWL_API void owlGeomSet3fv(OWLGeom obj, const char *name, const float *val);
1511OWL_API void owlGeomSet4fv(OWLGeom obj, const char *name, const float *val);
1512
1513// setters for variables on "Params"s
1514OWL_API void owlParamsSet1f(OWLParams obj, const char *name, float val);
1515OWL_API void owlParamsSet2f(OWLParams obj, const char *name, float x, float y);
1516OWL_API void owlParamsSet3f(OWLParams obj, const char *name, float x, float y, float z);
1517OWL_API void owlParamsSet4f(OWLParams obj, const char *name, float x, float y, float z, float w);
1518OWL_API void owlParamsSet2fv(OWLParams obj, const char *name, const float *val);
1519OWL_API void owlParamsSet3fv(OWLParams obj, const char *name, const float *val);
1520OWL_API void owlParamsSet4fv(OWLParams obj, const char *name, const float *val);
1521
1522// ------------------------------------------------------------------
1523// setters for variables of type "double"
1524// ------------------------------------------------------------------
1525
1526// setters for variables on "RayGen"s
1527OWL_API void owlRayGenSet1d(OWLRayGen obj, const char *name, double val);
1528OWL_API void owlRayGenSet2d(OWLRayGen obj, const char *name, double x, double y);
1529OWL_API void owlRayGenSet3d(OWLRayGen obj, const char *name, double x, double y, double z);
1530OWL_API void owlRayGenSet4d(OWLRayGen obj, const char *name, double x, double y, double z, double w);
1531OWL_API void owlRayGenSet2dv(OWLRayGen obj, const char *name, const double *val);
1532OWL_API void owlRayGenSet3dv(OWLRayGen obj, const char *name, const double *val);
1533OWL_API void owlRayGenSet4dv(OWLRayGen obj, const char *name, const double *val);
1534
1535// setters for variables on "MissProg"s
1536OWL_API void owlMissProgSet1d(OWLMissProg obj, const char *name, double val);
1537OWL_API void owlMissProgSet2d(OWLMissProg obj, const char *name, double x, double y);
1538OWL_API void owlMissProgSet3d(OWLMissProg obj, const char *name, double x, double y, double z);
1539OWL_API void owlMissProgSet4d(OWLMissProg obj, const char *name, double x, double y, double z, double w);
1540OWL_API void owlMissProgSet2dv(OWLMissProg obj, const char *name, const double *val);
1541OWL_API void owlMissProgSet3dv(OWLMissProg obj, const char *name, const double *val);
1542OWL_API void owlMissProgSet4dv(OWLMissProg obj, const char *name, const double *val);
1543
1544// setters for variables on "Geom"s
1545OWL_API void owlGeomSet1d(OWLGeom obj, const char *name, double val);
1546OWL_API void owlGeomSet2d(OWLGeom obj, const char *name, double x, double y);
1547OWL_API void owlGeomSet3d(OWLGeom obj, const char *name, double x, double y, double z);
1548OWL_API void owlGeomSet4d(OWLGeom obj, const char *name, double x, double y, double z, double w);
1549OWL_API void owlGeomSet2dv(OWLGeom obj, const char *name, const double *val);
1550OWL_API void owlGeomSet3dv(OWLGeom obj, const char *name, const double *val);
1551OWL_API void owlGeomSet4dv(OWLGeom obj, const char *name, const double *val);
1552
1553// setters for variables on "Params"s
1554OWL_API void owlParamsSet1d(OWLParams obj, const char *name, double val);
1555OWL_API void owlParamsSet2d(OWLParams obj, const char *name, double x, double y);
1556OWL_API void owlParamsSet3d(OWLParams obj, const char *name, double x, double y, double z);
1557OWL_API void owlParamsSet4d(OWLParams obj, const char *name, double x, double y, double z, double w);
1558OWL_API void owlParamsSet2dv(OWLParams obj, const char *name, const double *val);
1559OWL_API void owlParamsSet3dv(OWLParams obj, const char *name, const double *val);
1560OWL_API void owlParamsSet4dv(OWLParams obj, const char *name, const double *val);
1561
1562// ------------------------------------------------------------------
1563// setters for variables of type "int64_t"
1564// ------------------------------------------------------------------
1565
1566// setters for variables on "RayGen"s
1567OWL_API void owlRayGenSet1l(OWLRayGen obj, const char *name, int64_t val);
1568OWL_API void owlRayGenSet2l(OWLRayGen obj, const char *name, int64_t x, int64_t y);
1569OWL_API void owlRayGenSet3l(OWLRayGen obj, const char *name, int64_t x, int64_t y, int64_t z);
1570OWL_API void owlRayGenSet4l(OWLRayGen obj, const char *name, int64_t x, int64_t y, int64_t z, int64_t w);
1571OWL_API void owlRayGenSet2lv(OWLRayGen obj, const char *name, const int64_t *val);
1572OWL_API void owlRayGenSet3lv(OWLRayGen obj, const char *name, const int64_t *val);
1573OWL_API void owlRayGenSet4lv(OWLRayGen obj, const char *name, const int64_t *val);
1574
1575// setters for variables on "MissProg"s
1576OWL_API void owlMissProgSet1l(OWLMissProg obj, const char *name, int64_t val);
1577OWL_API void owlMissProgSet2l(OWLMissProg obj, const char *name, int64_t x, int64_t y);
1578OWL_API void owlMissProgSet3l(OWLMissProg obj, const char *name, int64_t x, int64_t y, int64_t z);
1579OWL_API void owlMissProgSet4l(OWLMissProg obj, const char *name, int64_t x, int64_t y, int64_t z, int64_t w);
1580OWL_API void owlMissProgSet2lv(OWLMissProg obj, const char *name, const int64_t *val);
1581OWL_API void owlMissProgSet3lv(OWLMissProg obj, const char *name, const int64_t *val);
1582OWL_API void owlMissProgSet4lv(OWLMissProg obj, const char *name, const int64_t *val);
1583
1584// setters for variables on "Geom"s
1585OWL_API void owlGeomSet1l(OWLGeom obj, const char *name, int64_t val);
1586OWL_API void owlGeomSet2l(OWLGeom obj, const char *name, int64_t x, int64_t y);
1587OWL_API void owlGeomSet3l(OWLGeom obj, const char *name, int64_t x, int64_t y, int64_t z);
1588OWL_API void owlGeomSet4l(OWLGeom obj, const char *name, int64_t x, int64_t y, int64_t z, int64_t w);
1589OWL_API void owlGeomSet2lv(OWLGeom obj, const char *name, const int64_t *val);
1590OWL_API void owlGeomSet3lv(OWLGeom obj, const char *name, const int64_t *val);
1591OWL_API void owlGeomSet4lv(OWLGeom obj, const char *name, const int64_t *val);
1592
1593// setters for variables on "Params"s
1594OWL_API void owlParamsSet1l(OWLParams obj, const char *name, int64_t val);
1595OWL_API void owlParamsSet2l(OWLParams obj, const char *name, int64_t x, int64_t y);
1596OWL_API void owlParamsSet3l(OWLParams obj, const char *name, int64_t x, int64_t y, int64_t z);
1597OWL_API void owlParamsSet4l(OWLParams obj, const char *name, int64_t x, int64_t y, int64_t z, int64_t w);
1598OWL_API void owlParamsSet2lv(OWLParams obj, const char *name, const int64_t *val);
1599OWL_API void owlParamsSet3lv(OWLParams obj, const char *name, const int64_t *val);
1600OWL_API void owlParamsSet4lv(OWLParams obj, const char *name, const int64_t *val);
1601
1602// ------------------------------------------------------------------
1603// setters for variables of type "uint64_t"
1604// ------------------------------------------------------------------
1605
1606// setters for variables on "RayGen"s
1607OWL_API void owlRayGenSet1ul(OWLRayGen obj, const char *name, uint64_t val);
1608OWL_API void owlRayGenSet2ul(OWLRayGen obj, const char *name, uint64_t x, uint64_t y);
1609OWL_API void owlRayGenSet3ul(OWLRayGen obj, const char *name, uint64_t x, uint64_t y, uint64_t z);
1610OWL_API void owlRayGenSet4ul(OWLRayGen obj, const char *name, uint64_t x, uint64_t y, uint64_t z, uint64_t w);
1611OWL_API void owlRayGenSet2ulv(OWLRayGen obj, const char *name, const uint64_t *val);
1612OWL_API void owlRayGenSet3ulv(OWLRayGen obj, const char *name, const uint64_t *val);
1613OWL_API void owlRayGenSet4ulv(OWLRayGen obj, const char *name, const uint64_t *val);
1614
1615// setters for variables on "MissProg"s
1616OWL_API void owlMissProgSet1ul(OWLMissProg obj, const char *name, uint64_t val);
1617OWL_API void owlMissProgSet2ul(OWLMissProg obj, const char *name, uint64_t x, uint64_t y);
1618OWL_API void owlMissProgSet3ul(OWLMissProg obj, const char *name, uint64_t x, uint64_t y, uint64_t z);
1619OWL_API void owlMissProgSet4ul(OWLMissProg obj, const char *name, uint64_t x, uint64_t y, uint64_t z, uint64_t w);
1620OWL_API void owlMissProgSet2ulv(OWLMissProg obj, const char *name, const uint64_t *val);
1621OWL_API void owlMissProgSet3ulv(OWLMissProg obj, const char *name, const uint64_t *val);
1622OWL_API void owlMissProgSet4ulv(OWLMissProg obj, const char *name, const uint64_t *val);
1623
1624// setters for variables on "Geom"s
1625OWL_API void owlGeomSet1ul(OWLGeom obj, const char *name, uint64_t val);
1626OWL_API void owlGeomSet2ul(OWLGeom obj, const char *name, uint64_t x, uint64_t y);
1627OWL_API void owlGeomSet3ul(OWLGeom obj, const char *name, uint64_t x, uint64_t y, uint64_t z);
1628OWL_API void owlGeomSet4ul(OWLGeom obj, const char *name, uint64_t x, uint64_t y, uint64_t z, uint64_t w);
1629OWL_API void owlGeomSet2ulv(OWLGeom obj, const char *name, const uint64_t *val);
1630OWL_API void owlGeomSet3ulv(OWLGeom obj, const char *name, const uint64_t *val);
1631OWL_API void owlGeomSet4ulv(OWLGeom obj, const char *name, const uint64_t *val);
1632
1633// setters for variables on "Params"s
1634OWL_API void owlParamsSet1ul(OWLParams obj, const char *name, uint64_t val);
1635OWL_API void owlParamsSet2ul(OWLParams obj, const char *name, uint64_t x, uint64_t y);
1636OWL_API void owlParamsSet3ul(OWLParams obj, const char *name, uint64_t x, uint64_t y, uint64_t z);
1637OWL_API void owlParamsSet4ul(OWLParams obj, const char *name, uint64_t x, uint64_t y, uint64_t z, uint64_t w);
1638OWL_API void owlParamsSet2ulv(OWLParams obj, const char *name, const uint64_t *val);
1639OWL_API void owlParamsSet3ulv(OWLParams obj, const char *name, const uint64_t *val);
1640OWL_API void owlParamsSet4ulv(OWLParams obj, const char *name, const uint64_t *val);
1641
1642
1643
1644// ------------------------------------------------------------------
1645// setters for "meta" types
1646// ------------------------------------------------------------------
1647
1648// setters for variables on "RayGen"s
1649OWL_API void owlRayGenSetTexture(OWLRayGen obj, const char *name, OWLTexture val);
1650OWL_API void owlRayGenSetPointer(OWLRayGen obj, const char *name, const void *val);
1651OWL_API void owlRayGenSetBuffer(OWLRayGen obj, const char *name, OWLBuffer val);
1652OWL_API void owlRayGenSetGroup(OWLRayGen obj, const char *name, OWLGroup val);
1653OWL_API void owlRayGenSetRaw(OWLRayGen obj, const char *name, const void *val,
1654 int devID OWL_IF_CPP(=-1));
1655
1656// setters for variables on "Geom"s
1657OWL_API void owlGeomSetTexture(OWLGeom obj, const char *name, OWLTexture val);
1658OWL_API void owlGeomSetPointer(OWLGeom obj, const char *name, const void *val);
1659OWL_API void owlGeomSetBuffer(OWLGeom obj, const char *name, OWLBuffer val);
1660OWL_API void owlGeomSetGroup(OWLGeom obj, const char *name, OWLGroup val);
1661OWL_API void owlGeomSetRaw(OWLGeom obj, const char *name, const void *val,
1662 int deviceID OWL_IF_CPP(=-1));
1663
1664// setters for variables on "Params"s
1665OWL_API void owlParamsSetTexture(OWLParams obj, const char *name, OWLTexture val);
1666OWL_API void owlParamsSetPointer(OWLParams obj, const char *name, const void *val);
1667OWL_API void owlParamsSetBuffer(OWLParams obj, const char *name, OWLBuffer val);
1668OWL_API void owlParamsSetGroup(OWLParams obj, const char *name, OWLGroup val);
1669OWL_API void owlParamsSetRaw(OWLParams obj, const char *name, const void *val,
1670 int devID OWL_IF_CPP(=-1));
1671
1672// setters for variables on "MissProg"s
1673OWL_API void owlMissProgSetTexture(OWLMissProg obj, const char *name, OWLTexture val);
1674OWL_API void owlMissProgSetPointer(OWLMissProg obj, const char *name, const void *val);
1675OWL_API void owlMissProgSetBuffer(OWLMissProg obj, const char *name, OWLBuffer val);
1676OWL_API void owlMissProgSetGroup(OWLMissProg obj, const char *name, OWLGroup val);
1677OWL_API void owlMissProgSetRaw(OWLMissProg obj, const char *name, const void *val,
1678 int devID OWL_IF_CPP(=-1));
1679
1680
1681// -------------------------------------------------------
1682// c++ wrappers
1683// -------------------------------------------------------
1684#ifdef __cplusplus
1685// int
1686inline void owlParamsSet2i(OWLParams obj, const char *name, const owl2i &val)
1687{ owlParamsSet2i(obj,name,val.x,val.y); }
1688inline void owlParamsSet3i(OWLParams obj, const char *name, const owl3i &val)
1689{ owlParamsSet3i(obj,name,val.x,val.y,val.z); }
1690inline void owlParamsSet4i(OWLParams obj, const char *name, const owl4i &val)
1691{ owlParamsSet4i(obj,name,val.x,val.y,val.z,val.w); }
1692// uint
1693inline void owlParamsSet2ui(OWLParams obj, const char *name, const owl2ui &val)
1694{ owlParamsSet2ui(obj,name,val.x,val.y); }
1695inline void owlParamsSet3ui(OWLParams obj, const char *name, const owl3ui &val)
1696{ owlParamsSet3ui(obj,name,val.x,val.y,val.z); }
1697inline void owlParamsSet4ui(OWLParams obj, const char *name, const owl4ui &val)
1698{ owlParamsSet4ui(obj,name,val.x,val.y,val.z,val.w); }
1699// float
1700inline void owlParamsSet2f(OWLParams obj, const char *name, const owl2f &val)
1701{ owlParamsSet2f(obj,name,val.x,val.y); }
1702inline void owlParamsSet3f(OWLParams obj, const char *name, const owl3f &val)
1703{ owlParamsSet3f(obj,name,val.x,val.y,val.z); }
1704inline void owlParamsSet4f(OWLParams obj, const char *name, const owl4f &val)
1705{ owlParamsSet4f(obj,name,val.x,val.y,val.z,val.w); }
1706
1707// int
1708inline void owlGeomSet2i(OWLGeom obj, const char *name, const owl2i &val)
1709{ owlGeomSet2i(obj,name,val.x,val.y); }
1710inline void owlGeomSet3i(OWLGeom obj, const char *name, const owl3i &val)
1711{ owlGeomSet3i(obj,name,val.x,val.y,val.z); }
1712inline void owlGeomSet4i(OWLGeom obj, const char *name, const owl4i &val)
1713{ owlGeomSet4i(obj,name,val.x,val.y,val.z,val.w); }
1714// uint
1715inline void owlGeomSet2ui(OWLGeom obj, const char *name, const owl2ui &val)
1716{ owlGeomSet2ui(obj,name,val.x,val.y); }
1717inline void owlGeomSet3ui(OWLGeom obj, const char *name, const owl3ui &val)
1718{ owlGeomSet3ui(obj,name,val.x,val.y,val.z); }
1719inline void owlGeomSet4ui(OWLGeom obj, const char *name, const owl4ui &val)
1720{ owlGeomSet4ui(obj,name,val.x,val.y,val.z,val.w); }
1721// float
1722inline void owlGeomSet2f(OWLGeom obj, const char *name, const owl2f &val)
1723{ owlGeomSet2f(obj,name,val.x,val.y); }
1724inline void owlGeomSet3f(OWLGeom obj, const char *name, const owl3f &val)
1725{ owlGeomSet3f(obj,name,val.x,val.y,val.z); }
1726inline void owlGeomSet4f(OWLGeom obj, const char *name, const owl4f &val)
1727{ owlGeomSet4f(obj,name,val.x,val.y,val.z,val.w); }
1728
1729// int
1730inline void owlMissProgSet2i(OWLMissProg obj, const char *name, const owl2i &val)
1731{ owlMissProgSet2i(obj,name,val.x,val.y); }
1732inline void owlMissProgSet3i(OWLMissProg obj, const char *name, const owl3i &val)
1733{ owlMissProgSet3i(obj,name,val.x,val.y,val.z); }
1734inline void owlMissProgSet4i(OWLMissProg obj, const char *name, const owl4i &val)
1735{ owlMissProgSet4i(obj,name,val.x,val.y,val.z,val.w); }
1736// uint
1737inline void owlMissProgSet2ui(OWLMissProg obj, const char *name, const owl2ui &val)
1738{ owlMissProgSet2ui(obj,name,val.x,val.y); }
1739inline void owlMissProgSet3ui(OWLMissProg obj, const char *name, const owl3ui &val)
1740{ owlMissProgSet3ui(obj,name,val.x,val.y,val.z); }
1741inline void owlMissProgSet4ui(OWLMissProg obj, const char *name, const owl4ui &val)
1742{ owlMissProgSet4ui(obj,name,val.x,val.y,val.z,val.w); }
1743// float
1744inline void owlMissProgSet2f(OWLMissProg obj, const char *name, const owl2f &val)
1745{ owlMissProgSet2f(obj,name,val.x,val.y); }
1746inline void owlMissProgSet3f(OWLMissProg obj, const char *name, const owl3f &val)
1747{ owlMissProgSet3f(obj,name,val.x,val.y,val.z); }
1748inline void owlMissProgSet4f(OWLMissProg obj, const char *name, const owl4f &val)
1749{ owlMissProgSet4f(obj,name,val.x,val.y,val.z,val.w); }
1750
1751// int
1752inline void owlRayGenSet2i(OWLRayGen obj, const char *name, const owl2i &val)
1753{ owlRayGenSet2i(obj,name,val.x,val.y); }
1754inline void owlRayGenSet3i(OWLRayGen obj, const char *name, const owl3i &val)
1755{ owlRayGenSet3i(obj,name,val.x,val.y,val.z); }
1756inline void owlRayGenSet4i(OWLRayGen obj, const char *name, const owl4i &val)
1757{ owlRayGenSet4i(obj,name,val.x,val.y,val.z,val.w); }
1758// uint
1759inline void owlRayGenSet2ui(OWLRayGen obj, const char *name, const owl2ui &val)
1760{ owlRayGenSet2ui(obj,name,val.x,val.y); }
1761inline void owlRayGenSet3ui(OWLRayGen obj, const char *name, const owl3ui &val)
1762{ owlRayGenSet3ui(obj,name,val.x,val.y,val.z); }
1763inline void owlRayGenSet4ui(OWLRayGen obj, const char *name, const owl4ui &val)
1764{ owlRayGenSet4ui(obj,name,val.x,val.y,val.z,val.w); }
1765// float
1766inline void owlRayGenSet2f(OWLRayGen obj, const char *name, const owl2f &val)
1767{ owlRayGenSet2f(obj,name,val.x,val.y); }
1768inline void owlRayGenSet3f(OWLRayGen obj, const char *name, const owl3f &val)
1769{ owlRayGenSet3f(obj,name,val.x,val.y,val.z); }
1770inline void owlRayGenSet4f(OWLRayGen obj, const char *name, const owl4f &val)
1771{ owlRayGenSet4f(obj,name,val.x,val.y,val.z,val.w); }
1772#endif
1773
1774#ifdef __cplusplus
1777 inline void
1778 owlInstanceGroupSetTransform(OWLGroup group,
1779 int childID,
1780 const owl4x3f &xfm)
1781 {
1782 owlInstanceGroupSetTransform(group,childID,(const float *)&xfm,
1783 OWL_MATRIX_FORMAT_OWL);
1784 }
1787inline void
1788owlInstanceGroupSetTransform(OWLGroup group,
1789 int childID,
1790 const owl4x3f *xfm)
1791{
1792 owlInstanceGroupSetTransform(group,childID,(const float *)xfm,
1793 OWL_MATRIX_FORMAT_OWL);
1794}
1795
1796#endif
Definition: owl_host.h:272
Definition: owl_host.h:315
Definition: owl_host.h:266
Definition: owl_host.h:264
Definition: owl_host.h:248
Definition: owl_host.h:255
Definition: owl_host.h:262
Definition: owl_host.h:247
Definition: owl_host.h:254
Definition: owl_host.h:261
Definition: owl_host.h:243
Definition: owl_host.h:250
Definition: owl_host.h:257
Definition: owl_host.h:245
Definition: owl_host.h:252
Definition: owl_host.h:259
Definition: owl_host.h:244
Definition: owl_host.h:251
Definition: owl_host.h:258
Definition: owl_host.h:246
Definition: owl_host.h:253
Definition: owl_host.h:260