anchor.diff:      new ShaderObject("LightBlinnPhongShadowF")
         ..AddVaryingVars([vVertexPosition, vNormal, vPositionFromLight])
         ..AddUniformVars([uLightDescs, uLightTypes, uShininess])
  -      ..AddUniformVars([uShadowMap, uEyePosition, uColor, uShadowBias])
  +      ..AddUniformVars(
  +          [uShadowMap, uCanvasSize, uEyePosition, uColor, uShadowBias])
         ..SetBody([
           """
  +
  +
   float GetShadow(vec4 positionFromLight,
  -                    sampler2D shadowMap,
  -                    float darkness,
  -                    float bias) {
  +                sampler2D shadowMap,
  +                float darkness,
  +                float bias) {
   		vec3 depth = positionFromLight.xyz / positionFromLight.w;
   		depth = 0.5 * depth + vec3(0.5);
   		vec2 uv = depth.xy;
  
positive.code:     return (depth.z > d + bias) ? darkness : 1.0;
  }
  
  void main() {
      float shadow = GetShadow(${vPositionFromLight},
                                   ${uShadowMap}, 0.1, ${uShadowBias});
  
  
      ColorComponents acc = ColorComponents(vec3(0.0), vec3(0.0));
  
negative.code: }
        """
        ], prolog: [
          "",
          StdLibShader
        ])
    ];
  