anchor.diff:  
     resize() {
       ctx.viewport(0, 0, canvas.width, canvas.height);
  -    projectionMatrix = new Matrix4.perspective(fov, canvas.width / canvas.height, 1.0, 4096.0);
  +    camera.aspect = canvas.width / canvas.height;
  +    camera.updateProjection();
     }
   
     bool prepare() {
  
positive.code:       if (i < lights.length) {
          var light = lights[i];
          light.updateMatrix();
          ctx.uniform1i(shader.uniforms[lt].location, light.type);
          ctx.uniform1f(shader.uniforms["light${i}.intensity"].location, light.intensity);
          ctx.uniform3fv(shader.uniforms["light${i}.direction"].location, light.direction.storage);
          ctx.uniform3fv(shader.uniforms["light${i}.color"].location, light.color.storage);
          ctx.uniform3fv(shader.uniforms["light${i}.position"].location, light.position.storage);
          ctx.uniform1f(shader.uniforms["light${i}.constantAttenuation"].location, light.constantAttenuation);
          ctx.uniform1f(shader.uniforms["light${i}.linearAttenuation"].location, light.linearAttenuation);
          ctx.uniform1f(shader.uniforms["light${i}.quadraticAttenuation"].location, light.quadraticAttenuation);
          if (light.spotExponent != null) ctx.uniform1f(shader.uniforms["light${i}.spotExponent"].location, light.spotExponent);
          if (light.spotCutoff != null) ctx.uniform1f(shader.uniforms["light${i}.spotCosCutoff"].location, light.spotCosCutoff);
        } else {
  
negative.code:     shader.uniform(ctx, Semantics.useTextures, false);
  
      if (node is Light) {
        //      _drawLight(node);
      } else if (node is Mesh) {
        _drawMesh(node);
      }
  