     return czm_phong(normalize(positionToEyeEC), material);
 }
 
-bool ellipsoidSensorIntersection(float pointInEllipsoid)
+bool ellipsoidSensorIntersection(czm_raySegment ellipsoidInterval, float pointInEllipsoid)
 {
+    if (czm_isEmpty(ellipsoidInterval)) {
+        return false;
+    }
+
     float t = pointInEllipsoid;
 
 #ifdef GL_OES_standard_derivatives
     float epsilon = max(abs(dFdx(t)), abs(dFdy(t)));
-
-    epsilon = clamp(epsilon, 0.0, 0.015);
 #else
     // TODO:  Don't hardcode this.
     float epsilon = 1.0 / 500.0;

        discard;
    }

    gl_FragColor = shade(pointInEllipsoid);
}

    return czm_equalsEpsilon(t, 1.0, epsilon);
}

vec4 shade(czm_raySegment ellipsoidInterval, float pointInEllipsoid)
{
    if (u_showIntersection && ellipsoidSensorIntersection(ellipsoidInterval, pointInEllipsoid))
    {
        return getIntersectionColor(u_sensorRadius, v_positionEC);
    }
