anchor.diff:    sceneShader.uniform(ctx, Semantics.projectionMat, projMat.storage);
     sceneShader.uniform(ctx, "lightView", lightView.storage);
     sceneShader.uniform(ctx, "lightProj", lightProj.storage);
  +  sceneShader.uniform(ctx, "lightPos", light.position.storage);
     ctx.activeTexture(gl.TEXTURE0);
     ctx.bindTexture(lightDepthTexture.target, lightDepthTexture.data);
     sceneShader.uniform(ctx, "depthMapping", 0);
  
positive.code: 
    // shadow calculation
    vec3 projCoords = vLightClipPos.xyz / vLightClipPos.w;
    projCoords.z -= 0.00001;
  
    vec2 uv = projCoords.xy;
    float illuminated = 1.0; 
  
negative.code: attribute highp vec3 aNormal;
  attribute highp vec3 aPosition;
  void main(){
      vPosition = lightView * uModelMat * vec4(aPosition, 1.0);
      gl_Position = lightProj * vPosition;
  }
  """;
  
  const depthMapFS = """
  void main(){
      float linearDepth = length(vPosition) * LinearDepthConstant;
      gl_FragColor = pack(linearDepth);
  }
  """;
  
  