Transform shadow casters correctly in 3d

Change-Id: I11067c5aa8c749089b6ee163ddafa91865cc0d9f
diff --git a/libs/hwui/ShadowTessellator.cpp b/libs/hwui/ShadowTessellator.cpp
index 6385ef7..ddd1c6d 100644
--- a/libs/hwui/ShadowTessellator.cpp
+++ b/libs/hwui/ShadowTessellator.cpp
@@ -45,28 +45,23 @@
  */
 void ShadowTessellator::generateCasterPolygon(float width, float height,
         const mat4& casterTransform, int vertexCount, Vector3* polygon) {
-
-    Vector3 pivot(width / 2, height / 2, 0.0f);
-    casterTransform.mapPoint3d(pivot);
-
-    // TODO: The zScaleFactor need to be mapped to the screen.
-    float zScaleFactor = 0.5;
-    Rect blockRect(pivot.x - width * zScaleFactor, pivot.y - height * zScaleFactor,
-            pivot.x + width * zScaleFactor, pivot.y + height * zScaleFactor);
-
-    // Generate the caster's polygon from the rect.
+    Rect blockRect(0, 0, width, height);
     polygon[0].x = blockRect.left;
     polygon[0].y = blockRect.top;
-    polygon[0].z = pivot.z;
+    polygon[0].z = 0;
     polygon[1].x = blockRect.right;
     polygon[1].y = blockRect.top;
-    polygon[1].z = pivot.z;
+    polygon[1].z = 0;
     polygon[2].x = blockRect.right;
     polygon[2].y = blockRect.bottom;
-    polygon[2].z = pivot.z;
+    polygon[2].z = 0;
     polygon[3].x = blockRect.left;
     polygon[3].y = blockRect.bottom;
-    polygon[3].z = pivot.z;
+    polygon[3].z = 0;
+    casterTransform.mapPoint3d(polygon[0]);
+    casterTransform.mapPoint3d(polygon[1]);
+    casterTransform.mapPoint3d(polygon[2]);
+    casterTransform.mapPoint3d(polygon[3]);
 }
 
 void ShadowTessellator::tessellateAmbientShadow(float width, float height,