anchor.diff:  uniform bool precomputed_gradient; // whether the gradient has been precomputed or not
   
   // computes a simplified lighting equation
  -vec3 blinn_phong(vec3 N, vec3 V, vec3 L, int light)
  +vec3 blinn(vec3 N, vec3 V, vec3 L, int light)
   {
   	// material properties
   	// you might want to put this into a bunch or uniforms
  
positive.code: 	
  	float val = texture3D(volume_texunit, gl_TexCoord[0].xyz ).r;
  	bool sign_prev = val > val_threshold;
  	bool isosurface_found = false;
  	vec3 prev_pos = ray_pos;
  	vec4 frag_color = vec4(0.0, 0.0, 0.0, 0.0);
  	do
  	{
  		// note: 
  
negative.code: 	// compute lighting at isosurface point
  	float val = texture3D(volume_texunit, iso_pos).r;
  
  	// compute the gradient and lighting only if the pixel is visible "enough"
  	vec3 N;
  	if (precomputed_gradient)
  