History log of /frameworks/base/libs/hwui/SpotShadow.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
3932063bc75dc1e4efc2c428ca208d2e2290164d 12-Nov-2014 ztenghui <ztenghui@google.com> Shadow: Fix the crash in spot shadow

Fix the crash from searching for closest umbra vertex by initialized the
starting index correctly.

Fix another potential crash related to ray intersection by introducing epsilon.


Change-Id: I9ac9a781a885701a8388714d44f79a1d905e5d33
d2dcd6fded3a036f334a88bf9593398833f2919a 30-Oct-2014 ztenghui <ztenghui@google.com> A better looking and faster spot shadow.

1. This improve the looking, the star shape (spike) on long action bar is gone.
Shadow is more smooth now.

2. The performance is better, too. For averaging around rect, round rect and
circle, the spot shadow itself is 3 times faster. On N7 v1, it could be less than
0.1 ms.


Change-Id: I61ed546ee56e7c8dbe504dfcaef12d084904b4b8
9122b1b168d2a74d51517ed7282f4d6a8adea367 03-Oct-2014 ztenghui <ztenghui@google.com> Use float instead of double to increase spot shadow perf

This is helping spot shadow for 15%-20% increase.
With the new algorithm, we are less sensitive to the floating point error.


Change-Id: Ie30a6ce01e73d56054a0cf65a84549454339a7fd
512e643ce83b1d48ad9630a3622276f795cf4fb2 10-Sep-2014 ztenghui <ztenghui@google.com> Re-triangulate the spot shadow.

Fix the valid umbra detection.

This looks better b/c every vertex will have one ray shooting at it, such that
we don't miss the corner.

This performs better too, due to the polygon intersection is removed and less ray
intersection. 2x performance for rect and circle for spot shadow in test app.


Change-Id: I4a5ee397b9e192e93c8e35e6260b499e3e38a6f4
3bd3fa1f1d437e22aee35381a559dcee15a437dd 25-Aug-2014 ztenghui <ztenghui@google.com> Correctly detect the wrong Z value for the light


Change-Id: I2b46da95ad12ca5260d7fe9514a75558b6b6393b
c50a03d78aaedd0003377e98710e7038bda330e9 21-Aug-2014 ztenghui <ztenghui@google.com> Improve the spot shadow computation.

Get rid of compuation of the intersection for penumbra and convex hull for umbra.
Use simple circle / normal to compute the penumbra and simple intersection for umbra.

The new way could be 2x to 4x faster from rectangle to round shape.
And this part is roughly half of the shadow computation, or 2/3 of spot shadow

This improve the spot shadow spikeness too.


Change-Id: I02911784868731369efa73f76fc915bc08248600
91a8c7c62913c2597e3bf5a6d59d2ed5fc7ba4e0 12-Aug-2014 Chris Craik <ccraik@google.com> Switch to cos interpolation of shadow alpha


Updates default shadow opacities to compensate.

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

Change-Id: I9055b4ac3c9ac305ca9d515f21b52d6aa6dc9c5c
1aa5d2d7068147ff781cfe911a93f01593a68c79 24-Jul-2014 John Reck <jreck@google.com> Fix ALL compile warnings

All warnings/errors fixed for GCC & Clang

Change-Id: I2ece3a136a5ae97a9acc3069537ed986238b5fd3
9a89bc6524620c87c7a321433470c668e2b95d69 24-Jul-2014 Chris Craik <ccraik@google.com> Compute layer bounds over subset of VertexBuffer verts

Change-Id: I0dbb54f656a6ae99a87c5734761107e1c2351b65
c93e45cf045f41aea95f856173e4043d988a5a5c 16-Jul-2014 Chris Craik <ccraik@google.com> Build layer damage bounds for shadows


Change-Id: I703afeb7e31c28002bd1aff9ce448ec8cdc4e70d
05f3d6e5111fd08df5cd9aae2c3d28399dc0e7f5 03-Jun-2014 Chris Craik <ccraik@google.com> Tessellate on worker threads

