anchor.diff:    glf.RunOnProgramContext at;
   }
   
  -makeShader(List<ObjectInfo> os, {String tmpl: rayMarchingFrag0, stepmax:256, epsilon_de: 0.005}) {
  +makeShader(List<ObjectInfo> os, {String tmpl: rayMarchingFrag0, stepmax:256, epsilon_de: 0.005, nearLight : nearLight0}) {
     var kv = {
      'stepmax' : stepmax,
  -   'epsilon_de': epsilon_de
  +   'epsilon_de': epsilon_de,
  +   'nearLight' : nearLight
     };
   
     var mats = [];
  
positive.code: }
  ''';
  
  
  class ObjectInfo {
    /// code used to inject uniform declaration into the shader
  
negative.code:   glf.Filter2DRunner _post2d;
    List<glf.Filter2D>  get filters2d => _post2d.filters;
    glf.CameraInfo camera;
    var nearLight = nearLight0;
    var tmpl = rayMarchingFrag0;
    var stepmax = 256;
    var epsilon_de = 0.005;
  
    final _os = new List<ObjectInfo>();
    var _needShaderUpdate = true;
  