              true, // Local illumination.
              true, // Opacity correction.
              false, // Jittering.
-             true, // Clip sphere.
+             false, // Clip sphere.
              false, // Clip plane.
              false // Show what's inside the clip sphere.
             ><<<gridSize, blockSize>>>(d_output, width, height,

}

template<int bpc>
__device__ float4 phong(const float4& classification, const float3& pos,
                        const float3& L, const float3& H,
                        const float3& Ka, const float3& Kd, const float3& Ks,
                        const float shininess,
                        const float3* normal = NULL)
{
  float3 N;
  float3 sample1;
  float3 sample2;
  const float DELTA = 0.01f;
  sample1.x = volume<bpc>(pos - make_float3(DELTA, 0.0f, 0.0f));
  sample2.x = volume<bpc>(pos + make_float3(DELTA, 0.0f, 0.0f));
  sample1.y = volume<bpc>(pos - make_float3(0.0f, DELTA, 0.0f));

  sample1.z = volume<bpc>(pos - make_float3(0.0f, 0.0f, DELTA));
  sample2.z = volume<bpc>(pos + make_float3(0.0f, 0.0f, DELTA));

  return sample2 - sample1;
}

template<int bpc>
__device__ float4 blinnPhong(const float4& classification, const float3& pos,
                             const float3& L, const float3& H,
                             const float3& Ka, const float3& Kd, const float3& Ks,
                             const float shininess,
                             const float3* normal = NULL)
{
  float3 N = normalize(gradient<bpc>(pos));

  if (normal != NULL)
  {
