anchor.diff:  uniform sampler2D u_tex0;
   varying vec2 v_uv;
   
  -vec3 D65 = vec3(95.047, 100.000, 108.883);
  +float pi = 3.14159;
  +vec3 D65 = vec3(95.047, 100.0, 108.883);
  +vec3 D50 = vec3(96.422, 100.0,  82.521);
   
   // linear transform matrix for lms = xyz * MCAT02
   mat3 MCAT02 = mat3(0.7328,0.4296,-0.1624,         -0.7036,1.6975,0.0061,         0.0030,0.0136,0.9834);
  
positive.code: }
  
  void main( void ) {
  	vec4 lch = fwd_rgb2jch(texture2D(u_tex0, v_uv));
  
  	if (u_numEdges > 9.0) {					// u_numEdges 0 = no edges, 10 = 1 edge, 20 = 2 edges, 30 = 3 edges, etc.
  		float dx = 1000.0 / (u_numEdges);		// dx is width of grey bands 100 for 1 edge, 50 for 2 edges, 33 for 3 edges, 25 for 4 edges, etc
  
negative.code: 	lch.y = lch.y * (1.0 + u_maxContrast/50.0);														// optionally amp the chroma
  	lch.y = lch.y * u_showColors / 100.0;
  
  	gl_FragColor = rev_jch2rgb(lch, D65, 100.0, 20.0, 1.0);
  }