MCPcopy Create free account
hub / github.com/RenderKit/embree / render_block

Method render_block

tutorials/verify/verify.cpp:5815–5908  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5813 }
5814
5815 void render_block(size_t i, size_t)
5816 {
5817 float rcpWidth = 1.0f/width;
5818 float rcpHeight = 1.0/height;
5819 const size_t tileY = i / numTilesX;
5820 const size_t tileX = i - tileY * numTilesX;
5821 const size_t x0 = tileX * tileSizeX;
5822 const size_t x1 = min(x0 + tileSizeX, width);
5823 const size_t y0 = tileY * tileSizeY;
5824 const size_t y1 = min(y0 + tileSizeY, height);
5825
5826 RTCRayQueryContext context;
5827 rtcInitRayQueryContext(&context);
5828
5829 RTCIntersectArguments args;
5830 rtcInitIntersectArguments(&args);
5831 args.context = &context;
5832 args.flags = ((ivariant & VARIANT_COHERENT_INCOHERENT_MASK) == VARIANT_COHERENT) ? RTC_RAY_QUERY_FLAG_COHERENT : RTC_RAY_QUERY_FLAG_INCOHERENT;
5833
5834 switch (imode)
5835 {
5836 case MODE_INTERSECT1:
5837 {
5838 for (size_t y=y0; y<y1; y++) {
5839 for (size_t x=x0; x<x1; x++) {
5840 RTCRayHit ray = fastMakeRay(zero,Vec3f(float(x)*rcpWidth,1,float(y)*rcpHeight));
5841 switch (ivariant & VARIANT_INTERSECT_OCCLUDED_MASK) {
5842 case VARIANT_INTERSECT: rtcIntersect1(*scene,&ray,&args); break;
5843 case VARIANT_OCCLUDED : rtcOccluded1 (*scene,(RTCRay*)&ray,(RTCOccludedArguments*)&args); break;
5844 }
5845 }
5846 }
5847 break;
5848 }
5849 case MODE_INTERSECT4:
5850 {
5851 for (size_t y=y0; y<y1; y+=2) {
5852 for (size_t x=x0; x<x1; x+=2) {
5853 RTCRayHit4 ray4;
5854 for (size_t dy=0; dy<2; dy++) {
5855 for (size_t dx=0; dx<2; dx++) {
5856 setRay(ray4,2*dy+dx,fastMakeRay(zero,Vec3f(float(x+dx)*rcpWidth,1,float(y+dy)*rcpHeight)));
5857 }
5858 }
5859 __aligned(16) int valid4[4] = { -1,-1,-1,-1 };
5860 switch (ivariant & VARIANT_INTERSECT_OCCLUDED_MASK) {
5861 case VARIANT_INTERSECT: rtcIntersect4(valid4,*scene,&ray4,&args); break;
5862 case VARIANT_OCCLUDED : rtcOccluded4 (valid4,*scene,(RTCRay4*)&ray4,(RTCOccludedArguments*)&args); break;
5863 }
5864 }
5865 }
5866 break;
5867 }
5868 case MODE_INTERSECT8:
5869 {
5870 for (size_t y=y0; y<y1; y+=4) {
5871 for (size_t x=x0; x<x1; x+=2) {
5872 RTCRayHit8 ray8;

Callers

nothing calls this directly

Calls 14

rtcInitRayQueryContextFunction · 0.85
fastMakeRayFunction · 0.85
rtcIntersect1Function · 0.85
rtcOccluded1Function · 0.85
setRayFunction · 0.85
rtcIntersect4Function · 0.85
rtcOccluded4Function · 0.85
rtcIntersect8Function · 0.85
rtcOccluded8Function · 0.85
rtcIntersect16Function · 0.85
rtcOccluded16Function · 0.85

Tested by

no test coverage detected