History log of /frameworks/base/libs/hwui/ShadowTessellator.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
1240752c44c21632adaf64f6768669ec6d0ebc8c 23-Jun-2015 Lazar Trsic <Lazar.Trsic@imgtec.com> Limit dotProduct value to 1.0f, so acosf would not return NaN.

Cherry pick of b561f39d01c211425bfefaaa7b31ebe097e7ba79 from AOSP master.

Due to precision loss of float math, we sometimes get 1.000001f for
dotProduct. This causes NaN result from acosf() and floor() funcs.

At the moment, this does not cause any problems on ARM, as casting
NaN to int results in 0. On mips however (possibly on x86), such cast
gives INT_MAX, so crash occurs when trying to use the resulting value.

Change-Id: I8e0285a0306a65b8469d9f4885c19665066fc4c8
/frameworks/base/libs/hwui/ShadowTessellator.cpp
fca52b7583d1e5f5ff8ed06554875d2a30ef56fa 28-Apr-2015 Chris Craik <ccraik@google.com> Use path intersection instead of saveLayer+mesh to mask projected ripples

bug:14297149

SaveLayer's performance cost is high, and proportional to the surface
being projected onto. Since ripples (even unbounded ones) are now
always projected to the arbitrary background content behind them, this
cost is especially important to avoid.

This removes the last semi-secret, saveLayer from the projected
ripple implementation.

Also fixes the HW test app to correctly demonstrate this projection
masking behavior.

Additionaly, alters PathTessellator to gracefully handle
counter-clockwise paths, and simplifies the work done by
ShadowTessellator to ensure all of its paths are counterclockwise.

Change-Id: Ibe9e12812bd10a774e20b1d444a140c368cbba8c
/frameworks/base/libs/hwui/ShadowTessellator.cpp
2507c34d91bb0d722b6012e85cb47387b2aa6873 04-May-2015 Chris Craik <ccraik@google.com> Cleanup properties

bug:19967854

Separate properties from Caches, into static, RenderThread-only class.

Also rewrites the means for java to set properties to correctly handle
threading, and adds an override for profile bars so that SysUi doesn't clutter
the screen with them.

Change-Id: I6e21a96065f52b9ecc49d1a126244804ba106fa9
/frameworks/base/libs/hwui/ShadowTessellator.cpp
289e1b871656b04c0a7edf6e578c9094f5fb3b81 25-Mar-2015 Derek Sollenberger <djsollen@google.com> Update ShadowTesslator to support conics

bug:19732872
Change-Id: I8b539ab3677219fa5bb7de7caf0aad9fc47ef7e9
/frameworks/base/libs/hwui/ShadowTessellator.cpp
62aa44c5eef2b1e888f0eee8841dc87074eaa0e8 20-Feb-2015 ztenghui <ztenghui@google.com> Correctly name the lightRadius

b/18282208

Change-Id: I5b6edcb37b710464c6ff0f5c05583bb7da720ff3
/frameworks/base/libs/hwui/ShadowTessellator.cpp
117bdbcfa3e8306dad21e7e01fa71b00cdfa7265 05-Feb-2015 Chris Craik <ccraik@google.com> Glop ColorFilter & VertexBuffer support, initial enable

Enables Glop rendering for supported Rects and VertexBuffers
Also removes unused Query object

Change-Id: Ibe227bc362685a153159f75077664f0947764e06
/frameworks/base/libs/hwui/ShadowTessellator.cpp
d41c4d8c732095ae99c955b6b82f7306633004b1 06-Jan-2015 Chris Craik <ccraik@google.com> Add overrides and switch to nullptr keyword for all files

Adds remaining missing overrides and nullptr usages, missed due to
an extreme failure in tool usage.

Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
/frameworks/base/libs/hwui/ShadowTessellator.cpp
edaecc1db0584fa017822dfc2da0c968b53967e6 11-Nov-2014 Andreas Gampe <agampe@google.com> resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp

(cherry picked from commit 1272887050a269d6d506b42099c2857847ad100b)

Change-Id: Ib673768fe5fc03615626ef4b10590e5317f22172
/frameworks/base/libs/hwui/ShadowTessellator.cpp
8def74de33b197c0c5ec8774576b1d71c7ec4f1b 02-Oct-2014 ztenghui <ztenghui@google.com> + correcting shadow visual appearance (b/17610926)

+ adjusting spot and ambient shadow opacity constants to achieve desired appearance
+ reducing ambient scale ratio back to 1.0 to address over-lightening at higher elevations
+ partially revert ag/546290

Change-Id: I9d7f664f73a7b9b83df73b739103c97054bd4f6e
/frameworks/base/libs/hwui/ShadowTessellator.cpp
f7d76dffd86398a787f0d8bd092a571c019daf04 13-Sep-2014 ztenghui <ztenghui@google.com> Update the shadow strength

b/17486691

Change-Id: I8e8f0b64e757772c18f038f6b329ef91a4e155a5
/frameworks/base/libs/hwui/ShadowTessellator.cpp
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.

b/17288227
b/15598793
b/16712006

Change-Id: I4a5ee397b9e192e93c8e35e6260b499e3e38a6f4
/frameworks/base/libs/hwui/ShadowTessellator.cpp
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
computation.

This improve the spot shadow spikeness too.

b/16712006
b/14976551

Change-Id: I02911784868731369efa73f76fc915bc08248600
/frameworks/base/libs/hwui/ShadowTessellator.cpp
1aa5d2d7068147ff781cfe911a93f01593a68c79 24-Jul-2014 John Reck <jreck@google.com> Fix ALL compile warnings

