14 Commits

Author SHA1 Message Date
ztenghui
26131368ec Fix the (0,0) vector case for extra vertices computation
TODO: Figure out why we have collided vertices from input polygon.

b/17340792

Change-Id: I6636ff957ef17514bd11cf290ccc0a2c302aca0b
2014-09-01 17:23:27 -07:00
ztenghui
d5e8ade498 Ambient shadow tessellation improvement.
Using the vertices, instead of ray casting for the triangulation.

This request a dynamic index buffer associated with vertex buffer,
so we update the VertexBuffer to support it.

The ambient shadow could be 3x-6x times faster for circle and rect now.

b/16712006
b/14257173

Change-Id: I2f22a8fe19bc59acee5c18e4a3a395acd5042a66
2014-08-29 13:40:42 -07:00
Chris Craik
91a8c7c629 Switch to cos interpolation of shadow alpha
bug:16852257

Updates default shadow opacities to compensate.

Also, update variable/constant naming related to vertex alpha.

Change-Id: I9055b4ac3c9ac305ca9d515f21b52d6aa6dc9c5c
2014-08-12 16:00:09 -07:00
John Reck
1aa5d2d706 Fix ALL compile warnings
All warnings/errors fixed for GCC & Clang

Change-Id: I2ece3a136a5ae97a9acc3069537ed986238b5fd3
2014-07-24 14:28:08 -07:00
Chris Craik
9a89bc6524 Compute layer bounds over subset of VertexBuffer verts
bug:15538815
Change-Id: I0dbb54f656a6ae99a87c5734761107e1c2351b65
2014-07-24 17:49:23 +00:00
Chris Craik
c93e45cf04 Build layer damage bounds for shadows
bug:15538815

Change-Id: I703afeb7e31c28002bd1aff9ce448ec8cdc4e70d
2014-07-23 11:04:53 -07:00
Chris Craik
05f3d6e511 Tessellate on worker threads
Tessellate and cache (where possible) shadow and round rect
tessellation tasks.

Change-Id: I2cfda8e11d83d51ea74af871235cf26e8f831d40
2014-06-10 01:53:17 +00:00
ztenghui
2e023f3827 Make sure the theta is correctly represented and incoming polygon is CW for shadow.
Now the theta = 0 should be on +x axis.
And cos(theta) should correctly represent x value.
Without this fix, the poly theta (from atan2) can be wrongly rotated 90 degrees.

Also, make sure the incoming polygon is CW for the shadow system.
This fix visual artifacts in recent regression for spot shadows.

bug:13553955

Change-Id: I9bbf54db094e7f133326da4dae4610962da849c1
2014-04-28 16:43:13 -07:00
ztenghui
7940dc57e3 Shoot the rays to the vertices of the incoming polygon.
bug:13553955

Change-Id: I4825a49e8eaab969c40f2ee4086f7669c9c6fd29
2014-04-24 09:53:20 -07:00
ztenghui
50ecf849cb Create one hole inside the umbra area to avoid overdraw.
bug:13439450

Change-Id: I859575196bd5a3029f447883025a6ec3a1f1face
2014-03-17 10:10:02 -07:00
Chris Craik
726118b352 Improve shadow tessellation performance
- Tune and simplify shadow parameters
- Remove additional inner rings
- Improve polygon ray casting algorithm

Change-Id: If0f28b2d66ae0480b675942bb65e8fcd2864425d
2014-03-11 15:23:36 -07:00
ztenghui
63d41abb40 Use pre-computed index to draw the shadow.
Also draw the umbra part as triangle fans instead of zig zag fashion.

b/12840179

Change-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf
2014-02-25 14:18:25 -08:00
Chris Craik
564acf7c9b Fix Clang warnings/errors
Fix several build warnings (struct != class, int != size_t) and errors
(variable leng non-POD arrays).

Change-Id: I70b4e784365514303d8954bfcb1f39d7c22c1321
2014-01-02 16:52:32 -08:00
ztenghui
55bfb4e728 Calculate and show Ambient shadow.
Basically we compute the shadow as a strip of triangles, whose alpha value
is the strength of the shadow.
We use the normal to extend the geometry.
And we use static function and try to avoid new/malloc in the computation.

Change-Id: I382286f1cad351bd5ff983f76f446c075819dcaf
2013-12-13 17:25:47 -08:00