         for (int pixelX=screenMinX; pixelX<screenMaxX; pixelX++) {
             float2 pixelCenterNorm = make_float2(invWidth * (static_cast<float>(pixelX) + 0.5f),
                                                  invHeight * (static_cast<float>(pixelY) + 0.5f));
-            shadePixel(index, pixelCenterNorm, p, imgPtr);
+            shadePixel(index, pixelCenterNorm, p, imgPtr, rad);
             imgPtr++;
         }
     }

    __shared__ uint scanOutput[THREADS_PER_BLK];
    __shared__ uint scanScratch[2 * THREADS_PER_BLK];
    __shared__ int circleInBlock[THREADS_PER_BLK];

    int index3_circ;
    float3 p_circ;

            index3_circ = 3 * circleIndex;
            p_circ = *(float3*)(&cuConstRendererParams.position[index3_circ]);
            rad = cuConstRendererParams.radius[circleIndex];

            radiusShared[linearThreadIndex] = rad;

            scanInput[linearThreadIndex] = circleInBoxConservative(p_circ.x, p_circ.y, rad, boxL,boxR,boxT,boxB);
        }

        // Exclusive scan
        sharedMemExclusiveScan(linearThreadIndex, scanInput, scanOutput, scanScratch, THREADS_PER_BLK);
        // Sync scanOutput
        __syncthreads();
        // See if last circle in thread block is in block region
        num_circle_in_block = scanOutput[THREADS_PER_BLK-1]+scanInput[THREADS_PER_BLK-1];