All warnings/errors fixed for GCC & Clang

Change-Id: I2ece3a136a5ae97a9acc3069537ed986238b5fd3
/frameworks/base/libs/hwui/ShadowTessellator.cpp
83f7ee8d12df1e8f031a0d23a00084f4fcd0d2f3 10-Jul-2014 ztenghui <ztenghui@google.com> Remove the unnessary log

We still need to investigate the underlying problem and fix it.

bug:16015708

Change-Id: If38b550d5af990d5aaa6633ee129a61e927d66c1
/frameworks/base/libs/hwui/ShadowTessellator.cpp
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
/frameworks/base/libs/hwui/ShadowTessellator.cpp
797b95b26bbb7557678af78b9a2a61830158920f 21-May-2014 Chris Craik <ccraik@google.com> Define light position (using new lighting spec) in Java

Also updates the relative shadow strengths.

Change-Id: I6cac7275d38df98aea9f0dda463cd7207102986a
/frameworks/base/libs/hwui/ShadowTessellator.cpp
f11310f395a135ac7ef204ced5b3d3facf491422 14-May-2014 ztenghui <ztenghui@google.com> Check the array before accessing it

TODO: Figure out why the path is generating empty polygon.

bug: 14615368

Change-Id: If116e34388b7c6a71bf5ddd36e0c9716d7450732
/frameworks/base/libs/hwui/ShadowTessellator.cpp
64ab917e5eb3269c72c795781a512d4ee7d9d7a4 01-May-2014 Chris Craik <ccraik@google.com> Merge "Add more shadow control knobs"
f5be3ca5cc5b3a10747b577f60059a99862bb9a8 01-May-2014 Chris Craik <ccraik@google.com> Add more shadow control knobs

Change-Id: I1ff500bf429029a97b681ced9df652f4ee9f1332
/frameworks/base/libs/hwui/ShadowTessellator.cpp
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.

bug:13553955

Change-Id: I9bbf54db094e7f133326da4dae4610962da849c1
/frameworks/base/libs/hwui/ShadowTessellator.cpp
af6f7ed8dd4288a41d0a07a1f0f0be7d6d035b33 19-Mar-2014 ztenghui <ztenghui@google.com> Early rejection on shadows which are outside of the clip bound.

All the computations are estimated using bounding box.
TODO: Spot shadow could have more accurate but also more expensive methods, we need
more experiments to decide.

Change-Id: I9c10c419576cee55daf0f9f278b0db78cb847447
/frameworks/base/libs/hwui/ShadowTessellator.cpp
50ecf849cb7ccc3482517b74d2214b347927791e 12-Mar-2014 ztenghui <ztenghui@google.com> Create one hole inside the umbra area to avoid overdraw.

bug:13439450

Change-Id: I859575196bd5a3029f447883025a6ec3a1f1face
/frameworks/base/libs/hwui/ShadowTessellator.cpp
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
/frameworks/base/libs/hwui/ShadowTessellator.cpp
87f9df880e4a5bfba65d2ed413b3ead649595129 07-Mar-2014 Chris Craik <ccraik@google.com> Update tessellation tracing

Change-Id: I6c73f2467817412d9936dde217df9938a6884003
/frameworks/base/libs/hwui/ShadowTessellator.cpp
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.

b/12840179

Change-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf
/frameworks/base/libs/hwui/ShadowTessellator.cpp
15a07a21eb33e8ca1c7444944fe0541a53380c0c 26-Jan-2014 Chris Craik <ccraik@google.com> Use path outlines to define shadow shapes

Fixes the simplifying assumption that shadow casters were always
rectangular.

Java side APIs + plumbing to pass down correct shapes still need to be added.

Change-Id: Ic4fee90af15679951a44bb5cc6ae454b98c4c194
/frameworks/base/libs/hwui/ShadowTessellator.cpp
cc3c25622c731d14a6f01bce684330eccba7db5a 17-Jan-2014 ztenghui <ztenghui@google.com> Property support for light positioning.

Tune up the light size to make it look better.

Change-Id: I139a05f3dd53dacbe55759b91188f0e1cc2c7f80
/frameworks/base/libs/hwui/ShadowTessellator.cpp
8191effc83b3ec4cfc8647a6eb16ee641fa85a2f 17-Jan-2014 Chris Craik <ccraik@google.com> Merge "Map shadow light position globally"
7b3dfa4d13ca79404f8b0be6e47002cf8daff0a2 17-Jan-2014 Chris Craik <ccraik@google.com> Transform shadow casters correctly in 3d

Change-Id: I11067c5aa8c749089b6ee163ddafa91865cc0d9f
/frameworks/base/libs/hwui/ShadowTessellator.cpp
3197cded4e265bc99dc82d695bbb7163fe134ed4 16-Jan-2014 Chris Craik <ccraik@google.com> Map shadow light position globally

Change-Id: Ic3201cecdf5d2a1dd628e7e40aee912ef516d3b2
/frameworks/base/libs/hwui/ShadowTessellator.cpp
7b4516e7ea552ad08d6e7277d311ef11bd8f12e8 07-Jan-2014 ztenghui <ztenghui@google.com> Calculate and show the shadow from a spot light.

Change-Id: Ia558852e8cde5d33866b22875eb501e4c6858819
/frameworks/base/libs/hwui/ShadowTessellator.cpp
55bfb4e728fe1db619af5d2c287f4abe711b3343 03-Dec-2013 ztenghui <ztenghui@google.com> 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
/frameworks/base/libs/hwui/ShadowTessellator.cpp