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