anchor.diff:  const String uBumpMap = "uBumpMap";
   const String uNormalMap = "uNormalMap";
   const String uSpecularMap = "uSpecularMap";
  +const String uAnimationTable = "uAnimationTable";
   
   const String uDepthMap = "uDepthMap";
   const String uShadowMap = "uShadowMap";
  
positive.code:       case VarTypeVec3:
          return 3;
        case VarTypeVec4:
          return 4;
        default:
          assert(false);
  
negative.code:     assert(shader == null);
      // Hack
      bool isFragmentShader = attributeVars.isEmpty;
      List<String> out = [
        "#version 300 es",
        "precision highp float;",
        "precision highp sampler2DShadow;",
        ""
      ];
      for (String v in attributeVars.keys) {
        ShaderVarDesc d = _VarsDb[v];
        out.add("in ${d.type} ${attributeVars[v]};");
  