         //Source, scaled XYZ coordinates
         
         // Now iterate through Z in our voxel column FOR A GIVEN PROJECTION
+        #pragma unroll
         for(colIdx=0; colIdx<VOXELS_PER_THREAD; colIdx++)
         {
             unsigned long indZ = startIndZ + colIdx;

        return;
    
    // We'll keep a local auxiliary array of values of a column of voxels that this thread will update
    float voxelColumn[VOXELS_PER_THREAD];
    
    // First we need to copy the curent 3D volume values from the column to our auxiliary array so that we can then
    // work on them (update them by computing values from multiple projections) locally - avoiding main memory reads/writes
    
    int colIdx;
    
    for(colIdx=0; colIdx<VOXELS_PER_THREAD; colIdx++)
    {
        unsigned long indZ = startIndZ + colIdx;

            float u,v;
            u=y+geo.nDetecU/2-0.5;
            v=z+geo.nDetecV/2-0.5;
            float sample=tex2DLayered(tex, u +0.5 ,
                    v +0.5 ,
                    indAlpha);
            float weigth;
            //
            //
