1////////////////////////////////////////////////////////////////////////////////////////
2// rtcore.h
3
4@@{
5embree2
6=>
7embree3
8}@@
9
10////////////////////////////////////////////////////////////////////////////////////////
11// rtcore_config.h
12
13@@{
14RTCORE_VERSION_MAJOR
15=>
16RTC_VERSION_MAJOR
17}@@
18
19@@{
20RTCORE_VERSION_MINOR
21=>
22RTC_VERSION_MINOR
23}@@
24
25@@{
26RTCORE_VERSION_PATCH
27=>
28RTC_VERSION_PATCH
29}@@
30
31@@{
32RTCORE_VERSION
33=>
34RTC_VERSION
35}@@
36
37@@{
38RTCORE_VERSION_STRING
39=>
40RTC_VERSION_STRING
41}@@
42
43@@{
44RTCORE_FORCEINLINE
45=>
46RTC_FORCEINLINE
47}@@
48
49
50////////////////////////////////////////////////////////////////////////////////////////
51// rtcore_device.h
52
53@@{
54rtcNewDevice ()
55=>
56rtcNewDevice (NULL)
57}@@
58
59@@{
60rtcDeleteDevice (EXPR e0)
61=>
62rtcReleaseDevice (e0)
63}@@
64
65@@{
66rtcInit ()
67=>
68rtcInit (NULL)
69}@@
70
71@@{
72rtcInit (EXPR e0);
73=>
74RTCDevice g_device = rtcInit (e0);
75}@@
76
77@@{
78rtcExit ()
79=>
80rtcReleaseDevice (g_device)
81}@@
82
83@@{
84RTC_SOFTWARE_CACHE_SIZE
85=>
86/*RTC_DEVICE_PROPERTY_SOFTWARE_CACHE_SIZE*/
87}@@
88
89@@{
90RTC_CONFIG_INTERSECT1
91=>
92/*RTC_DEVICE_PROPERTY_NATIVE_RAY1_SUPPORTED (this is always supported)*/
93}@@
94
95@@{
96RTC_CONFIG_INTERSECT4
97=>
98RTC_DEVICE_PROPERTY_NATIVE_RAY4_SUPPORTED
99}@@
100
101@@{
102RTC_CONFIG_INTERSECT8
103=>
104RTC_DEVICE_PROPERTY_NATIVE_RAY8_SUPPORTED
105}@@
106
107@@{
108RTC_CONFIG_INTERSECT16
109=>
110RTC_DEVICE_PROPERTY_NATIVE_RAY16_SUPPORTED
111}@@
112
113@@{
114RTC_CONFIG_INTERSECT_STREAM
115=>
116RTC_DEVICE_PROPERTY_RAY_STREAM_SUPPORTED
117}@@
118
119@@{
120RTC_CONFIG_RAY_MASK
121=>
122RTC_DEVICE_PROPERTY_RAY_MASK_SUPPORTED
123}@@
124
125@@{
126RTC_CONFIG_BACKFACE_CULLING
127=>
128RTC_DEVICE_PROPERTY_BACKFACE_CULLING_ENABLED
129}@@
130
131@@{
132RTC_CONFIG_INTERSECTION_FILTER
133=>
134RTC_DEVICE_PROPERTY_FILTER_FUNCTION_SUPPORTED
135}@@
136
137@@{
138RTC_CONFIG_INTERSECTION_FILTER_RESTORE
139=>
140/*RTC_DEVICE_PROPERTY_INTERSECTION_FILTER_RESTORE*/
141}@@
142
143@@{
144RTC_CONFIG_IGNORE_INVALID_RAYS
145=>
146RTC_DEVICE_PROPERTY_IGNORE_INVALID_RAYS_ENABLED
147}@@
148
149@@{
150RTC_CONFIG_TASKING_SYSTEM
151=>
152RTC_DEVICE_PROPERTY_TASKING_SYSTEM
153}@@
154
155@@{
156RTC_CONFIG_VERSION_MAJOR
157=>
158RTC_DEVICE_PROPERTY_VERSION_MAJOR
159}@@
160
161@@{
162RTC_CONFIG_VERSION_MINOR
163=>
164RTC_DEVICE_PROPERTY_VERSION_MINOR
165}@@
166
167@@{
168RTC_CONFIG_VERSION_PATCH
169=>
170RTC_DEVICE_PROPERTY_VERSION_PATCH
171}@@
172
173@@{
174RTC_CONFIG_VERSION
175=>
176RTC_DEVICE_PROPERTY_VERSION
177}@@
178
179@@{
180RTC_CONFIG_TRIANGLE_GEOMETRY
181=>
182RTC_DEVICE_PROPERTY_TRIANGLE_GEOMETRY_SUPPORTED
183}@@
184
185@@{
186RTC_CONFIG_QUAD_GEOMETRY
187=>
188RTC_DEVICE_PROPERTY_QUAD_GEOMETRY_SUPPORTED
189}@@
190
191@@{
192RTC_CONFIG_LINE_GEOMETRY
193=>
194RTC_DEVICE_PROPERTY_LINE_GEOMETRY_SUPPORTED
195}@@
196
197@@{
198RTC_CONFIG_HAIR_GEOMETRY
199=>
200RTC_DEVICE_PROPERTY_HAIR_GEOMETRY_SUPPORTED
201}@@
202
203@@{
204RTC_CONFIG_SUBDIV_GEOMETRY
205=>
206RTC_DEVICE_PROPERTY_SUBDIVISION_GEOMETRY_SUPPORTED
207}@@
208
209@@{
210RTC_CONFIG_USER_GEOMETRY
211=>
212RTC_DEVICE_PROPERTY_USER_GEOMETRY_SUPPORTED
213}@@
214
215@@{
216RTC_CONFIG_COMMIT_JOIN
217=>
218RTC_DEVICE_PROPERTY_JOIN_COMMIT_SUPPORTED
219}@@
220
221@@{
222RTC_CONFIG_COMMIT_THREAD
223=>
224/*RTC_DEVICE_PROPERTY_COMMIT_THREAD_SUPPORTED*/
225}@@
226
227@@{
228rtcSetParameter1i (EXPR parm,EXPR val)
229=>
230COMMENT rtcSetDeviceProperty (g_device,parm,val) // EMBREE_FIXME: not supported
231}@@
232
233@@{
234rtcGetParameter1i (EXPR parm)
235=>
236rtcGetDeviceProperty (g_device,parm)
237}@@
238
239@@{
240rtcDeviceSetParameter1i (EXPR device,EXPR parm,EXPR val)
241=>
242COMMENT rtcSetDeviceProperty (device,parm,val) // EMBREE_FIXME: not supported
243}@@
244
245@@{
246rtcDeviceGetParameter1i (EXPR device,EXPR parm)
247=>
248rtcGetDeviceProperty (device,parm)
249}@@
250
251@@{
252RTC_NO_ERROR
253=>
254RTC_ERROR_NONE
255}@@
256
257@@{
258RTC_UNKNOWN_ERROR
259=>
260RTC_ERROR_UNKNOWN
261}@@
262
263@@{
264RTC_INVALID_ARGUMENT
265=>
266RTC_ERROR_INVALID_ARGUMENT
267}@@
268
269@@{
270RTC_INVALID_OPERATION
271=>
272RTC_ERROR_INVALID_OPERATION
273}@@
274
275@@{
276RTC_OUT_OF_MEMORY
277=>
278RTC_ERROR_OUT_OF_MEMORY
279}@@
280
281@@{
282RTC_UNSUPPORTED_CPU
283=>
284RTC_ERROR_UNSUPPORTED_CPU
285}@@
286
287@@{
288RTC_CANCELLED
289=>
290RTC_ERROR_CANCELLED
291}@@
292
293@@{
294rtcGetError ()
295=>
296rtcGetDeviceError (g_device)
297}@@
298
299@@{
300rtcDeviceGetError (EXPR device)
301=>
302rtcGetDeviceError (device)
303}@@
304
305@@{
306RTC_ERROR_FUNCTION
307=>
308RTCErrorFunction
309}@@
310
311@@{
312RTCErrorFunc
313=>
314RTCErrorFunction
315}@@
316
317@@{
318RTCErrorFunc2
319=>
320RTCErrorFunction
321}@@
322
323@@{
324rtcSetErrorFunction(EXPR func)
325=>
326rtcSetDeviceErrorFunction(g_device,func,NULL)
327}@@
328
329@@{
330rtcDeviceSetErrorFunction(EXPR device,EXPR func)
331=>
332rtcSetDeviceErrorFunction(device,func,NULL)
333}@@
334
335@@{
336rtcDeviceSetErrorFunction2(EXPR device,EXPR func,EXPR userPtr)
337=>
338rtcSetDeviceErrorFunction(device,func,userPtr)
339}@@
340
341@@{cpp
342void EXPR RTCErrorFunc (const RTCError ID error, const char* ID str)
343{
344=>
345void RTCErrorFunc (uniform void* uniform userPtr, uniform RTCError ID error, const uniform char* uniform str)
346{
347}@@
348
349@@{ispc
350void EXPR RTCErrorFunc (const RTCError ID error, const char* ID str)
351{
352=>
353void RTCErrorFunc (uniform void* uniform userPtr, uniform RTCError ID error, const uniform int8* uniform str)
354{
355}@@
356
357@@{
358RTC_MEMORY_MONITOR_FUNCTION
359=>
360RTCMemoryMonitorFunction
361}@@
362
363@@{
364RTCMemoryMonitorFunc
365=>
366RTCMemoryMonitorFunction
367}@@
368
369@@{
370RTCMemoryMonitorFunc2
371=>
372RTCMemoryMonitorFunction
373}@@
374
375@@{
376rtcSetMemoryMonitorFunction(EXPR func)
377=>
378rtcSetDeviceMemoryMonitorFunction(g_device,func,NULL)
379}@@
380
381@@{
382rtcDeviceSetMemoryMonitorFunction(EXPR device,EXPR func)
383=>
384rtcSetDeviceMemoryMonitorFunction(device,func,NULL)
385}@@
386
387@@{
388rtcDeviceSetMemoryMonitorFunction2(EXPR device,EXPR func,EXPR userPtr)
389=>
390rtcSetDeviceMemoryMonitorFunction(device,func,userPtr)
391}@@
392
393@@{
394void EXPR RTCMemoryMonitorFunc (const ssize_t ID bytes, const bool ID post)
395{
396=>
397void RTCMemoryMonitorFunc (uniform void* uniform userPtr, uniform ssize_t bytes, uniform bool post)
398{
399}@@
400
401@@{
402rtcDebug();
403=>
404}@@
405
406////////////////////////////////////////////////////////////////////////////////////////
407// rtcore_scene.h
408
409@@{
410RTC_BUILD_QUALITY_NORMAL
411=>
412RTC_BUILD_QUALITY_MEDIUM
413}@@
414
415@@{
416RTC_SCENE_STATIC
417=>
418RTC_BUILD_QUALITY_MEDIUM
419}@@
420
421@@{
422RTC_SCENE_DYNAMIC
423=>
424RTC_SCENE_FLAG_DYNAMIC | RTC_BUILD_QUALITY_LOW
425}@@
426
427@@{
428RTC_SCENE_COMPACT
429=>
430RTC_SCENE_FLAG_COMPACT
431}@@
432
433@@{
434RTC_SCENE_COHERENT
435=>
436RTC_SCENE_FLAG_NONE
437}@@
438
439@@{
440RTC_SCENE_INCOHERENT
441=>
442RTC_SCENE_FLAG_NONE
443}@@
444
445@@{
446RTC_SCENE_HIGH_QUALITY
447=>
448RTC_BUILD_QUALITY_HIGH
449}@@
450
451@@{
452RTC_SCENE_ROBUST
453=>
454RTC_SCENE_FLAG_ROBUST
455}@@
456
457@@{
458RTCAlgorithmFlags ID id EXPR e0;
459=>
460@@{
461ID id = EXPR e1;
462=>
463;
464}@@
465}@@
466
467@@{
468RTCAlgorithmFlags
469=>
470int
471}@@
472
473@@{
474RTC_INTERSECT1
475=>
4760
477}@@
478
479@@{
480RTC_INTERSECT4
481=>
4820
483}@@
484
485@@{
486RTC_INTERSECT8
487=>
4880
489}@@
490
491@@{
492RTC_INTERSECT16
493=>
4940
495}@@
496
497@@{
498RTC_INTERPOLATE
499=>
5000
501}@@
502
503@@{
504RTC_INTERSECT_STREAM
505=>
5060
507}@@
508
509@@{
510RTCIntersectFlags
511=>
512RTCIntersectContextFlags
513}@@
514
515@@{
516RTC_INTERSECT_COHERENT
517=>
518RTC_INTERSECT_CONTEXT_FLAG_COHERENT
519}@@
520
521@@{
522RTC_INTERSECT_INCOHERENT
523=>
524RTC_INTERSECT_CONTEXT_FLAG_INCOHERENT
525}@@
526
527@@{
528RTCIntersectContext ID context;
529=>
530uniform RTCIntersectContext context;
531rtcInitIntersectContext(&context);
532}@@
533
534@@{
535rtcNewScene(EXPR sflags,EXPR aflags)
536=>
537rtcDeviceNewScene(g_device,sflags,aflags)
538}@@
539
540@@{
541rtcDeviceNewScene(EXPR device,EXPR sflags,EXPR aflags)
542=>
543rtcDeviceNewScene(device,sflags,aflags)
544}@@
545
546@@{
547ID scene = rtcDeviceNewScene(EXPR device,EXPR sflags,EXPR aflags);
548=>
549scene = rtcNewScene(device);
550COMMENT rtcSetSceneFlags(scene,sflags); // EMBREE_FIXME: set proper scene flags
551COMMENT rtcSetSceneBuildQuality(scene,sflags); // EMBREE_FIXME: set proper build quality
552}@@
553
554@@{
555return rtcDeviceNewScene(EXPR device,EXPR sflags,EXPR aflags);
556=>
557{
558  RTCScene VAR scene = rtcNewScene(device);
559  COMMENT rtcSetSceneFlags(scene,sflags); // EMBREE_FIXME: set proper scene flags
560  COMMENT rtcSetSceneBuildQuality(scene,sflags); // EMBREE_FIXME: set proper build quality
561  return scene;
562}
563}@@
564
565@@{
566RTC_PROGRESS_MONITOR_FUNCTION
567=>
568RTCProgressMonitorFunction
569}@@
570
571@@{
572RTCProgressMonitorFunc
573=>
574RTCProgressMonitorFunction
575}@@
576
577@@{
578rtcSetProgressMonitorFunction
579=>
580rtcSetSceneProgressMonitorFunction
581}@@
582
583@@{
584rtcCommit(EXPR scene)
585=>
586rtcCommitScene(scene)
587}@@
588
589@@{
590rtcCommitJoin(EXPR scene)
591=>
592rtcJoinCommitScene(scene)
593}@@
594
595@@{
596rtcCommitThread(EXPR scene,EXPR threadID,EXPR numThreads)
597=>
598rtcJoinCommitScene(scene)
599}@@
600
601@@{
602rtcGetBounds(EXPR scene,EXPR bounds)
603=>
604rtcGetSceneBounds(scene,&bounds)
605}@@
606
607@@{
608rtcGetLinearBounds(EXPR scene,EXPR bounds)
609=>
610rtcGetSceneLinearBounds(scene,bounds)
611}@@
612
613@@{cpp
614rtcIntersect(EXPR scene, EXPR query);
615=>
616{
617  RTCIntersectContext context;
618  rtcInitIntersectContext(&context);
619  rtcIntersect1(scene,&context,&query);
620  query.hit.Ng_x = -query.hit.Ng_x; // EMBREE_FIXME: only correct for triangles,quads, and subdivision surfaces
621  query.hit.Ng_y = -query.hit.Ng_y;
622  query.hit.Ng_z = -query.hit.Ng_z;
623}
624}@@
625
626@@{ispc
627rtcIntersect(EXPR scene, EXPR query);
628=>
629{
630  uniform RTCIntersectContext context;
631  rtcInitIntersectContext(&context);
632  rtcIntersectV(scene,&context,&query);
633  query.hit.Ng_x = -query.hit.Ng_x;  // EMBREE_FIXME: only correct for triangles,quads, and subdivision surfaces
634  query.hit.Ng_y = -query.hit.Ng_y;
635  query.hit.Ng_z = -query.hit.Ng_z;
636}
637}@@
638
639@@{cpp
640rtcIntersect1Ex(EXPR scene,EXPR context,EXPR query);
641=>
642rtcIntersect1(scene,context,&query);
643query.hit.Ng_x = -query.hit.Ng_x;  // EMBREE_FIXME: only correct for triangles,quads, and subdivision surfaces
644query.hit.Ng_y = -query.hit.Ng_y;
645query.hit.Ng_z = -query.hit.Ng_z;
646}@@
647
648@@{ispc
649rtcIntersectEx(EXPR scene,EXPR context,EXPR query);
650=>
651rtcIntersectV(scene,context,&query);
652query.hit.Ng_x = -query.hit.Ng_x;  // EMBREE_FIXME: only correct for triangles,quads, and subdivision surfaces
653query.hit.Ng_y = -query.hit.Ng_y;
654query.hit.Ng_z = -query.hit.Ng_z;
655}@@
656
657@@{
658rtcIntersect4(EXPR valid,EXPR scene,EXPR query);
659=>
660{
661  RTCIntersectContext context;
662  rtcInitIntersectContext(&context);
663  rtcIntersect4(valid,scene,&context,&query);
664}
665}@@
666
667@@{
668rtcIntersect4Ex(EXPR valid,EXPR scene,EXPR context,EXPR query);
669=>
670rtcIntersect4(valid,scene,context,&query);
671}@@
672
673@@{
674rtcIntersect8(EXPR valid,EXPR scene,EXPR query);
675=>
676{
677  RTCIntersectContext context;
678  rtcInitIntersectContext(&context);
679  rtcIntersect8(valid,scene,&context,&query);
680}
681}@@
682
683@@{
684rtcIntersect8Ex(EXPR valid,EXPR scene,EXPR context,EXPR query);
685=>
686rtcIntersect8(valid,scene,context,&query);
687}@@
688
689@@{
690rtcIntersect16(EXPR valid,EXPR scene,EXPR query);
691=>
692{
693  RTCIntersectContext context;
694  rtcInitIntersectContext(&context);
695  rtcIntersect16(valid,scene,&context,&query);
696}
697}@@
698
699@@{
700rtcIntersect16Ex(EXPR valid,EXPR scene,EXPR context,EXPR query);
701=>
702rtcIntersect16(valid,scene,context,&query);
703}@@
704
705@@{
706rtcIntersectNp(EXPR scene,EXPR context,EXPR query,EXPR N);
707=>
708rtcIntersectNp(scene,context,&query,N);
709}@@
710
711
712@@{cpp
713rtcOccluded(EXPR scene,EXPR ray);
714=>
715{
716  RTCIntersectContext context;
717  rtcInitIntersectContext(&context);
718  rtcOccluded1(scene,&context,&ray);
719  COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
720}
721}@@
722
723@@{ispc
724rtcOccluded(EXPR scene,EXPR ray);
725=>
726{
727  uniform RTCIntersectContext context;
728  rtcInitIntersectContext(&context);
729  rtcOccludedV(scene,&context,&ray);
730  COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
731}
732}@@
733
734@@{cpp
735rtcOccluded1Ex(EXPR scene,EXPR context,EXPR ray);
736=>
737rtcOccluded1(scene,context,&ray);
738COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
739}@@
740
741@@{ispc
742rtcOccluded1Ex(EXPR scene,EXPR context,EXPR ray);
743=>
744rtcOccludedV(scene,context,&ray);
745COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
746}@@
747
748@@{
749rtcOccluded4(EXPR valid,EXPR scene,EXPR ray);
750=>
751{
752  RTCIntersectContext context;
753  rtcInitIntersectContext(&context);
754  rtcOccluded4(valid,scene,&context,&ray);
755  COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
756}
757}@@
758
759@@{
760rtcOccluded4Ex(EXPR valid,EXPR scene,EXPR context,EXPR ray);
761=>
762rtcOccluded4(valid,scene,context,&ray);
763COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
764}@@
765
766@@{
767rtcOccluded8(EXPR valid,EXPR scene,EXPR ray);
768=>
769{
770  RTCIntersectContext context;
771  rtcInitIntersectContext(&context);
772  rtcOccluded8(valid,scene,&context,&ray);
773  COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
774}
775}@@
776
777@@{
778rtcOccluded8Ex(EXPR valid,EXPR scene,EXPR context,EXPR ray);
779=>
780rtcOccluded8(valid,scene,context,&ray);
781COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
782}@@
783
784@@{
785rtcOccluded16(EXPR valid,EXPR scene,EXPR ray);
786=>
787{
788  RTCIntersectContext context;
789  rtcInitIntersectContext(&context);
790  rtcOccluded16(valid,scene,&context,&ray);
791  COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
792}
793}@@
794
795@@{
796rtcOccluded16Ex(EXPR valid,EXPR scene,EXPR context,EXPR ray);
797=>
798rtcOccluded16(valid,scene,context,&ray);
799COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
800}@@
801
802@@{
803rtcOccludedNp(EXPR scene,EXPR context,EXPR ray,EXPR N);
804=>
805rtcOccludedNp(scene,context,&ray,N);
806COMMENT EMBREE_FIXME: ray is occluded when ray.tfar < 0.0f
807}@@
808
809@@{
810rtcDeleteScene(EXPR scene)
811=>
812rtcReleaseScene(scene)
813}@@
814
815////////////////////////////////////////////////////////////////////////////////////////
816// geometries
817
818@@{
819unsigned int ID geomID = REGEXPR(name,rtcNew.*)(
820=>
821uniform unsigned int geomID;
822geomID = name(
823}@@
824
825@@{
826int ID geomID = REGEXPR(name,rtcNew.*)(
827=>
828uniform int geomID;
829geomID = name(
830}@@
831
832////////////////////////////////////////////////////////////////////////////////////////
833// rtcore_geometry.h
834
835@@{
836RTC_MAX_TIME_STEPS
837=>
838RTC_MAX_TIME_STEP_COUNT
839}@@
840
841@@{
842RTC_MAX_USER_VERTEX_BUFFERS
843=>
84465536
845}@@
846
847@@{
848RTC_MAX_INDEX_BUFFERS
849=>
85065536
851}@@
852
853@@{
854RTC_INDEX_BUFFER0
855=>
856RTC_INDEX_BUFFER
857}@@
858
859@@{
860(RTCBufferType)(RTC_INDEX_BUFFER+EXPR t)
861=>
862RTC_INDEX_BUFFER_(t)
863}@@
864
865@@{
866RTCBufferType(RTC_INDEX_BUFFER+EXPR t)
867=>
868RTC_INDEX_BUFFER_(t)
869}@@
870
871@@{
872(RTCBufferType)RTC_INDEX_BUFFER
873=>
874RTC_INDEX_BUFFER
875}@@
876
877@@{
878RTC_INDEX_BUFFER
879=>
880RTC_BUFFER(RTC_BUFFER_TYPE_INDEX,0)
881}@@
882
883@@{
884RTC_INDEX_BUFFER1
885=>
886RTC_BUFFER(RTC_BUFFER_TYPE_INDEX,1)
887}@@
888
889@@{
890RTC_INDEX_BUFFER_(EXPR slot)
891=>
892RTC_BUFFER(RTC_BUFFER_TYPE_INDEX,slot)
893}@@
894
895
896@@{
897RTC_VERTEX_BUFFER0
898=>
899RTC_VERTEX_BUFFER
900}@@
901
902@@{
903(RTCBufferType)(RTC_VERTEX_BUFFER+EXPR t)
904=>
905RTC_VERTEX_BUFFER_(t)
906}@@
907
908@@{
909RTCBufferType(RTC_VERTEX_BUFFER+EXPR t)
910=>
911RTC_VERTEX_BUFFER_(t)
912}@@
913
914@@{
915(RTCBufferType)RTC_VERTEX_BUFFER
916=>
917RTC_VERTEX_BUFFER
918}@@
919
920@@{
921RTC_VERTEX_BUFFER
922=>
923RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX,0)
924}@@
925
926@@{
927(RTCBufferType)RTC_VERTEX_BUFFER1
928=>
929RTC_VERTEX_BUFFER1
930}@@
931
932@@{
933RTC_VERTEX_BUFFER1
934=>
935RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX,1)
936}@@
937
938@@{
939RTC_VERTEX_BUFFER_(EXPR slot)
940=>
941RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX,slot)
942}@@
943
944
945@@{
946RTC_USER_VERTEX_BUFFER0
947=>
948RTC_USER_VERTEX_BUFFER
949}@@
950
951@@{
952(RTCBufferType)(RTC_USER_VERTEX_BUFFER+EXPR t)
953=>
954RTC_USER_VERTEX_BUFFER_(t)
955}@@
956
957@@{
958RTCBufferType(RTC_USER_VERTEX_BUFFER+EXPR t)
959=>
960RTC_USER_VERTEX_BUFFER_(t)
961}@@
962
963@@{
964RTC_USER_VERTEX_BUFFER
965=>
966RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,0)
967}@@
968
969@@{
970RTC_USER_VERTEX_BUFFER1
971=>
972RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,1)
973}@@
974
975@@{
976RTC_USER_VERTEX_BUFFER_(EXPR slot)
977=>
978RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,slot)
979}@@
980
981
982@@{
983RTC_FACE_BUFFER
984=>
985RTC_BUFFER(RTC_BUFFER_TYPE_FACE,0)
986}@@
987
988@@{
989RTC_LEVEL_BUFFER
990=>
991RTC_BUFFER(RTC_BUFFER_TYPE_LEVEL,0)
992}@@
993
994@@{
995RTC_EDGE_CREASE_INDEX_BUFFER
996=>
997RTC_BUFFER(RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,0)
998}@@
999
1000@@{
1001RTC_EDGE_CREASE_WEIGHT_BUFFER
1002=>
1003RTC_BUFFER(RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,0)
1004}@@
1005
1006@@{
1007RTC_VERTEX_CREASE_INDEX_BUFFER
1008=>
1009RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,0)
1010}@@
1011
1012@@{
1013RTC_VERTEX_CREASE_WEIGHT_BUFFER
1014=>
1015RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,0)
1016}@@
1017
1018@@{
1019RTC_HOLE_BUFFER
1020=>
1021RTC_BUFFER(RTC_BUFFER_TYPE_HOLE,0)
1022}@@
1023
1024
1025
1026@@{
1027RTCMatrixType
1028=>
1029uniform RTCFormat
1030}@@
1031
1032@@{
1033RTC_MATRIX_ROW_MAJOR
1034=>
1035RTC_FORMAT_FLOAT3X4_ROW_MAJOR
1036}@@
1037
1038@@{
1039RTC_MATRIX_COLUMN_MAJOR
1040=>
1041RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR
1042}@@
1043
1044@@{
1045RTC_MATRIX_COLUMN_MAJOR_ALIGNED16
1046=>
1047RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR
1048}@@
1049
1050
1051@@{
1052RTCGeometryFlags
1053=>
1054uniform RTCBuildQuality
1055}@@
1056
1057@@{
1058RTC_GEOMETRY_STATIC
1059=>
1060RTC_BUILD_QUALITY_MEDIUM
1061}@@
1062
1063@@{
1064RTC_GEOMETRY_DEFORMABLE
1065=>
1066RTC_BUILD_QUALITY_REFIT
1067}@@
1068
1069@@{
1070RTC_GEOMETRY_DYNAMIC
1071=>
1072RTC_BUILD_QUALITY_LOW
1073}@@
1074
1075
1076
1077@@{
1078RTCBoundaryMode
1079=>
1080uniform RTCSubdivisionMode
1081}@@
1082
1083@@{
1084RTC_BOUNDARY_NONE
1085=>
1086RTC_SUBDIVISION_MODE_NO_BOUNDARY
1087}@@
1088
1089@@{
1090RTC_BOUNDARY_SMOOTH
1091=>
1092RTC_SUBDIVISION_MODE_SMOOTH_BOUNDARY
1093}@@
1094
1095@@{
1096RTC_BOUNDARY_EDGE_ONLY
1097=>
1098RTC_SUBDIVISION_MODE_SMOOTH_BOUNDARY
1099}@@
1100
1101@@{
1102RTC_BOUNDARY_EDGE_AND_CORNER
1103=>
1104RTC_SUBDIVISION_MODE_PIN_CORNERS
1105}@@
1106
1107@@{
1108RTC_SUBDIV_NO_BOUNDARY
1109=>
1110RTC_SUBDIVISION_MODE_NO_BOUNDARY
1111}@@
1112
1113@@{
1114RTC_SUBDIV_SMOOTH_BOUNDARY
1115=>
1116RTC_SUBDIVISION_MODE_SMOOTH_BOUNDARY
1117}@@
1118
1119@@{
1120RTC_SUBDIV_PIN_CORNERS
1121=>
1122RTC_SUBDIVISION_MODE_PIN_CORNERS
1123}@@
1124
1125@@{
1126RTC_SUBDIV_PIN_BOUNDARY
1127=>
1128RTC_SUBDIVISION_MODE_PIN_BOUNDARY
1129}@@
1130
1131@@{
1132RTC_SUBDIV_PIN_ALL
1133=>
1134RTC_SUBDIVISION_MODE_PIN_ALL
1135}@@
1136
1137
1138
1139
1140
1141///////////////////////////////////////////////////////////////////////
1142// convert filter function callbacks
1143
1144@@{
1145RTCFilterFunc
1146=>
1147RTCFilterFunctionN
1148}@@
1149
1150@@{
1151RTCFilterFunc4
1152=>
1153RTCFilterFunctionN
1154}@@
1155
1156@@{
1157RTCFilterFunc8
1158=>
1159RTCFilterFunctionN
1160}@@
1161
1162@@{
1163RTCFilterFunc16
1164=>
1165RTCFilterFunctionN
1166}@@
1167
1168@@{
1169RTCFilterFuncN
1170=>
1171RTCFilterFunctionN
1172}@@
1173
1174@@{
1175void EXPR intersectionFilter(void* ID geometryUserPtr_in, RTCRay& ID ray_in)
1176{
1177=>
1178unmasked void intersectionFilter(const uniform RTCFilterFunctionNArguments* uniform args)
1179{
1180  uniform int* uniform valid = args->valid;
1181  varying int* uniform vvalid = (varying int* uniform ) valid;
1182  void* uniform geometryUserPtr_in = args->geometryUserPtr;
1183  COMMENT uniform RTCIntersectContext* uniform context = args->context;
1184  COMMENT varying RTCRay& ray_in = *(varying RTCRay* uniform ) args->ray;
1185  varying RTCHit* uniform hit = (varying RTCHit* uniform ) args->hit;
1186  #warning EMBREE_FIXME: use hit to access hit
1187  #warning EMBREE_FIXME: reject hit through *vvalid = 0 instead of ray_in.geomID = RTC_INVALID_GEOMETRY_ID;
1188  uniform unsigned int N = args->N;
1189  assert(N == __programCount);
1190  if (*vvalid != -1) return;
1191@@{
1192ray_in.
1193=>
1194hit->
1195}@@
1196}@@
1197
1198@@{
1199void EXPR intersectionFilter(void* ID geometryUserPtr_in, RTCRay& ID ray_in);
1200=>
1201unmasked void intersectionFilter(const uniform RTCFilterFunctionNArguments* uniform args);
1202}@@
1203
1204@@{
1205void EXPR intersectionFilter4(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay4& ID ray_in)
1206{
1207=>
1208void intersectionFilter4(const uniform RTCFilterFunctionNArguments* uniform args)
1209{
1210  const void* valid_in = args->valid;
1211  void* geometryUserPtr_in = args->geometryUserPtr;
1212  COMMENT RTCIntersectContext* context = args->context;
1213  COMMENT RTCRay4& ray_in = *(RTCRay4*) args->ray;
1214  RTCHit4* hit = (RTCHit4*) args->hit;
1215  #warning EMBREE_FIXME: use hit to access hit
1216  #warning EMBREE_FIXME: reject hit through *valid_in = 0 instead of ray_in.geomID = RTC_INVALID_GEOMETRY_ID;
1217  unsigned int N = args->N;
1218  assert(N == 4);
1219  if (none(valid)) return; // function may get called with zero mask
1220@@{
1221ray_in.
1222=>
1223hit->
1224}@@
1225}@@
1226
1227@@{
1228void EXPR intersectionFilter4(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay4& ID ray_in);
1229=>
1230void intersectionFilter4(const uniform RTCFilterFunctionNArguments* uniform args);
1231}@@
1232
1233@@{
1234void EXPR intersectionFilter8(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay8& ID ray_in)
1235{
1236=>
1237void intersectionFilter8(const uniform RTCFilterFunctionNArguments* uniform args)
1238{
1239  const void* valid_in = args->valid;
1240  void* geometryUserPtr_in = args->geometryUserPtr;
1241  COMMENT RTCIntersectContext* context = args->context;
1242  COMMENT RTCRay8& ray_in = *(RTCRay8*) args->ray;
1243  RTCHit8* hit = (RTCHit8*) args->hit;
1244  #warning EMBREE_FIXME: use hit to access hit
1245  #warning EMBREE_FIXME: reject hit through *valid_in = 0 instead of ray_in.geomID = RTC_INVALID_GEOMETRY_ID;
1246  unsigned int N = args->N;
1247  assert(N == 8);
1248  if (none(valid)) return; // function may get called with zero mask
1249@@{
1250ray_in.
1251=>
1252hit->
1253}@@
1254}@@
1255
1256@@{
1257void EXPR intersectionFilter8(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay8& ID ray_in);
1258=>
1259void intersectionFilter8(const uniform RTCFilterFunctionNArguments* uniform args);
1260}@@
1261
1262@@{
1263void EXPR intersectionFilter16(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay16& ID ray_in)
1264{
1265=>
1266void intersectionFilter16(const uniform RTCFilterFunctionNArguments* uniform args)
1267{
1268  const void* valid_in = args->valid;
1269  void* geometryUserPtr_in = args->geometryUserPtr;
1270  COMMENT RTCIntersectContext* context = args->context;
1271  COMMENT RTCRay16& ray_in = *(RTCRay16*) args->ray;
1272  RTCHit16* hit = (RTCHit16*) args->hit;
1273  #warning EMBREE_FIXME: use hit to access hit
1274  #warning EMBREE_FIXME: reject hit through *valid_in = 0 instead of ray_in.geomID = RTC_INVALID_GEOMETRY_ID;
1275  unsigned int N = args->N;
1276  assert(N == 16);
1277  if (none(valid)) return; // function may get called with zero mask
1278@@{
1279ray_in.
1280=>
1281hit->
1282}@@
1283}@@
1284
1285@@{
1286void EXPR intersectionFilter16(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay16& ID ray_in);
1287=>
1288void intersectionFilter16(const uniform RTCFilterFunctionNArguments* uniform args);
1289}@@
1290
1291@@{
1292void EXPR intersectionFilterN(int* ID valid_in, void* ID geometryUserPtr_in, const RTCIntersectContext* ID context_in, RTCRayN* ID ray_in, const RTCHitN* ID hit_in, const size_t ID N_in)
1293{
1294=>
1295void intersectionFilterN(const uniform RTCFilterFunctionNArguments* uniform args)
1296{
1297  int* uniform valid_in = args->valid;
1298  void* uniform geometryUserPtr_in = args->geometryUserPtr;
1299  RTCIntersectContext* uniform context_in = args->context;
1300  RTCRayN* uniform ray_in = args->ray;
1301  RTCHitN* uniform hit_in = args->hit;
1302  uniform unsigned int N_in = args->N;
1303  #warning EMBREE_FIXME: function may get called with zero valid mask
1304  #warning EMBREE_FIXME: reject hit through *valid_in = 0 instead of ray_in.geomID = RTC_INVALID_GEOMETRY_ID;
1305}@@
1306
1307@@{
1308void EXPR intersectionFilterN(int* ID valid_in, void* ID geometryUserPtr_in, const RTCIntersectContext* ID context_in, RTCRayN* ID ray_in, const RTCHitN* ID hit_in, const size_t ID N_in);
1309=>
1310void intersectionFilterN(const uniform RTCFilterFunctionNArguments* uniform args);
1311}@@
1312
1313///////////////////////////////////////////////////////////////////////
1314// convert displacement function callbacks
1315
1316@@{
1317RTCDisplacementFunc
1318=>
1319RTCDisplacementFunctionN
1320}@@
1321
1322@@{
1323RTCDisplacementFunc2
1324=>
1325RTCDisplacementFunctionN
1326}@@
1327
1328@@{
1329void EXPR RTCDisplacementFunc(void* ID geometryUserPtr_in, unsigned int ID geomID_in, unsigned int ID primID_in,
1330const float* ID u_in, const float* ID v_in, const float* ID nx_in, const float* ID ny_in, const float* ID nz_in,
1331float* ID px_in, float* ID py_in, float* ID pz_in, size_t ID N_in)
1332{
1333=>
1334void RTCDisplacementFunc(const uniform RTCDisplacementFunctionNArguments* uniform args)
1335{
1336  void* uniform geometryUserPtr_in = args->geometryUserPtr;
1337  COMMENT uniform unsigned int geomID_in = args->geomID; // no longer available
1338  RTCGeometry geomID_in = args->geometry;
1339  uniform unsigned int primID_in = args->primID;
1340  const float* uniform u_in = args->u;
1341  const float* uniform v_in = args->v;
1342  const float* uniform nx_in = args->Ng_x; // EMBREE_FIXME: negate Ng
1343  const float* uniform ny_in = args->Ng_y;
1344  const float* uniform nz_in = args->Ng_z;
1345  float* uniform px_in = args->P_x;
1346  float* uniform py_in = args->P_y;
1347  float* uniform pz_in = args->P_z;
1348  size_t uniform N_in = args->N;
1349}@@
1350
1351@@{
1352void EXPR RTCDisplacementFunc2(void* ID geometryUserPtr_in, unsigned int ID geomID_in, unsigned int ID primID_in, unsigned int ID time_in,
1353const float* ID u_in, const float* ID v_in, const float* ID nx_in, const float* ID ny_in, const float* ID nz_in,
1354float* ID px_in, float* ID py_in, float* ID pz_in, size_t ID N_in)
1355{
1356=>
1357void RTCDisplacementFunc2(const uniform RTCDisplacementFunctionNArguments* uniform args)
1358{
1359  void* uniform geometryUserPtr_in = args->geometryUserPtr;
1360  COMMENT uniform unsigned int geomID_in = args->geomID; // no longer available
1361  RTCGeometry geomID_in = args->geometry;
1362  uniform unsigned int primID_in = args->primID;
1363  uniform unsigned int time_in = args->timeStep;
1364  const float* uniform u_in = args->u;
1365  const float* uniform v_in = args->v;
1366  const float* uniform nx_in = args->Ng_x; // EMBREE_FIXME: negate Ng
1367  const float* uniform ny_in = args->Ng_y;
1368  const float* uniform nz_in = args->Ng_z;
1369  float* uniform px_in = args->P_x;
1370  float* uniform py_in = args->P_y;
1371  float* uniform pz_in = args->P_z;
1372  uniform size_t N_in = args->N;
1373}@@
1374
1375
1376////////////////////////////////////////////////////////////////////////////////////////
1377// instance
1378
1379@@{
1380rtcNewInstance
1381=>
1382rtcNewInstance2
1383}@@
1384
1385@@{
1386rtcNewInstance2
1387=>
1388rtcNewInstance3
1389}@@
1390
1391@@{
1392rtcNewInstance3(EXPR target,EXPR source)
1393=>
1394rtcNewInstance3(target,source,1)
1395}@@
1396
1397@@{
1398LHS geomID = rtcNewInstance3(EXPR target,EXPR source,EXPR numTimeSteps);
1399=>
1400uniform RTCGeometry VAR geom = rtcNewInstance (g_device,source,numTimeSteps);
1401geomID = rtcAttachGeometry(target,geom);
1402rtcReleaseGeometry(geom);
1403}@@
1404
1405@@{
1406rtcNewInstance3(EXPR target,EXPR source,EXPR numTimeSteps);
1407=>
1408uniform RTCGeometry VAR geom = rtcNewInstance (g_device,source,numTimeSteps);
1409rtcAttachGeometry(target,geom);
1410rtcReleaseGeometry(geom);
1411}@@
1412
1413@@{
1414rtcNewInstance3(EXPR target,EXPR source,EXPR numTimeSteps,EXPR geomID);
1415=>
1416uniform RTCGeometry VAR geom = rtcNewInstance (g_device,source,numTimeSteps);
1417rtcAttachGeometryById(target,geom,geomID);
1418rtcReleaseGeometry(geom);
1419}@@
1420
1421@@{
1422RTCGeometry ID geom = rtcNewInstance(EXPR device,EXPR source,EXPR numTimeSteps);
1423=>
1424uniform RTCGeometry geom = rtcNewInstance(device,source,numTimeSteps);
1425rtcSetGeometryInstancedScene(geom,source);
1426rtcSetGeometryTimeStepCount(geom,numTimeSteps);
1427}@@
1428
1429
1430@@{
1431LHS geomID = rtcNewGeometryInstance(EXPR scene, EXPR geomID);
1432=>
1433geomID = rtcNewGeometryInstance( scene, geomID); // EMBREE_FIXME: no longer supported
1434}@@
1435
1436@@{
1437LHS geomID = rtcNewGeometryGroup(EXPR scene, EXPR flags, EXPR geomIDs, EXPR N);
1438=>
1439geomID = rtcNewGeometryGroup(scene, flags, geomIDs, N); // EMBREE_FIXME: no longer supported
1440}@@
1441
1442@@{
1443rtcSetTransform
1444=>
1445rtcSetTransform2
1446}@@
1447
1448@@{
1449rtcSetTransform2(EXPR scene,EXPR geomID,EXPR layout,EXPR xfm)
1450=>
1451rtcSetTransform2(scene,geomID,layout,xfm,0)
1452}@@
1453
1454@@{
1455rtcSetTransform2(EXPR scene,EXPR geomID,EXPR layout,EXPR xfm,EXPR timeStep)
1456=>
1457rtcSetGeometryTransform(rtcGetGeometry(scene,geomID),timeStep,layout,xfm)
1458}@@
1459
1460
1461////////////////////////////
1462// rtcNewTriangleMesh
1463
1464@@{
1465rtcNewTriangleMesh
1466=>
1467rtcNewTriangleMesh2
1468}@@
1469
1470@@{
1471rtcNewTriangleMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices)
1472=>
1473rtcNewTriangleMesh2(scene,flags,numPrimitives,numVertices,1)
1474}@@
1475
1476@@{
1477LHS geomID = rtcNewTriangleMesh2 (EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1478=>
1479uniform RTCGeometry VAR geom = rtcNewTriangleMesh (g_device,flags,numPrimitives,numVertices,numTimeSteps);
1480geomID = rtcAttachGeometry(scene,geom);
1481rtcReleaseGeometry(geom);
1482}@@
1483
1484@@{
1485rtcNewTriangleMesh2 (EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1486=>
1487uniform RTCGeometry VAR geom = rtcNewTriangleMesh (g_device,flags,numPrimitives,numVertices,numTimeSteps);
1488rtcAttachGeometry(scene,geom);
1489rtcReleaseGeometry(geom);
1490}@@
1491
1492@@{
1493rtcNewTriangleMesh2 (EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID);
1494=>
1495uniform RTCGeometry VAR geom = rtcNewTriangleMesh (g_device,flags,numPrimitives,numVertices,numTimeSteps);
1496rtcAttachGeometryById(scene,geom,geomID);
1497rtcReleaseGeometry(geom);
1498}@@
1499
1500@@{
1501RTCGeometry ID geom = rtcNewTriangleMesh(EXPR device,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1502=>
1503uniform RTCGeometry geom = rtcNewTriangleMesh(device,flags,numPrimitives,numVertices,numTimeSteps);
1504rtcSetGeometryBuildQuality(geom,flags);
1505rtcSetGeometryTimeStepCount(geom,numTimeSteps);
1506}@@
1507
1508////////////////////////////
1509// rtcNewQuadMesh
1510
1511@@{
1512rtcNewQuadMesh
1513=>
1514rtcNewQuadMesh2
1515}@@
1516
1517@@{
1518rtcNewQuadMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices)
1519=>
1520rtcNewQuadMesh2(scene,flags,numPrimitives,numVertices,1)
1521}@@
1522
1523@@{
1524LHS geomID = rtcNewQuadMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1525=>
1526uniform RTCGeometry VAR geom = rtcNewQuadMesh (g_device,flags,numPrimitives,numVertices,numTimeSteps);
1527geomID = rtcAttachGeometry(scene,geom);
1528rtcReleaseGeometry(geom);
1529}@@
1530
1531@@{
1532rtcNewQuadMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1533=>
1534uniform RTCGeometry VAR geom = rtcNewQuadMesh (g_device,flags,numPrimitives,numVertices,numTimeSteps);
1535rtcAttachGeometry(scene,geom);
1536rtcReleaseGeometry(geom);
1537}@@
1538
1539@@{
1540rtcNewQuadMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID);
1541=>
1542uniform RTCGeometry VAR geom = rtcNewQuadMesh (g_device,flags,numPrimitives,numVertices,numTimeSteps);
1543rtcAttachGeometryById(scene,geom,geomID);
1544rtcReleaseGeometry(geom);
1545}@@
1546
1547@@{
1548RTCGeometry ID geom = rtcNewQuadMesh(EXPR device,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1549=>
1550uniform RTCGeometry geom = rtcNewQuadMesh(device,flags,numPrimitives,numVertices,numTimeSteps);
1551rtcSetGeometryBuildQuality(geom,flags);
1552rtcSetGeometryTimeStepCount(geom,numTimeSteps);
1553}@@
1554
1555////////////////////////////
1556// rtcNewSubdivisionMesh
1557
1558@@{
1559rtcNewSubdivisionMesh
1560=>
1561rtcNewSubdivisionMesh2
1562}@@
1563
1564@@{
1565rtcNewSubdivisionMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles)
1566=>
1567rtcNewSubdivisionMesh2(scene,flags,numPrimitives,numEdges,numVertices,numEdgeCreases,numVertexCreases,numHoles,1)
1568}@@
1569
1570@@{
1571LHS geomID = rtcNewSubdivisionMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles,EXPR numTimeSteps);
1572=>
1573uniform RTCGeometry VAR geom = rtcNewSubdivisionMesh (g_device,flags,numPrimitives,numEdges,numVertices,numEdgeCreases,numVertexCreases,numHoles,numTimeSteps);
1574geomID = rtcAttachGeometry(scene,geom);
1575rtcReleaseGeometry(geom);
1576}@@
1577
1578@@{
1579rtcNewSubdivisionMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles,EXPR numTimeSteps);
1580=>
1581uniform RTCGeometry VAR geom = rtcNewSubdivisionMesh (g_device,flags,numPrimitives,numEdges,numVertices,numEdgeCreases,numVertexCreases,numHoles,numTimeSteps);
1582rtcAttachGeometry(scene,geom);
1583rtcReleaseGeometry(geom);
1584}@@
1585
1586@@{
1587rtcNewSubdivisionMesh2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles,EXPR numTimeSteps,EXPR geomID);
1588=>
1589uniform RTCGeometry VAR geom = rtcNewSubdivisionMesh (g_device,flags,numPrimitives,numEdges,numVertices,numEdgeCreases,numVertexCreases,numHoles,numTimeSteps);
1590rtcAttachGeometryById(scene,geom,geomID);
1591rtcReleaseGeometry(geom);
1592}@@
1593
1594@@{
1595RTCGeometry ID geom = rtcNewSubdivisionMesh(EXPR device,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles,EXPR numTimeSteps);
1596=>
1597uniform RTCGeometry geom = rtcNewSubdivisionMesh(device,flags,numPrimitives,numEdges,numVertices,numEdgeCreases,numVertexCreases,numHoles,numTimeSteps);
1598rtcSetGeometryBuildQuality(geom,flags);
1599rtcSetGeometryTimeStepCount(geom,numTimeSteps);
1600}@@
1601
1602////////////////////////////
1603// rtcNewCurveGeometry
1604
1605@@{
1606rtcNewHairGeometry
1607=>
1608rtcNewBezierGeometry
1609}@@
1610
1611@@{
1612rtcNewBezierHairGeometry
1613=>
1614rtcNewBezierHairGeometry2
1615}@@
1616
1617@@{
1618rtcNewBezierHairGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices)
1619=>
1620rtcNewBezierHairGeometry2(scene,flags,numPrimitives,numVertices,1)
1621}@@
1622
1623@@{
1624rtcNewBezierHairGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps)
1625=>
1626rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_FLAT_BEZIER_CURVE,flags,numPrimitives,numVertices,numTimeSteps)
1627}@@
1628
1629@@{
1630rtcNewBezierHairGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID)
1631=>
1632rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_FLAT_BEZIER_CURVE,flags,numPrimitives,numVertices,numTimeSteps,geomID)
1633}@@
1634
1635@@{
1636rtcNewBSplineHairGeometry
1637=>
1638rtcNewBSplineHairGeometry2
1639}@@
1640
1641@@{
1642rtcNewBSplineHairGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices)
1643=>
1644rtcNewBSplineHairGeometry2(scene,flags,numPrimitives,numVertices,1)
1645}@@
1646
1647@@{
1648rtcNewBSplineHairGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps)
1649=>
1650rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_FLAT_BSPLINE_CURVE,flags,numPrimitives,numVertices,numTimeSteps)
1651}@@
1652
1653@@{
1654rtcNewBSplineHairGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID)
1655=>
1656rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_FLAT_BSPLINE_CURVE,flags,numPrimitives,numVertices,numTimeSteps,geomID)
1657}@@
1658
1659
1660
1661
1662@@{
1663rtcNewCurveGeometry
1664=>
1665rtcNewBezierCurveGeometry
1666}@@
1667
1668@@{
1669rtcNewBezierCurveGeometry
1670=>
1671rtcNewBezierCurveGeometry2
1672}@@
1673
1674@@{
1675rtcNewBezierCurveGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices)
1676=>
1677rtcNewBezierCurveGeometry2(scene,flags,numPrimitives,numVertices,1)
1678}@@
1679
1680@@{
1681rtcNewBezierCurveGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps)
1682=>
1683rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE,flags,numPrimitives,numVertices,numTimeSteps)
1684}@@
1685
1686@@{
1687rtcNewBezierCurveGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID)
1688=>
1689rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE,flags,numPrimitives,numVertices,numTimeSteps,geomID)
1690}@@
1691
1692@@{
1693rtcNewBSplineCurveGeometry
1694=>
1695rtcNewBSplineCurveGeometry2
1696}@@
1697
1698@@{
1699rtcNewBSplineCurveGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices)
1700=>
1701rtcNewBSplineCurveGeometry2(scene,flags,numPrimitives,numVertices,1)
1702}@@
1703
1704@@{
1705rtcNewBSplineCurveGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps)
1706=>
1707rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_ROUND_BSPLINE_CURVE,flags,numPrimitives,numVertices,numTimeSteps)
1708}@@
1709
1710@@{
1711rtcNewBSplineCurveGeometry2(EXPR scene,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID)
1712=>
1713rtcNewCurveGeometryX(scene,RTC_GEOMETRY_TYPE_ROUND_BSPLINE_CURVE,flags,numPrimitives,numVertices,numTimeSteps,geomID)
1714}@@
1715
1716
1717@@{
1718rtcNewLineSegments
1719=>
1720rtcNewLineSegments2
1721}@@
1722
1723@@{
1724rtcNewLineSegments2(EXPR scene,EXPR flags,EXPR numSegments,EXPR numVertices)
1725=>
1726rtcNewLineSegments2(scene,flags,numSegments,numVertices,1)
1727}@@
1728
1729@@{
1730rtcNewLineSegments2(EXPR scene,EXPR flags,EXPR numSegments,EXPR numVertices,EXPR numTimeSteps)
1731=>
1732rtcNewCurveGeometryX (scene,RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE,flags,numSegments,numVertices,numTimeSteps)
1733}@@
1734
1735@@{
1736rtcNewLineSegments2(EXPR scene,EXPR flags,EXPR numSegments,EXPR numVertices,EXPR numTimeSteps,EXPR geomID)
1737=>
1738rtcNewCurveGeometryX (scene,RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE,flags,numSegments,numVertices,numTimeSteps,geomID)
1739}@@
1740
1741
1742@@{
1743LHS geomID = rtcNewCurveGeometryX (EXPR scene,EXPR type,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1744=>
1745uniform RTCGeometry VAR geom = rtcNewCurveGeometry (g_device,type,flags,numPrimitives,numVertices,numTimeSteps);
1746geomID = rtcAttachGeometry(scene,geom);
1747rtcReleaseGeometry(geom);
1748}@@
1749
1750@@{
1751rtcNewCurveGeometryX (EXPR scene,EXPR type,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1752=>
1753uniform RTCGeometry VAR geom = rtcNewCurveGeometry (g_device,type,flags,numPrimitives,numVertices,numTimeSteps);
1754rtcAttachGeometry(scene,geom);
1755rtcReleaseGeometry(geom);
1756}@@
1757
1758@@{
1759rtcNewCurveGeometryX (EXPR scene,EXPR type,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps,EXPR geomID);
1760=>
1761uniform RTCGeometry VAR geom = rtcNewCurveGeometry (g_device,type,flags,numPrimitives,numVertices,numTimeSteps);
1762rtcAttachGeometryById(scene,geom,geomID);
1763rtcReleaseGeometry(geom);
1764}@@
1765
1766@@{
1767RTCGeometry ID geom = rtcNewCurveGeometry (EXPR device,EXPR type,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
1768=>
1769uniform RTCGeometry geom = rtcNewCurveGeometry (device,type,flags,numPrimitives,numVertices,numTimeSteps);
1770rtcSetGeometryBuildQuality(geom,flags);
1771rtcSetGeometryTimeStepCount(geom,numTimeSteps);
1772}@@
1773
1774
1775////////////////////////////////////////////////////////////////////////////////////////
1776// geometry modification functions
1777
1778@@{
1779rtcSetTessellationRate(EXPR scene,EXPR geomID,EXPR rate)
1780=>
1781rtcSetGeometryTessellationRate(rtcGetGeometry(scene,geomID),rate)
1782}@@
1783
1784@@{
1785rtcSetMask(EXPR scene,EXPR geomID,EXPR mask)
1786=>
1787rtcSetGeometryMask(rtcGetGeometry(scene,geomID),mask)
1788}@@
1789
1790@@{
1791rtcSetBoundaryMode(EXPR scene,EXPR geomID,EXPR mode)
1792=>
1793rtcSetGeometrySubdivisionMode(rtcGetGeometry(scene,geomID),0,mode)
1794}@@
1795
1796@@{
1797rtcSetSubdivisionMode(EXPR scene,EXPR geomID,EXPR topology,EXPR mode)
1798=>
1799rtcSetGeometrySubdivisionMode(rtcGetGeometry(scene,geomID),topology,mode)
1800}@@
1801
1802@@{
1803rtcSetIndexBuffer(EXPR scene,EXPR geomID,EXPR buf0,EXPR buf1)
1804=>
1805rtcSetIndexBuffer(rtcGetGeometry(scene,geomID),buf0,buf1)
1806}@@
1807
1808@@{
1809rtcSetIndexBuffer(EXPR geom, RTC_BUFFER(RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,EXPR vertexSlot) , RTC_BUFFER(RTC_BUFFER_TYPE_INDEX,EXPR indexSlot));
1810=>
1811rtcSetGeometryVertexAttributeTopology(geom, vertexSlot, indexSlot);
1812}@@
1813
1814@@{
1815rtcSetIndexBuffer(EXPR geom, EXPR vertexBuffer, EXPR indexBuffer);
1816=>
1817rtcSetGeometryVertexAttributeTopology(geom, vertexBuffer, indexBuffer);
1818}@@
1819
1820@@{
1821rtcMapBuffer(EXPR scene,EXPR geomID,EXPR type)
1822=>
1823rtcMapBuffer(rtcGetGeometry(scene,geomID),type)
1824}@@
1825
1826@@{
1827rtcMapBuffer(EXPR geom,RTC_BUFFER(EXPR type, EXPR slot))
1828=>
1829rtcMapBuffer(geom,type,slot,EMBREE_FIXME_COULD_NOT_INFER_FORMAT)
1830}@@
1831
1832@@{
1833rtcMapBuffer(EXPR geom,EXPR type)
1834=>
1835rtcMapBuffer(geom,type,EMBREE_FIXME_COULD_NOT_INFER_SLOT,EMBREE_FIXME_COULD_NOT_INFER_FORMAT)
1836}@@
1837
1838@@{
1839rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_FACE, EXPR slot, EXPR format)
1840=>
1841rtcMapBuffer(geom,RTC_BUFFER_TYPE_FACE,slot,RTC_FORMAT_UINT)
1842}@@
1843
1844@@{
1845rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_LEVEL, EXPR slot, EXPR format)
1846=>
1847rtcMapBuffer(geom,RTC_BUFFER_TYPE_LEVEL,slot,RTC_FORMAT_FLOAT)
1848}@@
1849
1850@@{
1851rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX, EXPR slot, EXPR format)
1852=>
1853rtcMapBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,slot,RTC_FORMAT_UINT2)
1854}@@
1855
1856@@{
1857rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT, EXPR slot, EXPR format)
1858=>
1859rtcMapBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,slot,RTC_FORMAT_FLOAT)
1860}@@
1861
1862@@{
1863rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX, EXPR slot, EXPR format)
1864=>
1865rtcMapBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,slot,RTC_FORMAT_UINT)
1866}@@
1867
1868@@{
1869rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT, EXPR slot, EXPR format)
1870=>
1871rtcMapBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,slot,RTC_FORMAT_FLOAT)
1872}@@
1873
1874@@{
1875rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_HOLE, EXPR slot, EXPR format)
1876=>
1877rtcMapBuffer(geom,RTC_BUFFER_TYPE_HOLE,slot,RTC_FORMAT_UINT)
1878}@@
1879
1880@@{
1881rtcMapBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, EXPR slot, EXPR format);
1882=>
1883(rtcSetGeometryVertexAttributeCount(geom,slot+1), // EMBREE_FIXME: verify if this is correct
1884 rtcMapBuffer(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, slot, format));
1885}@@
1886
1887@@{
1888rtcUnmapBuffer(EXPR scene,EXPR geomID,EXPR type)
1889=>
1890rtcUnmapBuffer(rtcGetGeometry(scene,geomID),type)
1891}@@
1892
1893@@{
1894rtcUnmapBuffer(EXPR geom, EXPR type);
1895=>
1896}@@
1897
1898@@{
1899rtcSetBuffer(EXPR scene,EXPR geomID,EXPR type,EXPR ptr,EXPR offset,EXPR stride)
1900=>
1901rtcSetBuffer(rtcGetGeometry(scene,geomID),type,ptr,offset,stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
1902}@@
1903
1904@@{
1905rtcSetBuffer2(EXPR scene,EXPR geomID,EXPR type,EXPR ptr,EXPR offset,EXPR stride,EXPR size)
1906=>
1907rtcSetBuffer(rtcGetGeometry(scene,geomID),type,ptr,offset,stride,size)
1908}@@
1909
1910@@{
1911rtcSetBuffer(EXPR geom,RTC_BUFFER(EXPR type, EXPR slot),EXPR ptr,EXPR offset,EXPR stride,EXPR size)
1912=>
1913rtcSetSharedGeometryBuffer(geom,type,slot,EMBREE_FIXME_COULD_NOT_INFER_FORMAT,ptr,offset,stride,size)
1914}@@
1915
1916@@{
1917rtcSetBuffer(EXPR geom,EXPR type, EXPR ptr,EXPR offset,EXPR stride,EXPR size)
1918=>
1919rtcSetSharedGeometryBuffer(geom,type,EMBREE_FIXME_COULD_NOT_INFER_SLOT,EMBREE_FIXME_COULD_NOT_INFER_FORMAT,ptr,offset,stride,size)
1920}@@
1921
1922
1923@@{
1924rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_FACE, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1925=>
1926rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_FACE,slot,RTC_FORMAT_UINT,ptr,offset,stride,size)
1927}@@
1928
1929@@{
1930rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_LEVEL, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1931=>
1932rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_LEVEL,slot,RTC_FORMAT_FLOAT,ptr,offset,stride,size)
1933}@@
1934
1935@@{
1936rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1937=>
1938rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,slot,RTC_FORMAT_UINT2,ptr,offset,stride,size)
1939}@@
1940
1941@@{
1942rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1943=>
1944rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,slot,RTC_FORMAT_FLOAT,ptr,offset,stride,size)
1945}@@
1946
1947@@{
1948rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1949=>
1950rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,slot,RTC_FORMAT_UINT,ptr,offset,stride,size)
1951}@@
1952
1953@@{
1954rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1955=>
1956rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,slot,RTC_FORMAT_FLOAT,ptr,offset,stride,size)
1957}@@
1958
1959@@{
1960rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_HOLE, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size)
1961=>
1962rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_HOLE,slot,RTC_FORMAT_UINT,ptr,offset,stride,size)
1963}@@
1964
1965@@{
1966rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, EXPR slot, EXPR format, EXPR ptr, EXPR offset, EXPR stride, EXPR size);
1967=>
1968rtcSetGeometryVertexAttributeCount(geom,slot+1); // EMBREE_FIXME: verify if this is correct
1969rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, slot, format, ptr, offset, stride, size);
1970}@@
1971
1972
1973
1974@@{
1975rtcEnable(EXPR scene,EXPR geomID)
1976=>
1977rtcEnableGeometry(rtcGetGeometry(scene,geomID))
1978}@@
1979
1980@@{
1981rtcUpdate(EXPR scene,EXPR geomID)
1982=>
1983rtcCommitGeometry(rtcGetGeometry(scene,geomID))
1984}@@
1985
1986@@{
1987rtcUpdateBuffer(EXPR scene,EXPR geomID,EXPR type)
1988=>
1989rtcUpdateGeometryBuffer(rtcGetGeometry(scene,geomID),type);
1990rtcCommitGeometry(rtcGetGeometry(scene,geomID)) /* EMBREE_FIXME: do commit once after all updates */
1991}@@
1992
1993@@{
1994rtcUpdateGeometryBuffer(EXPR geom,RTC_BUFFER(EXPR bufty,EXPR slot))
1995=>
1996rtcUpdateGeometryBuffer(geom,bufty,slot)
1997}@@
1998
1999@@{
2000rtcUpdateGeometryBuffer(EXPR geom,EXPR bufty)
2001=>
2002rtcUpdateGeometryBuffer(geom,bufty,EMBREE_FIXME_COULD_NOT_INFER_SLOT)
2003}@@
2004
2005@@{
2006rtcDisable(EXPR scene,EXPR geomID)
2007=>
2008rtcDisableGeometry(rtcGetGeometry(scene,geomID))
2009}@@
2010
2011@@{
2012rtcSetDisplacementFunction(EXPR scene,EXPR geomID,EXPR func,EXPR bounds)
2013=>
2014rtcSetGeometryDisplacementFunction(rtcGetGeometry(scene,geomID),func)
2015}@@
2016
2017@@{
2018rtcSetDisplacementFunction2(EXPR scene,EXPR geomID,EXPR func,EXPR bounds)
2019=>
2020rtcSetGeometryDisplacementFunction(rtcGetGeometry(scene,geomID),func)
2021}@@
2022
2023@@{
2024rtcSetIntersectionFilterFunction(EXPR scene,EXPR geomID,EXPR func)
2025=>
2026rtcSetGeometryIntersectFilterFunction(rtcGetGeometry(scene,geomID),func)
2027}@@
2028
2029@@{
2030rtcSetIntersectionFilterFunction4(EXPR scene,EXPR geomID,EXPR func)
2031=>
2032rtcSetGeometryIntersectFilterFunction(rtcGetGeometry(scene,geomID),func)
2033}@@
2034
2035@@{
2036rtcSetIntersectionFilterFunction8(EXPR scene,EXPR geomID,EXPR func)
2037=>
2038rtcSetGeometryIntersectFilterFunction(rtcGetGeometry(scene,geomID),func)
2039}@@
2040
2041@@{
2042rtcSetIntersectionFilterFunction16(EXPR scene,EXPR geomID,EXPR func)
2043=>
2044rtcSetGeometryIntersectFilterFunction(rtcGetGeometry(scene,geomID),func)
2045}@@
2046
2047@@{
2048rtcSetIntersectionFilterFunctionN(EXPR scene,EXPR geomID,EXPR func)
2049=>
2050rtcSetGeometryIntersectFilterFunction(rtcGetGeometry(scene,geomID),func)
2051}@@
2052
2053@@{
2054rtcSetOcclusionFilterFunction(EXPR scene,EXPR geomID,EXPR func)
2055=>
2056rtcSetGeometryOccludedFilterFunction(rtcGetGeometry(scene,geomID),func)
2057}@@
2058
2059@@{
2060rtcSetOcclusionFilterFunction4(EXPR scene,EXPR geomID,EXPR func)
2061=>
2062rtcSetGeometryOccludedFilterFunction(rtcGetGeometry(scene,geomID),func)
2063}@@
2064
2065@@{
2066rtcSetOcclusionFilterFunction8(EXPR scene,EXPR geomID,EXPR func)
2067=>
2068rtcSetGeometryOccludedFilterFunction(rtcGetGeometry(scene,geomID),func)
2069}@@
2070
2071@@{
2072rtcSetOcclusionFilterFunction16(EXPR scene,EXPR geomID,EXPR func)
2073=>
2074rtcSetGeometryOccludedFilterFunction(rtcGetGeometry(scene,geomID),func)
2075}@@
2076
2077@@{
2078rtcSetOcclusionFilterFunctionN(EXPR scene,EXPR geomID,EXPR func)
2079=>
2080rtcSetGeometryOccludedFilterFunction(rtcGetGeometry(scene,geomID),func)
2081}@@
2082
2083
2084@@{
2085rtcSetUserData(EXPR scene,EXPR geomID,EXPR ptr)
2086=>
2087rtcSetGeometryUserData(rtcGetGeometry(scene,geomID),ptr)
2088}@@
2089
2090@@{
2091rtcGetUserData(EXPR scene,EXPR geomID)
2092=>
2093rtcGetGeometryUserData(rtcGetGeometry(scene,geomID))
2094}@@
2095
2096
2097@@{
2098rtcInterpolate(EXPR scene,EXPR geomID,EXPR primID,EXPR u,EXPR v,EXPR buffer,EXPR P,EXPR dPdu,EXPR dPdv,EXPR numFloats)
2099=>
2100rtcInterpolate1(rtcGetGeometry(scene,geomID),primID,u,v,buffer,P,dPdu,dPdv,numFloats)
2101}@@
2102
2103@@{
2104rtcInterpolate1(EXPR geom,EXPR primID,EXPR u,EXPR v,RTC_BUFFER(EXPR bufty,EXPR slot),EXPR P,EXPR dPdu,EXPR dPdv,EXPR numFloats)
2105=>
2106rtcInterpolate1(geom,primID,u,v,bufty,slot,P,dPdu,dPdv,numFloats)
2107}@@
2108
2109@@{
2110rtcInterpolate2(EXPR scene,EXPR geomID,EXPR primID,EXPR u,EXPR v,EXPR buffer,EXPR P,EXPR dPdu,EXPR dPdv,EXPR ddPdudu,EXPR ddPdvdv,EXPR ddPdudv,EXPR numFloats)
2111=>
2112rtcInterpolate2(rtcGetGeometry(scene,geomID),primID,u,v,buffer,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,numFloats)
2113}@@
2114
2115@@{
2116rtcInterpolate2(EXPR geom,EXPR primID,EXPR u,EXPR v,RTC_BUFFER(EXPR bufty,EXPR slot),EXPR P,EXPR dPdu,EXPR dPdv,EXPR ddPdudu,EXPR ddPdvdv,EXPR ddPdudv,EXPR numFloats)
2117=>
2118rtcInterpolate2(rtcGetGeometry(scene,geomID),primID,u,v,bufty,slot,P,dPdu,dPdv,ddPdudu,ddPdvdv,ddPdudv,numFloats)
2119}@@
2120
2121
2122@@{
2123rtcInterpolateN(EXPR scene,EXPR geomID,EXPR valid_in,EXPR primID_in,EXPR u_in,EXPR v_in,EXPR numUVs_in,EXPR buffer_in,EXPR P_o,EXPR dPdu_o,EXPR dPdv_o,EXPR numFloats_in)
2124=>
2125{
2126  RTCInterpolateNArguments args;
2127  args.geometry = rtcGetGeometry(scene,geomID);
2128  args.valid = valid_in;
2129  args.primIDs = primID_in;
2130  args.u = u_in;
2131  args.v = v_in;
2132  args.N = numUVs_in;
2133  args.bufferType = buffer_in;
2134  args.bufferSlot = /* EMBREE_FIXME: put buffer slot here */;
2135  args.P = P_o;
2136  args.dPdu = dPdu_o;
2137  args.dPdv = dPdv_o;
2138  args.ddPdudu = NULL;
2139  args.ddPdvdv = NULL;
2140  args.ddPdudv = NULL;
2141  args.valueCount = numFloats_in;
2142  rtcInterpolateN(&args)
2143}
2144}@@
2145
2146@@{
2147rtcInterpolateN2(EXPR scene,EXPR geomID,EXPR valid_in,EXPR primID_in,EXPR u_in,EXPR v_in,EXPR numUVs_in,EXPR buffer_in,EXPR P_o,EXPR dPdu_o,EXPR dPdv_o,EXPR ddPdudu_o,EXPR ddPdvdv_o,EXPR ddPdudv_o,EXPR numFloats_in)
2148=>
2149{
2150  RTCInterpolateNArguments args;
2151  args.geometry = rtcGetGeometry(scene,geomID);
2152  args.valid = valid_in;
2153  args.primIDs = primID_in;
2154  args.u = u_in;
2155  args.v = v_in;
2156  args.N = numUVs_in;
2157  args.bufferType = buffer_in;
2158  args.bufferSlot = /* EMBREE_FIXME: put buffer slot here */;
2159  args.P = P_o;
2160  args.dPdu = dPdu_o;
2161  args.dPdv = dPdv_o;
2162  args.ddPdudu = ddPdudu_o;
2163  args.ddPdvdv = ddPdvdv_o;
2164  args.ddPdudv = ddPdudv_o;
2165  args.valueCount = numFloats_in;
2166  rtcInterpolateN(&args)
2167}
2168}@@
2169
2170@@{
2171rtcDeleteGeometry(EXPR scene,EXPR geomID)
2172=>
2173rtcReleaseGeometry(rtcGetGeometry(scene,geomID))
2174}@@
2175
2176////////////////////////////////////////////////////////////////////////////////////////
2177// rtcore_geometry_user.h
2178
2179
2180@@{
2181RTCBoundsFunc
2182=>
2183RTCBoundsFunction
2184}@@
2185
2186@@{
2187void EXPR RTCBoundsFunc(void* ID geometryUserPtr_in, size_t ID primID_in, RTCBounds& ID bounds_out)
2188{
2189=>
2190void RTCBoundsFunc(const uniform RTCBoundsFunctionArguments* uniform args)
2191{
2192  void* uniform geometryUserPtr_in = args->geometryUserPtr;
2193  uniform size_t primID_in = args->primID;
2194  COMMENT uniform unsigned int time = args->timeStep;
2195  uniform RTCBounds& bounds_out = *args->bounds_o;
2196}@@
2197
2198@@{
2199RTCBoundsFunc2
2200=>
2201RTCBoundsFunction
2202}@@
2203
2204@@{
2205void EXPR RTCBoundsFunc2(void* ID userPtr_in, void* ID geometryUserPtr_in, size_t ID primID_in, RTCBounds& ID bounds_out)
2206{
2207=>
2208void RTCBoundsFunc2(const uniform RTCBoundsFunctionArguments* uniform args)
2209{
2210  COMMENT void* uniform userPtr_in = args->userPtr; // no longer available
2211  void* uniform geometryUserPtr_in = args->geometryUserPtr;
2212  uniform size_t primID_in = args->primID;
2213  COMMENT uniform size_t time = args->timeStep;
2214  uniform RTCBounds& bounds_out = *args->bounds_o;
2215}@@
2216
2217@@{
2218RTCBoundsFunc3
2219=>
2220RTCBoundsFunction
2221}@@
2222
2223@@{
2224void EXPR RTCBoundsFunc3(void* ID userPtr_in, void* ID geometryUserPtr_in, size_t ID primID_in, size_t ID time_in, RTCBounds& ID bounds_out)
2225{
2226=>
2227void RTCBoundsFunc3(const uniform RTCBoundsFunctionArguments* uniform args)
2228{
2229  void* uniform userPtr_in = args->userPtr;
2230  void* uniform geometryUserPtr_in = args->geometryUserPtr;
2231  uniform size_t primID_in = args->primID;
2232  uniform size_t time_in = args->time;
2233  uniform RTCBounds& bounds_out = *args->bounds_o;
2234}@@
2235
2236@@{
2237RTCIntersectFunc
2238=>
2239RTCIntersectFunctionN
2240}@@
2241
2242@@{
2243RTCOccludedFunc
2244=>
2245RTCOccludedFunctionN
2246}@@
2247
2248@@{
2249void EXPR RTCIntersectFunc(void* ID geometryUserPtr_in, RTCRay& ID ray_in, size_t ID primID_in)
2250{
2251=>
2252unmasked void RTCIntersectFunc(const uniform RTCIntersectFunctionNArguments* uniform args) // EMBREE_FIXME: may also be RTCOccludedFunctionNArguments
2253{
2254  void* uniform valid_in = args->valid;
2255  varying int* uniform vvalid_in = (varying int* uniform ) valid_in;
2256  void* uniform geometryUserPtr_in = args->geometryUserPtr;
2257  COMMENT RTCIntersectContext* uniform context_in = args->context;
2258  varying RTCRayHit* uniform ray_ptr_in = (varying RTCRayHit* uniform ) args->rayhit;
2259  varying RTCRayHit& ray_in = *ray_ptr_in;
2260  uniform unsigned int N_in = args->N;
2261  uniform unsigned int primID_in = args->primID;
2262  assert(N_in == __programCount);
2263  if (*vvalid_in != -1) return;
2264  // EMBREE_FIXME: intersect func: on hit copy context_in->instID[0] to ray_in.hit.instID[0]
2265  // EMBREE_FIXME: occluded func: on hit set ray_in.tfar = -inf
2266}@@
2267
2268@@{
2269RTCIntersectFunc4
2270=>
2271RTCIntersectFunctionN
2272}@@
2273
2274@@{
2275RTCOccludedFunc4
2276=>
2277RTCOccludedFunctionN
2278}@@
2279
2280@@{
2281void EXPR RTCIntersectFunc4(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay4& ID ray_in, size_t ID primID_in)
2282{
2283=>
2284void RTCIntersectFunc4(const uniform RTCIntersectFunctionNArguments* uniform args) // EMBREE_FIXME: may also be RTCOccludedFunctionNArguments
2285{
2286  const void* valid_in = args->valid;
2287  void* geometryUserPtr_in = args->geometryUserPtr;
2288  COMMENT RTCIntersectContext* context_in = args->context;
2289  RTCRayHit4& ray_in = *(RTCRayHit4*) args->rayhit;
2290  unsigned int N_in = args->N;
2291  unsigned int primID_in = args->primID;
2292  assert(N_in == 4);
2293  // EMBREE_FIXME: intersect func: on hit copy context_in->instID[0] to ray_in.hit.instID[0]
2294  // EMBREE_FIXME: occluded func: on hit set ray_in.tfar = -inf
2295}@@
2296
2297@@{
2298RTCIntersectFunc8
2299=>
2300RTCIntersectFunctionN
2301}@@
2302
2303@@{
2304RTCOccludedFunc8
2305=>
2306RTCOccludedFunctionN
2307}@@
2308
2309@@{
2310void EXPR RTCIntersectFunc8(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay8& ID ray_in, size_t ID primID_in)
2311{
2312=>
2313void RTCIntersectFunc8(const uniform RTCIntersectFunctionNArguments* uniform args) // EMBREE_FIXME: may also be RTCOccludedFunctionNArguments
2314{
2315  const void* valid_in = args->valid;
2316  void* geometryUserPtr_in = args->geometryUserPtr;
2317  COMMENT RTCIntersectContext* context_in = args->context;
2318  RTCRayHit8& ray_in = *(RTCRayHit8*) args->rayhit;
2319  unsigned int N_in = args->N;
2320  unsigned int primID_in = args->primID;
2321  assert(N_in == 8);
2322  // EMBREE_FIXME: intersect func: on hit copy context_in->instID[0] to ray_in.hit.instID[0]
2323  // EMBREE_FIXME: occluded func: on hit set ray_in.tfar = -inf
2324}@@
2325
2326@@{
2327RTCIntersectFunc16
2328=>
2329RTCIntersectFunctionN
2330}@@
2331
2332@@{
2333RTCOccludedFunc16
2334=>
2335RTCOccludedFunctionN
2336}@@
2337
2338@@{
2339void EXPR RTCIntersectFunc16(const void* ID valid_in, void* ID geometryUserPtr_in, RTCRay16& ID ray_in, size_t ID primID_in)
2340{
2341=>
2342void RTCIntersectFunc16(const uniform RTCIntersectFunctionNArguments* uniform args) // EMBREE_FIXME: may also be RTCOccludedFunctionNArguments
2343{
2344  const void* valid_in = args->valid;
2345  void* geometryUserPtr_in = args->geometryUserPtr;
2346  COMMENT RTCIntersectContext* context_in = args->context;
2347  RTCRayHit16& ray_in = *(RTCRayHit16*) args->rayhit;
2348  unsigned int N_in = args->N;
2349  unsigned int primID_in = args->primID;
2350  assert(N_in == 16);
2351  // EMBREE_FIXME: intersect func: on hit copy context_in->instID[0] to ray_in.hit.instID[0]
2352  // EMBREE_FIXME: occluded func: on hit set ray_in.tfar = -inf
2353}@@
2354
2355@@{
2356RTCIntersectFuncN
2357=>
2358RTCIntersectFunctionN
2359}@@
2360
2361@@{
2362RTCOccludedFuncN
2363=>
2364RTCOccludedFunctionN
2365}@@
2366
2367@@{
2368void EXPR RTCIntersectFuncN(const int* ID valid_in, void* ID geometryUserPtr_in, const RTCIntersectContext* ID context_in, RTCRayN* ID ray_in, size_t ID N_in, size_t ID primID_in)
2369{
2370=>
2371void RTCIntersectFuncN(const uniform RTCIntersectFunctionNArguments* uniform args) // EMBREE_FIXME: may also be RTCOccludedFunctionNArguments
2372{
2373  const int* uniform valid_in = args->valid;
2374  void* uniform geometryUserPtr_in = args->geometryUserPtr;
2375  RTCIntersectContext* uniform context_in = args->context;
2376  RTCRayHitN* uniform ray_in = args->rayhit;
2377  uniform unsigned int N_in = args->N;
2378  uniform unsigned int primID_in = args->primID;
2379  // EMBREE_FIXME: intersect func: on hit copy context_in->instID[0] to ray_in.hit.instID[0]
2380  // EMBREE_FIXME: occluded func: on hit set ray_in.tfar = -inf
2381}@@
2382
2383@@{
2384rtcNewUserGeometry
2385=>
2386rtcNewUserGeometry2
2387}@@
2388
2389@@{
2390rtcNewUserGeometry2 (EXPR scene, EXPR numPrimitives)
2391=>
2392rtcNewUserGeometry2 (scene, numPrimitives, 1)
2393}@@
2394
2395@@{
2396rtcNewUserGeometry2 (EXPR scene, EXPR numPrimitives, EXPR numTimeSteps)
2397=>
2398rtcNewUserGeometry3 (scene, RTC_BUILD_QUALITY_MEDIUM, numPrimitives, numTimeSteps)
2399}@@
2400
2401@@{
2402rtcNewUserGeometry3 (EXPR scene, EXPR quality, EXPR numPrimitives)
2403=>
2404rtcNewUserGeometry3 (scene, quality, numPrimitives, 1)
2405}@@
2406
2407@@{
2408rtcNewUserGeometry3
2409=>
2410rtcNewUserGeometry4
2411}@@
2412
2413@@{
2414rtcNewUserGeometry4 (EXPR scene, EXPR quality, EXPR numPrimitives)
2415=>
2416rtcNewUserGeometry4 (scene, quality, numPrimitives, 1)
2417}@@
2418
2419@@{
2420LHS geomID = rtcNewUserGeometry4 (EXPR scene, EXPR quality, EXPR numPrimitives, EXPR numTimeSteps)
2421=>
2422uniform RTCGeometry VAR geom = rtcNewUserGeometry (g_device, quality, numPrimitives, numTimeSteps);
2423geomID = rtcAttachGeometry(scene,geom);
2424rtcReleaseGeometry(geom);
2425}@@
2426
2427@@{
2428rtcNewUserGeometry4 (EXPR scene, EXPR quality, EXPR numPrimitives, EXPR numTimeSteps)
2429=>
2430uniform RTCGeometry VAR geom = rtcNewUserGeometry (g_device, quality, numPrimitives, numTimeSteps);
2431rtcAttachGeometry(scene,geom);
2432rtcReleaseGeometry(geom);
2433}@@
2434
2435@@{
2436rtcNewUserGeometry4 (EXPR scene, EXPR quality, EXPR numPrimitives, EXPR numTimeSteps, EXPR geomID)
2437=>
2438uniform RTCGeometry VAR geom = rtcNewUserGeometry (g_device, quality, numPrimitives, numTimeSteps);
2439rtcAttachGeometryById(scene,geom,geomID);
2440rtcReleaseGeometry(geom);
2441}@@
2442
2443@@{
2444RTCGeometry ID geom = rtcNewUserGeometry (EXPR device, EXPR quality, EXPR numPrimitives, EXPR numTimeSteps);
2445=>
2446uniform RTCGeometry geom = rtcNewUserGeometry (device, quality, numPrimitives, numTimeSteps);
2447rtcSetGeometryBuildQuality(geom,quality);
2448rtcSetGeometryUserPrimitiveCount(geom,numPrimitives);
2449rtcSetGeometryTimeStepCount(geom,numTimeSteps);
2450}@@
2451
2452
2453@@{
2454rtcSetBoundsFunction(EXPR scene,EXPR geomID,EXPR func)
2455=>
2456rtcSetBoundsFunctionX(rtcGetGeometry(scene,geomID),func,NULL)
2457}@@
2458
2459@@{
2460rtcSetBoundsFunction2(EXPR scene,EXPR geomID,EXPR func,EXPR userPtr)
2461=>
2462rtcSetBoundsFunctionX(rtcGetGeometry(scene,geomID),func,userPtr)
2463}@@
2464
2465@@{
2466rtcSetBoundsFunction3(EXPR scene,EXPR geomID,EXPR func,EXPR userPtr)
2467=>
2468rtcSetBoundsFunctionX(rtcGetGeometry(scene,geomID),func,userPtr)
2469}@@
2470
2471@@{
2472rtcSetBoundsFunctionX(EXPR geom,EXPR func,EXPR userPtr)
2473=>
2474rtcSetGeometryBoundsFunction(geom,func,userPtr)
2475}@@
2476
2477@@{
2478rtcSetIntersectFunction1Mp(EXPR scene,EXPR geomID,EXPR func);
2479=>
2480COMMENT rtcSetIntersectFunction1Mp(EXPR scene,EXPR geomID,EXPR func);
2481}@@
2482
2483@@{
2484REGEXPR(name,rtcSetIntersectFunction.*)(
2485=>
2486rtcSetGeometryIntersectFunction(
2487}@@
2488
2489@@{
2490rtcSetGeometryIntersectFunction (EXPR scene, EXPR geomID, EXPR func)
2491=>
2492rtcSetGeometryIntersectFunction (rtcGetGeometry(scene,geomID), func)
2493}@@
2494
2495@@{
2496rtcSetOccludedFunction1Mp(EXPR scene,EXPR geomID,EXPR func);
2497=>
2498COMMENT rtcSetOccludedFunction1Mp(EXPR scene,EXPR geomID,EXPR func);
2499}@@
2500
2501@@{
2502REGEXPR(name,rtcSetOccludedFunction.*)(
2503=>
2504rtcSetGeometryOccludedFunction(
2505}@@
2506
2507@@{
2508rtcSetGeometryOccludedFunction (EXPR scene, EXPR geomID, EXPR func)
2509=>
2510rtcSetGeometryOccludedFunction (rtcGetGeometry(scene,geomID), func)
2511}@@
2512
2513
2514/////////////////////////////////
2515// optimize away rtcGetGeometry
2516
2517@@{
2518LHS geomID = rtcAttachGeometry(EXPR scene,EXPR geom);
2519=>
2520geomID = rtcAttachGeometry(scene,geom);
2521@@{
2522rtcGetGeometry (EXPR scene,EXPR geomID)
2523=>
2524geom
2525}@@
2526}@@
2527
2528@@{
2529rtcAttachGeometryById(EXPR scene,EXPR geom,EXPR geomID);
2530=>
2531rtcAttachGeometryById(scene,geom,geomID);
2532@@{
2533rtcGetGeometry (EXPR scene,EXPR geomID)
2534=>
2535geom
2536}@@
2537}@@
2538
2539////////////////////////////////////////////////////////////////////////////////////////
2540// add rtcCommitGeometry before every return
2541
2542@@{
2543RTCGeometry ID geom = REGEXPR(name,rtcNew.*)(
2544=>
2545uniform RTCGeometry geom = name(
2546@@{
2547return EXPR e0;
2548=>
2549rtcCommitGeometry(geom);
2550return e0;
2551}@@
2552}@@
2553
2554/////////////////////////////////
2555// buffers
2556
2557@@{
2558RTCGeometry ID geom = rtcNewTriangleMesh(EXPR device,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
2559=>
2560uniform RTCGeometry geom = rtcNewTriangleMesh(device,flags,numPrimitives,numVertices,numTimeSteps);
2561@@{
2562rtcMapBuffer(EXPR geom,EXPR bufty,EXPR slot,EXPR format)
2563=>
2564rtcSetNewGeometryBuffer(geom,bufty,slot,format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2565}@@
2566@@{
2567rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot,EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2568=>
2569rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT3,3*sizeof(uniform int),numPrimitives)
2570}@@
2571@@{
2572rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2573=>
2574rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT3,ptr,offset,stride,numPrimitives)
2575}@@
2576@@{
2577rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2578=>
2579rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT3,4*sizeof(uniform float),numVertices)
2580}@@
2581@@{
2582rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2583=>
2584rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT3,ptr,offset,stride,numVertices)
2585}@@
2586@@{
2587rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,EXPR slot,EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2588=>
2589rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,slot,format,ptr,offset,stride,numVertices)
2590}@@
2591}@@
2592
2593@@{
2594RTCGeometry ID geom = rtcNewQuadMesh(EXPR device,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
2595=>
2596uniform RTCGeometry geom = rtcNewQuadMesh(device,flags,numPrimitives,numVertices,numTimeSteps);
2597@@{
2598rtcMapBuffer(EXPR geom,EXPR bufty,EXPR slot,EXPR format)
2599=>
2600rtcSetNewGeometryBuffer(geom,bufty,slot,format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2601}@@
2602@@{
2603rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2604=>
2605rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT4,4*sizeof(uniform int),numPrimitives)
2606}@@
2607@@{
2608rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2609=>
2610rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT4,ptr,offset,stride,numPrimitives)
2611}@@
2612@@{
2613rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2614=>
2615rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT3,4*sizeof(uniform float),numVertices)
2616}@@
2617@@{
2618rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2619=>
2620rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT3,ptr,offset,stride,numVertices)
2621}@@
2622@@{
2623rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2624=>
2625rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,slot,format,ptr,offset,stride,numVertices)
2626}@@
2627}@@
2628
2629@@{
2630RTCGeometry ID geom = rtcNewSubdivisionMesh(EXPR device,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles,EXPR numTimeSteps);
2631=>
2632uniform RTCGeometry geom = rtcNewSubdivisionMesh(device,flags,numPrimitives,numEdges,numVertices,numEdgeCreases,numVertexCreases,numHoles,numTimeSteps);
2633@@{
2634rtcMapBuffer(EXPR geom,EXPR bufty,EXPR slot,EXPR format)
2635=>
2636rtcSetNewGeometryBuffer(geom,bufty,slot,format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2637}@@
2638@@{
2639rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_FACE,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2640=>
2641rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_FACE,slot,RTC_FORMAT_UINT,sizeof(uniform int),numPrimitives)
2642}@@
2643@@{
2644rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_FACE,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2645=>
2646rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_FACE,slot,RTC_FORMAT_UINT,ptr,offset,stride,numPrimitives)
2647}@@
2648@@{
2649rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2650=>
2651rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT,sizeof(uniform int),numEdges)
2652}@@
2653@@{
2654rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2655=>
2656rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT,ptr,offset,stride,numEdges)
2657}@@
2658@@{
2659rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2660=>
2661rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT3,4*sizeof(uniform float),numVertices)
2662}@@
2663@@{
2664rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2665=>
2666rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT3,ptr,offset,stride,numVertices)
2667}@@
2668@@{
2669rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_LEVEL,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2670=>
2671rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_LEVEL,slot,format,sizeof(uniform int),numEdges)
2672}@@
2673@@{
2674rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_LEVEL,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2675=>
2676rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_LEVEL,slot,format,ptr,offset,stride,numEdges)
2677}@@
2678@@{
2679rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2680=>
2681rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,slot,format,2*sizeof(uniform int),numEdgeCreases)
2682}@@
2683@@{
2684rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2685=>
2686rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_INDEX,slot,format,ptr,offset,stride,numEdgeCreases)
2687}@@
2688@@{
2689rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2690=>
2691rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,slot,format,sizeof(uniform float),numEdgeCreases)
2692}@@
2693@@{
2694rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2695=>
2696rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT,slot,format,ptr,offset,stride,numEdgeCreases)
2697}@@
2698@@{
2699rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2700=>
2701rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,slot,format,sizeof(uniform int),numVertexCreases)
2702}@@
2703@@{
2704rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2705=>
2706rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX,slot,format,ptr,offset,stride,numVertexCreases)
2707}@@
2708@@{
2709rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2710=>
2711rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,slot,format,sizeof(uniform float),numVertexCreases)
2712}@@
2713@@{
2714rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2715=>
2716rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT,slot,format,ptr,offset,stride,numVertexCreases)
2717}@@
2718@@{
2719rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_HOLE,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2720=>
2721rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_HOLE,slot,format,sizeof(uniform int),numPrimitives)
2722}@@
2723@@{
2724rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_HOLE,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2725=>
2726rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_HOLE,slot,format,ptr,offset,stride,numPrimitives)
2727}@@
2728@@{
2729rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2730=>
2731rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,slot,format,ptr,offset,stride,numVertices) /* EMBREE_FIXME: verify size of this buffer! */
2732}@@
2733}@@
2734
2735@@{
2736RTCGeometry ID geom = rtcNewCurveGeometry (EXPR device,EXPR type,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
2737=>
2738uniform RTCGeometry geom = rtcNewCurveGeometry (device,type,flags,numPrimitives,numVertices,numTimeSteps);
2739@@{
2740rtcMapBuffer(EXPR geom,EXPR bufty,EXPR slot,EXPR format)
2741=>
2742rtcSetNewGeometryBuffer(geom,bufty,slot,format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2743}@@
2744@@{
2745rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2746=>
2747rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT,sizeof(uniform int),numPrimitives)
2748}@@
2749@@{
2750rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_INDEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2751=>
2752rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_INDEX,slot,RTC_FORMAT_UINT,ptr,offset,stride,numPrimitives)
2753}@@
2754@@{
2755rtcSetNewGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2756=>
2757rtcSetNewGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT4,4*sizeof(uniform float),numVertices)
2758}@@
2759@@{
2760rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2761=>
2762rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX,slot,RTC_FORMAT_FLOAT4,ptr,offset,stride,numVertices)
2763}@@
2764@@{
2765rtcSetSharedGeometryBuffer(EXPR geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,EXPR slot, EXPR format,EXPR ptr,EXPR offset,EXPR stride,EMBREE_FIXME_COULD_NOT_INFER_SIZE)
2766=>
2767rtcSetSharedGeometryBuffer(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,slot,format,ptr,offset,stride,numVertices)
2768}@@
2769}@@
2770
2771
2772@@{
2773rtcMapBuffer(EXPR geom,EXPR type,EXPR slot, EXPR format)
2774=>
2775rtcGetGeometryBufferData(geom,type,slot) /* EMBREE_FIXME: check if this should be rtcSetNewGeometryBuffer */
2776}@@
2777
2778
2779////////////////////////////////////////////////
2780// drop extra arguments of geometry creation
2781
2782@@{
2783rtcNewUserGeometry (EXPR device, EXPR quality, EXPR numPrimitives, EXPR numTimeSteps);
2784=>
2785rtcNewGeometry (device, RTC_GEOMETRY_TYPE_USER); // EMBREE_FIXME: check if geometry gets properly committed
2786}@@
2787
2788@@{
2789rtcNewTriangleMesh (EXPR device,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
2790=>
2791rtcNewGeometry (device, RTC_GEOMETRY_TYPE_TRIANGLE); // EMBREE_FIXME: check if geometry gets properly committed
2792}@@
2793
2794@@{
2795rtcNewQuadMesh (EXPR device,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
2796=>
2797rtcNewGeometry (device, RTC_GEOMETRY_TYPE_QUAD); // EMBREE_FIXME: check if geometry gets properly committed
2798}@@
2799
2800@@{
2801rtcNewSubdivisionMesh (EXPR device,EXPR flags,EXPR numPrimitives,EXPR numEdges,EXPR numVertices,EXPR numEdgeCreases,EXPR numVertexCreases,EXPR numHoles,EXPR numTimeSteps);
2802=>
2803rtcNewGeometry (device, RTC_GEOMETRY_TYPE_SUBDIVISION); // EMBREE_FIXME: check if geometry gets properly committed
2804}@@
2805
2806@@{
2807rtcNewCurveGeometry (EXPR device,EXPR type,EXPR flags,EXPR numPrimitives,EXPR numVertices,EXPR numTimeSteps);
2808=>
2809rtcNewGeometry (device,type); // EMBREE_FIXME: check if geometry gets properly committed
2810}@@
2811
2812@@{
2813rtcNewInstance(EXPR device,EXPR source,EXPR numTimeSteps);
2814=>
2815rtcNewGeometry (device, RTC_GEOMETRY_TYPE_INSTANCE); // EMBREE_FIXME: check if geometry gets properly committed
2816}@@
2817
2818
2819////////////////////////////////////////////////
2820// rtcore_builder.h
2821
2822@@{
2823RTCBuildSettings
2824=>
2825RTCBuildArguments
2826}@@
2827
2828@@{
2829rtcDefaultBuildSettings
2830=>
2831rtcDefaultBuildArguments
2832}@@
2833
2834@@{
2835RTCBuildArguments ID args
2836=>
2837uniform RTCBuildArguments args
2838@@{
2839ID args.size
2840=>
2841args.byteSize
2842}@@
2843@@{
2844ID args.quality
2845=>
2846args.buildQuality
2847}@@
2848@@{
2849ID args.flags
2850=>
2851args.buildFlags
2852}@@
2853@@{
2854ID args.travCost
2855=>
2856args.traversalCost
2857}@@
2858@@{
2859ID args.intCost
2860=>
2861args.intersectionCost
2862}@@
2863@@{
2864ID args.extraSpace
2865=>
2866args.primitiveArrayCapacity // EMBREE_FIXME: calculate capacity properly
2867}@@
2868}@@
2869
2870@@{
2871rtcBuildBVH(EXPR bvh_i, EXPR settings, EXPR primitives_i, EXPR numPrimitives_i, EXPR createNode_i, EXPR setNodeChildren_i,
2872            EXPR setNodeBounds_i, EXPR createLeaf_i, EXPR splitPrimitive_i, EXPR buildProgress_i, EXPR userPtr_i);
2873=>
2874(settings.bvh = bvh_i,
2875settings.primitives = primitives_i,
2876settings.primitiveCount = numPrimitives_i,
2877settings.createNode = createNode_i,
2878settings.setNodeChildren = setNodeChildren_i,
2879settings.setNodeBounds = setNodeBounds_i,
2880settings.createLeaf = createLeaf_i,
2881settings.splitPrimitive = splitPrimitive_i,
2882settings.buildProgress = buildProgress_i,
2883settings.userPtr = userPtr_i,
2884rtcBuildBVH(&settings));
2885}@@
2886
2887@@{
2888void* EXPR RTCCreateNodeFunc (RTCThreadLocalAllocator ID allocator, size_t ID numChildren, void* ID userPtr)
2889=>
2890void* RTCCreateNodeFunc (RTCThreadLocalAllocator allocator, unsigned int numChildren, void* userPtr)
2891}@@
2892
2893@@{
2894void EXPR RTCSetNodeChildrenFunc (void* ID nodePtr, void** ID children, size_t ID numChildren, void* ID userPtr)
2895=>
2896void RTCSetNodeChildrenFunc (void* nodePtr, void** children, unsigned int numChildren, void* userPtr)
2897}@@
2898
2899@@{
2900void EXPR RTCSetNodeBoundsFunc (void* ID nodePtr, const RTCBounds** ID bounds, size_t ID numChildren, void* ID userPtr)
2901=>
2902void RTCSetNodeBoundsFunc (void* nodePtr, const RTCBounds** bounds, unsigned int numChildren, void* userPtr)
2903}@@
2904
2905//@@{
2906//void* EXPR RTCCreateLeafFunc (RTCThreadLocalAllocator ID allocator, const RTCBuildPrimitive* ID prims, size_t ID numPrims, void* ID userPtr)
2907//=>
2908//void* RTCCreateLeafFunc (RTCThreadLocalAllocator allocator, const RTCBuildPrimitive* prims, size_t numPrims, void* userPtr)
2909//}@@
2910
2911@@{
2912void EXPR RTCSplitPrimitiveFunc (const RTCBuildPrimitive& ID prim, unsigned ID dim, float ID pos, RTCBounds& ID lbounds, RTCBounds& ID rbounds, void* ID userPtr)
2913{
2914=>
2915void RTCSplitPrimitiveFunc (const RTCBuildPrimitive* _prim, unsigned int dim, float pos, RTCBounds* _lbounds, RTCBounds* _rbounds, void* userPtr)
2916{
2917  const RTCBuildPrimitive& prim = *_prim;
2918  RTCBounds& lbounds = *_lbounds;
2919  RTCBounds& rbounds = *_rbounds;
2920}@@
2921
2922@@{
2923void EXPR RTCBuildProgressFunc (size_t ID dn, void* ID userPtr)
2924{
2925=>
2926bool RTCBuildProgressFunc (void* uniform userPtr, uniform double _dn)
2927{
2928uniform size_t dn = _dn; // EMBREE_FIXME: multiply by number of primitives
2929return true; // EMBREE_FIXME: you have to return true from this function
2930}@@
2931
2932@@{
2933rtcMakeStaticBVH(EXPR bvh)
2934=>
2935COMMENT rtcMakeStaticBVH(bvh)
2936// EMBREE_FIXME: set settings.flags = RTC_BUILD_FLAG_DYNAMIC instead
2937}@@
2938
2939@@{
2940rtcDeleteBVH(EXPR bvh)
2941=>
2942rtcReleaseBVH(bvh)
2943}@@
2944
2945////////////////////////////////////////////////
2946// special rules for tutorials
2947
2948//@@{
2949//RTCRay
2950//=>
2951//varying Ray
2952//}@@
2953//
2954//@@{
2955//Ray ID myray
2956//=>
2957//varying Ray myray
2958//@@{cpp
2959//ID myray.tnear
2960//=>
2961//myray.tnear()
2962//}@@
2963//@@{cpp
2964//ID myray.tfar
2965//=>
2966//myray.tfar()
2967//}@@
2968//@@{
2969//&ID myray
2970//=>
2971//RTCRay_(myray)
2972//}@@
2973//@@{
2974//ID myray.Ng_x
2975//=>
2976//myray.Ng.x
2977//}@@
2978//@@{
2979//ID myray.Ng_y
2980//=>
2981//myray.Ng.y
2982//}@@
2983//@@{
2984//ID myray.Ng_z
2985//=>
2986//myray.Ng.z
2987//}@@
2988//}@@
2989//
2990//@@{
2991//Ray& ID myray =
2992//=>
2993//varying Ray& myray =
2994//@@{cpp
2995//ID myray.tnear
2996//=>
2997//myray.tnear()
2998//}@@
2999//@@{cpp
3000//ID myray.tfar
3001//=>
3002//myray.tfar()
3003//}@@
3004//@@{
3005//&ID myray
3006//=>
3007//RTCRay_(myray)
3008//}@@
3009//}@@
3010//
3011//@@{
3012//RTCIntersectContext* ID context_in = args->context;
3013//=>
3014//uniform IntersectContext* uniform context_in = (uniform IntersectContext* uniform ) args->context;
3015//}@@
3016//
3017//@@{
3018//RTCIntersectContext
3019//=>
3020//IntersectContext
3021//}@@
3022//
3023//@@{
3024//IntersectContext ID cont;
3025//=>
3026//uniform IntersectContext cont;
3027//@@{
3028//ID cont.flags
3029//=>
3030//cont.context.flags
3031//}@@
3032//@@{
3033//&ID cont
3034//=>
3035//&cont.context
3036//}@@
3037//}@@
3038//
3039//@@{
3040//LINEAR_BASIS
3041//=>
3042//RTC_GEOMETRY_TYPE_ROUND_OR_FLAT_LINEAR_CURVE
3043//}@@
3044//
3045//@@{
3046//BEZIER_BASIS
3047//=>
3048//RTC_GEOMETRY_TYPE_ROUND_OR_FLAT_BEZIER_CURVE
3049//}@@
3050//
3051//@@{
3052//BSPLINE_BASIS
3053//=>
3054//RTC_GEOMETRY_TYPE_ROUND_OR_FLAT_BSPLINE_CURVE
3055//}@@
3056
3057
3058////////////////////////////////////////////////
3059// rtcore_ray.h
3060
3061@@{
3062RTCRay ID query;
3063=>
3064varying RTCRayHit query; // EMBREE_FIXME: use RTCRay for occlusion rays
3065query.ray.flags = 0;
3066@@{
3067ID query.orgx
3068=>
3069query.ray.org_x
3070}@@
3071@@{
3072ID query.orgy
3073=>
3074query.ray.org_y
3075}@@
3076@@{
3077ID query.orgz
3078=>
3079query.ray.org_z
3080}@@
3081@@{
3082ID query.tnear
3083=>
3084query.ray.tnear
3085}@@
3086@@{
3087ID query.dirx
3088=>
3089query.ray.dir_x
3090}@@
3091@@{
3092ID query.diry
3093=>
3094query.ray.dir_y
3095}@@
3096@@{
3097ID query.dirz
3098=>
3099query.ray.dir_z
3100}@@
3101@@{
3102ID query.tfar
3103=>
3104query.ray.tfar
3105}@@
3106@@{
3107ID query.time
3108=>
3109query.ray.time
3110}@@
3111@@{
3112ID query.mask
3113=>
3114query.ray.mask
3115}@@
3116@@{
3117ID query.Ngx
3118=>
3119query.hit.Ng_x
3120}@@
3121@@{
3122ID query.Ngy
3123=>
3124query.hit.Ng_y
3125}@@
3126@@{
3127ID query.Ngz
3128=>
3129query.hit.Ng_z
3130}@@
3131@@{
3132ID query.u
3133=>
3134query.hit.u
3135}@@
3136@@{
3137ID query.v
3138=>
3139query.hit.v
3140}@@
3141@@{
3142ID query.primID
3143=>
3144query.hit.primID
3145}@@
3146@@{
3147ID query.geomID
3148=>
3149query.hit.geomID
3150}@@
3151@@{
3152ID query.instID
3153=>
3154query.hit.instID[0]
3155}@@
3156}@@
3157
3158@@{cpp
3159__programCount
3160=>
31611
3162}@@
3163
3164@@{
3165RTCRayN_instID(EXPR ray, EXPR N, EXPR i)
3166=>
3167RTCRayN_instID(ray,N,i,0)
3168}@@
3169
3170@@{ispc
3171__programCount
3172=>
3173programCount
3174}@@
3175
3176
3177