anchor.diff:      upd0 = (tick){
         transforms.setIdentity();
         transforms.rotateY((tick.time % 5000.0) / 5000.0 * 2 * math.PI);
  +      glf.makeNormalMatrix(transforms, normalMatrix);
       };
       onUpdate.add(upd0);
   
  
positive.code: 
    var _x0, _x1, _x2;
    init() {
      _initCamera();
      _initLight();
      _initPost();
      //_x0 = gl.getExtension("OES_standard_derivatives");
      _x1 = gl.getExtension("OES_texture_float");
      //_x2 = gl.getExtension("GL_EXT_draw_buffers");
      //print(">>>> extension $_x0 $_x1 $_x2");
    }
  
    _initCamera() {
  
negative.code:     _light.camera.near = math.max(0.1, v2.x);//math.max(0.5, (_light.camera.focusPosition - _light.camera.position).length - 3.0);
      //_light.camera.updateProjectionViewMatrix();
  
      lightRunner.fbo = new glf.FBO(gl)..make(width : _light.viewWidth, height : _light.viewHeight);
      lightCtx = new glf.ProgramContext(gl, depthVert0, depthFrag0);
      //lightCtx = new glf.ProgramContext(gl, depthVert0, normalFrag0);
      lightRunner.register(_light.makeRequestRunOn()
  