 varying vec3 varCylZAxis;
 varying float varCylLength;
 varying float varCylWidth;
-#ifdef INSTANCE_DRAW
 varying vec4 varCylColor;
-#endif
 
 vec3 toCylProj(vec3 worldVec)
 {

                    intersectionCount++;
                }
            }
            gl_FragColor = varCylColor;
        } else if (D == 0) {
            gl_FragColor = varCylColor;

        }
        // D < 0 means no solutions; D == 0 means one solution: the ray is "scraping" the
        // cylinder; we can probably ignore this case
    }
}


        //                                                  + (p_x^2 + p_y^2 - r^2) == 0
        float a = dot(localPixelRay.xy, localPixelRay.xy);
        float b = 2 * dot(localPixelPos.xy, localPixelRay.xy);
        float c = dot(localPixelPos.xy, localPixelPos.xy) - cylRadiusSq;
        float D = b*b - 4*a*c;
        if (D > 0) { // two solutions
            float Dsqrt = sqrt(D);
