skia2/tools/viewer
Brian Osman fe49163cd1 Major rewrite of the particle system based on the SkSL interpreter
This removes all of the fixed-function particle affector classes.
Instead, each particle effect just has two SkSL snippets, one for
spawn logic, and one for update logic. Each one gets an inout copy
of the particle struct. Ultimately, this makes the effects much
simpler and smaller, while also being far more flexible (you can
do whatever you want with any values you want). Finally, because
the interpreter is vectorized and a particular effect's scripts
are usually tuned to the specific behaviors desired, it's faster
on basically every effect I compared.

I re-created all of the old effects in the new system. Many just
use pure SkSL (no curves or anything). Some of the old curve and
path/text stuff was very handy, though - so those are now exposed
as external values in the interpreter. Basically, an effect can
have any number of named "bindings" that are a callable thing.
This can be a path, text (shortcut for making fancy paths), curve,
or color curve. The path ones return a float4 with position and
normal, the curves return one or four floats.

... and this transposes all of the particle data storage into
SoA form, so that it can use the much faster interpreter entry
point.

Change-Id: Iebe711c45994c4201041b12d171af976bc5e758e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222057
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-25 19:59:03 +00:00
..
AnimTimer.h tools: separate TimeUtils from AnimTimer 2019-07-12 15:05:01 +00:00
BisectSlide.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BisectSlide.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
GMSlide.cpp tools: separate TimeUtils from AnimTimer 2019-07-12 15:05:01 +00:00
GMSlide.h tools: separate TimeUtils from AnimTimer 2019-07-12 15:05:01 +00:00
ImageSlide.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ImageSlide.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ImGuiLayer.cpp sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
ImGuiLayer.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
ParticlesSlide.cpp Major rewrite of the particle system based on the SkSL interpreter 2019-07-25 19:59:03 +00:00
ParticlesSlide.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
SampleSlide.cpp sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
SampleSlide.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
SkottieSlide.cpp [skottie] Expose SG inval controller on seek() 2019-07-22 16:33:15 +00:00
SkottieSlide.h [skottie] Expose SG inval controller on seek() 2019-07-22 16:33:15 +00:00
SKPSlide.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SKPSlide.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Slide.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
SlideDir.cpp [skottie] Ref-counted animators 2019-07-23 22:40:14 +00:00
SlideDir.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
StatsLayer.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
StatsLayer.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SvgSlide.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SvgSlide.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
TouchGesture.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
TouchGesture.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Viewer.cpp add 'r'epeat option sans the HUD (to not complicate the profile) 2019-07-23 00:20:07 +00:00
Viewer.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00