anchor.diff:  
     _updateShader() {
       var frag = makeShader(_os, tmpl:tmpl, stepmax: stepmax, epsilon_de:epsilon_de, nearLight: nearLight);
  +    if (debugPrintFragShader) {
  +      print("_updateShader");
  +      print(frag);
  +    }
       _post2d.filters[0] = new glf.Filter2D(gl, frag, (ctx){
         ctx.gl.uniform1f(ctx.getUniformLocation(glf.SFNAME_NEAR), camera.near);
         ctx.gl.uniform1f(ctx.getUniformLocation(glf.SFNAME_FAR), camera.far);
  
positive.code:   String de;
    /// code of the signed distance of the object (shape)
    String sd;
    /// shade fragment to insert into the shade
    String sh;
    /// code of the material of the object
  
negative.code:       ctx.gl.uniform3fv(ctx.getUniformLocation(glf.SFNAME_FOCUSPOSITION), camera.focusPosition.storage);
        _os.forEach((x){if (x.at != null) { x.at(ctx); }});
      });
      _needShaderUpdate = false;
    }
  
  