skia2/tools
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
..
android Reuse more upload_to_android and allow removing flag on Android 2017-10-31 14:37:14 +00:00
calmbench Remove gclient sync from calmbench 2018-08-24 19:18:56 +00:00
copyright Fix pylint check in presubmit 2018-06-22 14:38:28 +00:00
debugger Reland "hide drawlooper from paint" 2019-07-22 20:03:36 +00:00
doxygen Add 'modules' to doxygen generation. 2019-06-03 13:33:56 +00:00
fiddle Remove sample count from GrSurfaceDesc. 2019-07-23 13:42:29 +00:00
flags First draft of Dawn backend: clears are working. 2019-07-18 18:09:12 +00:00
fm Remove "nvpr" configs 2019-06-26 16:53:50 +00:00
fonts Add SkMakeSpan and helpful conversion 2019-07-02 21:49:09 +00:00
gdb Update gdb bitmap viewer. 2018-06-20 21:24:27 +00:00
gpu re-run tools/rewrite_includes.py 2019-07-25 15:40:33 +00:00
infra [infra] Fixes for chrome_release_branch 2019-04-18 15:37:07 +00:00
lottie-web-perf [perf_skottiewasm_lottieweb] Add new bots for LottieWeb_Canvas 2019-07-24 22:19:04 +00:00
lottiecap [LottieWeb] Fix frames 2018-08-29 17:58:42 +00:00
lua rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
malisc Extend --writeShaders to output SPIR-V 2019-04-15 14:04:18 +00:00
mdbviz rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
rebaseline Change add to toggle in the comments 2017-11-10 17:19:07 +00:00
sk_app Move read swizzle from GL ConfigInfo to FormatInfo. 2019-07-18 19:42:10 +00:00
skdiff Move SkTSearch.h into src. 2019-05-15 14:15:07 +00:00
skiaserve rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
skottie-wasm-perf [perf_skottiewasm_lottieweb] Script to parse and combine skottie/lottieweb perf CSVs 2019-07-25 17:58:08 +00:00
skp [Recreate SKPs bot] Fix failing web pages 2019-05-17 20:34:58 +00:00
skpbench rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
skqp Remove "nvpr" configs 2019-06-26 16:53:50 +00:00
svg Remove internal files from externally visible markdown documentation 2018-01-10 13:25:19 +00:00
timer Remove WallTimer class. 2019-07-15 16:06:11 +00:00
trace Add some precision back to timestamps when using --trace 2019-06-17 22:08:06 +00:00
viewer Major rewrite of the particle system based on the SkSL interpreter 2019-07-25 19:59:03 +00:00
__init__.py
add_codereview_message.py Remove trailing whitespace. 2017-10-09 21:20:34 +00:00
AndroidSkDebugToStdOut.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
AutoreleasePool.h Reland "Added AutoreleasePool for managing pool memory in testing apps." 2019-05-31 15:40:01 +00:00
AutoreleasePool.mm Reland "Added AutoreleasePool for managing pool memory in testing apps." 2019-05-31 15:40:01 +00:00
BigPathBench.inc
build_command_buffer.py
BUILD_simulator.py
build_workaround_header.py Add CheckGeneratedFiles recipe check for gpu workarounds 2018-04-25 19:26:27 +00:00
check-headers-self-sufficient header self-sufficiency and idempotency 2019-06-26 19:12:43 +00:00
chrome_fuzz.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
chrome_release_branch [infra] Add chrome_release_branch script 2019-04-16 19:46:10 +00:00
chrome_release_branch.bat [infra] Add chrome_release_branch script 2019-04-16 19:46:10 +00:00
chrome_release_branch.py [infra] Fixes for chrome_release_branch 2019-06-04 17:41:50 +00:00
clang-tidy.sh run clang-tidy on headers too 2018-12-12 15:26:22 +00:00
compare_codereview.py
cpu_modules.cpp Major rewrite of the particle system based on the SkSL interpreter 2019-07-25 19:59:03 +00:00
CrashHandler.cpp Move SkLeanWindows.h to src. 2019-05-21 13:48:00 +00:00
CrashHandler.h
DDLPromiseImageHelper.cpp Add kRGBA_8888_SRGB GrColorType and remove GrSRGBEncoded. 2019-07-11 15:22:23 +00:00
DDLPromiseImageHelper.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DDLTileHelper.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DDLTileHelper.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
doxygen_footer.txt
dump_record.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DumpRecord.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DumpRecord.h
embed_resources.py rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
find_run_binary.py
fix_pythonpath.py
gcov_shim
get_current_monitor_profile.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
get_images_from_skps.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
git-sync-deps tools/git-sync-deps: fix 2018-06-20 14:38:34 +00:00
gyp
HashAndEncode.cpp add SkNamedTransferFn::kRec2020 2019-05-24 16:03:03 +00:00
HashAndEncode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
hello-opencl.cpp run all available OpenCL devices 2019-02-11 21:29:33 +00:00
imgcvt.cpp Move skcms.h to include/third_party/skcms 2019-04-29 15:02:45 +00:00
InputState.h sk_app, Sample: Unify InputState enum. 2019-07-16 14:51:03 +00:00
install_dependencies.sh Add harfbuzz to tools/install_dependencies.sh 2019-05-03 23:52:09 +00:00
ios_utils.h Fix bugs with fence sync API on iOS devices 2017-10-10 19:05:13 +00:00
ios_utils.m rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
jsondiff.py Fix pylint check in presubmit 2018-06-22 14:38:28 +00:00
list_gms.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
list_gpu_unit_tests.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
LsanSuppressions.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
merge_static_libs.py Remove trailing whitespace. 2017-10-09 21:20:34 +00:00
milestone.py
mirror-dev.sh Update mirror-dev for *-dev:amd64 packages. 2017-11-09 22:44:57 +00:00
misc_utils.py
ModifierKey.h ModifierKey unifies sk_app::Window::ModifierKey & Sample::Click::ModifierKey 2019-07-09 16:16:41 +00:00
OverwriteLine.h eliminate SK_BUILD_FOR_WIN32 2018-01-26 19:52:04 +00:00
parse_llvm_coverage.py
pathops_sorter.htm fix pathops bug 8380 2018-12-21 19:15:54 +00:00
pathops_visualizer.htm fix pathops bug 8380 2018-12-21 19:15:54 +00:00
ProcStats.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ProcStats.h
public_headers_warnings_check.cpp
random_parse_path.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
random_parse_path.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
reformat-json.py
Registry.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
remote_demo.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ResourceFactory.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Resources.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Resources.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
retrieve_from_googlesource.py
rewrite_includes.py re-run tools/rewrite_includes.py 2019-07-25 15:40:33 +00:00
sanitize_source_files.py
skhello.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkMetaData.cpp SkMetaData: remove unused features 2019-07-25 15:15:22 +00:00
SkMetaData.h SkMetaData: remove unused features 2019-07-25 15:15:22 +00:00
skottie2movie.cpp add motion blur params to skottie2movie 2019-06-17 23:13:16 +00:00
skp_parser.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
skpinfo.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkSharingProc.cpp Reland "Deserialize MultiPictureDocument based SKP files (with image sharing proc) in wasm debugger." 2019-06-21 15:49:21 +00:00
SkSharingProc.h Reland "Deserialize MultiPictureDocument based SKP files (with image sharing proc) in wasm debugger." 2019-06-21 15:49:21 +00:00
SkVMBuilders.cpp pin down arg() stride (a.k.a. type) info sooner 2019-07-16 21:06:45 +00:00
SkVMBuilders.h first VEX ymm vector ops 2019-06-20 18:20:00 +00:00
SkVMTool.cpp skvmtool upgrades 2019-07-23 17:46:35 +00:00
Stats.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
test_all.py
test_pdfs.py
ToolUtils.cpp Use SkTextEncoding enum instead of macros. 2019-05-07 20:54:16 +00:00
ToolUtils.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
UrlDataManager.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
UrlDataManager.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
using_skia_and_harfbuzz.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
valgrind.supp Update valgrind suppression 2019-07-02 01:45:03 +00:00
whitelist_typefaces.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
win_dbghelp.cpp Move SkTSearch.h into src. 2019-05-15 14:15:07 +00:00
win_dbghelp.h eliminate SK_BUILD_FOR_WIN32 2018-01-26 19:52:04 +00:00
win_lcid.cpp Move SkTSearch.h into src. 2019-05-15 14:15:07 +00:00
xsan.blacklist turn on alignment sanitizer 2018-08-09 21:13:15 +00:00