Delete SpotShadow::makeClockwise, which is unused and does
not link when compiler optimizations are disabled (for debugging).
SpotShadow::makeClockwise calls non-existent function
ShadowTessellator::isClockwise, which only works because the
optimizer deletes the function.
Change-Id: Ib8a014bf168782772faa1da7d75a079c1fd28ed9
Bug: 22208220
Libcxx has a really good sort algorithm, use that
instead. This speeds up shadow tesellation by about 10%.
Also less code
Change-Id: Iaad424187121d7644076f94ba8a3cf4c110da2f2
Also tune the parameters to match a better look designed by UX team.
For ambient part, the acos transformed alpha is not needed any more.
b/19370798
Change-Id: I20d2615d1be502eb900942ed756aecd1660dee48
Adds remaining missing overrides and nullptr usages, missed due to
an extreme failure in tool usage.
Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
Remove Clang cutout for unused parameters. Fix warnings.
Remove Clang cutout for deprecated Skia function usage. Has been
fixed in the L push.
Change-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7
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.
b/18315089
Change-Id: I9ac9a781a885701a8388714d44f79a1d905e5d33
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.
b/14976551
b/16712006
Change-Id: I61ed546ee56e7c8dbe504dfcaef12d084904b4b8
Narrow the use of #include directives in hwui, replacing with forward
declarations where straightforward. Speeds compiles; doesn't do any
restructuring of code.
Change-Id: Icac2baffb5896f55d8c6718e9bd9d4bfa02d3ca0
This is helping spot shadow for 15%-20% increase.
With the new algorithm, we are less sensitive to the floating point error.
b/16712006
Change-Id: Ie30a6ce01e73d56054a0cf65a84549454339a7fd
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.
b/17288227
b/15598793
b/16712006
Change-Id: I4a5ee397b9e192e93c8e35e6260b499e3e38a6f4
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
computation.
This improve the spot shadow spikeness too.
b/16712006
b/14976551
Change-Id: I02911784868731369efa73f76fc915bc08248600
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
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
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