| 5975 | } |
| 5976 | |
| 5977 | void render_block(size_t i, size_t dn) |
| 5978 | { |
| 5979 | RTCRayQueryContext context; |
| 5980 | rtcInitRayQueryContext(&context); |
| 5981 | |
| 5982 | RTCIntersectArguments args; |
| 5983 | rtcInitIntersectArguments(&args); |
| 5984 | args.context = &context; |
| 5985 | args.flags = ((ivariant & VARIANT_COHERENT_INCOHERENT_MASK) == VARIANT_COHERENT) ? RTC_RAY_QUERY_FLAG_COHERENT : RTC_RAY_QUERY_FLAG_INCOHERENT; |
| 5986 | |
| 5987 | RandomSampler sampler; |
| 5988 | RandomSampler_init(sampler, (int)i); |
| 5989 | |
| 5990 | switch (imode) |
| 5991 | { |
| 5992 | case MODE_INTERSECT1: |
| 5993 | { |
| 5994 | for (size_t j=0; j<dn; j++) { |
| 5995 | RTCRayHit ray; |
| 5996 | fastMakeRay(ray,zero,sampler); |
| 5997 | switch (ivariant & VARIANT_INTERSECT_OCCLUDED_MASK) { |
| 5998 | case VARIANT_INTERSECT: rtcIntersect1(*scene,&ray,&args); break; |
| 5999 | case VARIANT_OCCLUDED : rtcOccluded1 (*scene,(RTCRay*)&ray,(RTCOccludedArguments*)&args); break; |
| 6000 | } |
| 6001 | } |
| 6002 | break; |
| 6003 | } |
| 6004 | case MODE_INTERSECT4: |
| 6005 | { |
| 6006 | for (size_t j=0; j<dn; j+=4) { |
| 6007 | RTCRayHit4 ray4; |
| 6008 | for (size_t k=0; k<4; k++) { |
| 6009 | setRay(ray4,k,fastMakeRay(zero,sampler)); |
| 6010 | } |
| 6011 | __aligned(16) int valid4[4] = { -1,-1,-1,-1 }; |
| 6012 | switch (ivariant & VARIANT_INTERSECT_OCCLUDED_MASK) { |
| 6013 | case VARIANT_INTERSECT: rtcIntersect4(valid4,*scene,&ray4,&args); break; |
| 6014 | case VARIANT_OCCLUDED : rtcOccluded4 (valid4,*scene,(RTCRay4*)&ray4,(RTCOccludedArguments*)&args); break; |
| 6015 | } |
| 6016 | } |
| 6017 | break; |
| 6018 | } |
| 6019 | case MODE_INTERSECT8: |
| 6020 | { |
| 6021 | for (size_t j=0; j<dn; j+=8) { |
| 6022 | RTCRayHit8 ray8; |
| 6023 | for (size_t k=0; k<8; k++) { |
| 6024 | setRay(ray8,k,fastMakeRay(zero,sampler)); |
| 6025 | } |
| 6026 | __aligned(32) int valid8[8] = { -1,-1,-1,-1,-1,-1,-1,-1 }; |
| 6027 | switch (ivariant & VARIANT_INTERSECT_OCCLUDED_MASK) { |
| 6028 | case VARIANT_INTERSECT: rtcIntersect8(valid8,*scene,&ray8,&args); break; |
| 6029 | case VARIANT_OCCLUDED : rtcOccluded8 (valid8,*scene,(RTCRay8*)&ray8,(RTCOccludedArguments*)&args); break; |
| 6030 | } |
| 6031 | } |
| 6032 | break; |
| 6033 | } |
| 6034 | case MODE_INTERSECT16: |
nothing calls this directly
no test coverage detected