Tessellate and cache (where possible) shadow and round rect
tessellation tasks.

Change-Id: I2cfda8e11d83d51ea74af871235cf26e8f831d40
2e023f3827dfc0dfc1ed7c3dd54d02b4a993f0b4 29-Apr-2014 ztenghui <ztenghui@google.com> 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.


Change-Id: I9bbf54db094e7f133326da4dae4610962da849c1
28c3ea018771562a9150f30c6a088e5bf7502972 18-Mar-2014 ztenghui <ztenghui@google.com> Get rid of useless code

Change-Id: I7fedd0df349e1d9408d58edcab25396e2ff2edd6
99af9429cda84ad0af1d7fcecb580295b0046882 14-Mar-2014 ztenghui <ztenghui@google.com> Fix the missing spot shadow when DEBUG_SHADOW is turned on

In the current design, this error should be tolerated since the delta should
be small enough. So we should not return here.

Change-Id: I251db2882b331d37ae7f0896e9aa95d69a5650da
50ecf849cb7ccc3482517b74d2214b347927791e 12-Mar-2014 ztenghui <ztenghui@google.com> Create one hole inside the umbra area to avoid overdraw.


Change-Id: I859575196bd5a3029f447883025a6ec3a1f1face
b98f2116f5896acb4b221015b22624a3c5d5a7fe 12-Mar-2014 Chris Craik <ccraik@google.com> Force shadow casters above the Z=0 plane

Change-Id: Ifee75414829d4bfb3c7aa6219f1f9bcfd50ff0c6
b79a3e301a8d89b9e1b1f6f3d7fd6aa56610a6f0 11-Mar-2014 Chris Craik <ccraik@google.com> Fix orthographic shadows projection, simplify shadow reordering

Separate matrix passed to shadow system into two parts, one for
transforming the polygon XY points (using the actual draw matrix) and
a separate one which respects correct 4x4 3d rotations and
translations for determining Z values.

Change-Id: I7e30a84774a8709df6b2241e8f51fc5583648fe8
726118b35240957710d4d85fb5747e2ba8b934f7 08-Mar-2014 Chris Craik <ccraik@google.com> Improve shadow tessellation performance

- Tune and simplify shadow parameters
- Remove additional inner rings
- Improve polygon ray casting algorithm

Change-Id: If0f28b2d66ae0480b675942bb65e8fcd2864425d
63d41abb40b3ce40d8b9bccb1cf186e8158a3687 14-Feb-2014 ztenghui <ztenghui@google.com> Use pre-computed index to draw the shadow.

Also draw the umbra part as triangle fans instead of zig zag fashion.


Change-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf
a989cb29c35149b35bf8c332ba39d7167bd95d6b 03-Feb-2014 ztenghui <ztenghui@google.com> Merge "Fixing a bad bug when there is no real umbra"
5176c974f1d9af833b7584e895fcba61e6e7427a 01-Feb-2014 ztenghui <ztenghui@google.com> Fixing a bad bug when there is no real umbra

This fixed most of the issues when the light's Z postion is low.

Change-Id: If49afbf8aa90b1ce32fd628a62ed982a1a473da2
12d9526dd25915f1957d1a251715e562d14459da 31-Jan-2014 Chris Craik <ccraik@google.com> Simplify umbra calculation

Reuse pre-computed values

Change-Id: Ia7725be0ec3ac58af477fcb8de375f5faa05abf4
f5ca8b4cb178008472e67fa0ae6a3e3fa75d7952 28-Jan-2014 ztenghui <ztenghui@google.com> Merge close vertices in a better way.

And add more verification code for testing purpose.

Change-Id: I5bc4f69e6582c02fd03106af9a98abd05a6755b7
7b4516e7ea552ad08d6e7277d311ef11bd8f12e8 07-Jan-2014 ztenghui <ztenghui@google.com> Calculate and show the shadow from a spot light.

Change-Id: Ia558852e8cde5d33866b22875eb501e4c6858819