2477 Commits

Author SHA1 Message Date
bodymovin
1ee8f22197 chore: process listeners in specified order (#11487) 3253c0beae
* chore: process listeners in specified order

* resolve sorting on export
2026-01-18 04:36:03 +00:00
aliasbinman
b196057776 Add microprofile support (#11403) c83919a247
* Initial commit

* Update macros

* Add GPU Markers

* Fix builds without microprofile

* minor updates

* clang format

* Update profiler.cpp

* clang format

* Name Main Thread

* Update profiler_macros.h

* Fix end flip

* Update fiddle_context_gl.cpp

* clang format

* Update rive_build_config.lua

* Update rive_build_config.lua

* forked microprofile so I can use a tag

* Update render_context_d3d_impl.cpp

* clang
2026-01-16 18:43:19 +00:00
csmartdalton
c0a8d8353e fix(gl): Get running on Adreno 308 (#11467) 28e95e51e7
Adreno 308 had a few issues:

  * Crash from drawing too many instances, which we work around by
    breaking them up with glFlush.

  * Compiler failure from the compiler declaring a 3.1 bulitin in ESSL
    3.0, which we work around with a #define.

  * The advertised max texture size is 8192, but textures larger than
    2048 seem to not work with EXT_multisampled_render_to_texture.
    Either way, we shouldn't have any gms larger than 2048 since that's
    the bare minimum per the spec. Shrink the larger gms down to 2048.

Rive had an issue as well:

  * With EXT_multisampled_render_to_texture but not
    KHR_blend_equation_advanced, we were trying to use the same texture
    for both msaa and the dstRead. Separate these into their own
    textures.
2026-01-16 06:30:34 +00:00
philter
9c299cd72a chore: Pass Lua VM from editor when decoding runtime File (#11458) f57124001d
The C++ runtime requires a ScriptingVM and lua_State to run scripts. Previously when a runtime File was built, we would always instance a ScriptingVM and lua_State. At runtime, this is required, however, when building the runtime in the editor, this resulted in additional objects being created that weren't needed. This PR passes the lua_State into File::import so that the file will only create the ScriptingVM once and either use the passed in lua_State or instance a new one if none is passed.
2026-01-15 20:37:31 +00:00
bodymovin
c3be46500b feature: scripted listener actions (#11468) f3a89390cb 2026-01-15 20:05:01 +00:00
ErikUggeldahl
57230a4e32 feat(Android): Scripting support (#11438) 9112280455
Adds the build flags required to enable scripting. Adds two samples, one for legacy, one for Compose, using the Blinko example.

Also patches the command server to accept script assets and not crash for unrecognized assets.
2026-01-13 16:05:35 +00:00
dskuza
106a3cd169 chore: release v6.13.0 6.13.0 2026-01-13 14:09:46 +00:00
dskuza
5728903929 Updating version files 2026-01-13 14:09:38 +00:00
dskuza
1fd12f448d feat(apple): add scripting (#11420) 41554dc098
Co-authored-by: David Skuza <david@rive.app>
2026-01-13 13:22:13 +00:00
philter
ddfaf378cd Fix ScriptedDrawable save/restore (#11451) e7142dcfed 2026-01-13 08:20:53 +00:00
luigi-rosso
5bd0ba3093 No double deref luau (#11448) 62fcec60de 2026-01-13 07:24:26 +00:00
philter
d8d204cd88 Add opacity support to ScriptedDrawables (#11446) 9b416a02f6 2026-01-13 05:23:17 +00:00
bodymovin
ce05e7fb58 fix(scripting): search first parent transform component to build scri… (#11443) 99ca3a30cc
fix(scripting): search first parent transform component to build script node

feature: modulate opacity (#11427) 128d9d61e0
* feature: modulate opacity

* fix: clang-format

* fix: rust renderer has a no-op modulateOpacity

* fix: no-op modulateOpacity for canvas android

* feature: modulate opacity on android canvas

* fix: rcp ref

* fix: missing override

* fix: gms

* fix: make flutter_renderer match cg one

* fix: josh pr feedback

* fix: remove CG transparency layer

* fix: save modulated gradient up-front

* fix: store only one gradient ref

* fix: remove specific constructor

* fix: use GradDataArray!

* fix: expose currentModulatedOpacity

* fix: cg_factory modulated opacity value

* fix: modulate negative opacity test

* fix: verify double modulate negative also clamps
2026-01-13 01:24:38 +00:00
bodymovin
affa4c208a feature(scripting): add support for accessing view models and enum pr… (#11437) 620000211e
feature(scripting): add support for accessing view models and enum properties
2026-01-13 00:59:15 +00:00
bodymovin
67410b9d56 Nnnnn provide path node data (#11428) 67006966a5
chore: replace path effect signature to pass full node to scripting
2026-01-12 19:40:27 +00:00
philter
9aa107dee0 Scripting namespaces (#11429) f810efd11a 2026-01-12 18:06:40 +00:00
bodymovin
bbeff2211a feature: add support for data binding scripted artboard inputs (#11423) 48d14f1521
chore: do not track nested artboard count
2026-01-12 01:09:47 +00:00
luigi-rosso
00eb7788cd feature: configure scripting timeout & improve Data warnings (#11425) 8328e97639
* feature: configure timeout

* fix: check duplicate names of viewmodels/enums too

* feature: ui_strings for warning messages

* fix: check isNumber instead of isNil
2026-01-10 17:47:56 +00:00
bodymovin
fcfb04527d feature(scripting): instance linear animations (#11386) 722a1ae998 2026-01-10 14:50:13 +00:00
dskuza
41a70b519e feat(scripting): build dummy luau vm if disabled (#11422) 393e19b4fa 2026-01-10 00:21:54 +00:00
philter
8ce13954e0 fix: Scroll with snapping max scroll target (#11419) ce274af56c 2026-01-09 20:39:02 +00:00
bodymovin
3cbab09734 Nnnnn different fixes (#11415) 4b0ea7e631
* fix: invalidate effects when sorted

* improve scripted converters code
2026-01-09 19:53:38 +00:00
philter
1640a74c6a feat(scripting): forward declare luastate (#11418) a08d538dbf
Fixes an issue when building runtimes with scripting enabled where
certain headers may not be included

Co-authored-by: David Skuza <david@rive.app>
2026-01-09 19:08:56 +00:00
bodymovin
492f54f690 feature: pass view model instance to bindable artboard (#10815) 3734dc3ab9 2026-01-09 17:42:59 +00:00
bodymovin
532377d9c4 Nnnnn fix memory lua issues (#11412) ba94f03ad0
* push scripted drawable to stack twice to ensure it is not destroyed before use
* code improvements
2026-01-09 08:05:19 +00:00
bodymovin
fc65c45c23 fix: trigger change on solid color change (#11399) b5a73917b1 2026-01-08 01:29:28 +00:00
bodymovin
793d4f5272 chore: advance scripting only if it is still active (#11394) 0488666fb0
* chore: advance scripting only if it is still active
2026-01-07 23:38:09 +00:00
csmartdalton
0f774a72da chore: Move clockwiseAtomic shaders to the new system (#11388) 85c5519c6e
With clockwise mode, we introduced ".vert" and ".frag" files and started
sharing the main vertex shaders with multiple fragment shaders. This PR
is a cleanup that removes redundant code and moves the clockwiseAtomic
shaders to that same system. clockwiseAtomic shaders also work out paint
colors via varyings now instead of storage buffers, which seems better
but doesn't register a difference in performance.
2026-01-07 23:00:35 +00:00
csmartdalton
b403e9a002 test: Add a 'paintType' option to player (#11371) 209e1b6d96
Allows us to turn off fills or strokes for testing.
2026-01-07 22:31:57 +00:00
philter
93bf014e93 fix(runtime): ScriptedArtboard origin fix (#11395) 88f2054b8a 2026-01-07 21:40:15 +00:00
HayesGordon
2097b9adc3 fix(runtime): additional null checks on audio play (#11281) a4e9d50469
* fix(runtime): additional null checks on audio play

* chore: add additional null check for safety
2026-01-07 20:10:34 +00:00
bodymovin
1255bc9223 fix(scripting): some crashed related to paths (#11378) c05b97d6d5
* fix(scripting): some crashed related to paths
2026-01-06 20:41:24 +00:00
philter
6de36fedd4 chore: Enable with_rive_scripting flag for wasm (#11329) 8e395d6bb0 2026-01-06 19:16:50 +00:00
bodymovin
0482d51b54 chore: complete groups path effects work (#11373) 8f9dae9f36
* fix effects sorting

* fix Feature values

* invalidate effects on update instead than when dirt is added to avoid multiple invalidations per frame

* fix key conflict
2026-01-03 01:00:30 +00:00
bodymovin
36b6d740a9 feature: add group effects support (#11359) df0db41a9c 2026-01-02 23:04:55 +00:00
bodymovin
1d30a6c3a8 Nnnnn relative data bind all paths (#11346) 41d316c675
* StateMachineListener relative view model property path
* StateMachineFireTrigger relative view model property path
* ScriptInputViewModelProperty relative view model property path
2026-01-02 21:21:33 +00:00
luigi-rosso
5c6955454e fix: lua error on in-flight path mutation (#11350) 56f08da6b1
* fix: lua error on in-flight path mutation

* fix: remove DrawOption

* fix: failing tests
2025-12-23 23:53:16 +00:00
bodymovin
3006709834 feature: add support for relative view model data bind paths for nested artboards (#11344) 923b32059d
feature: add support for relative view model data bind paths
2025-12-23 23:24:27 +00:00
bodymovin
c20e03b41b fix: cast int as double when solo is bound to a number (#11332) 699b891b79 2025-12-21 21:00:12 +00:00
philter
1bc459b964 Library Scripts export fix (#11294) 978d565911
fix(editor): Properly remove all script core objects when deleted (#11324) a3e784a1f0
3 Fixes for Script asset deletion in this PR:

- Present a confirmation dialog if the script is being used by any scripted object on any artboard
- When script asset is deleted, make sure to clean up all of the associated core code file/line/points
- Also remove the LibraryCodeFile from the library cache. This fixes a bug where after deleting a library script, you couldn't add it back to the file again.
2025-12-19 21:50:07 +00:00
bodymovin
38023df551 fix: initialize did change as true (#11323) 9f2de92c4c 2025-12-19 20:27:10 +00:00
bodymovin
a40b1bb114 feature: allow listeners to listen to any type of view model change (#11313) 4b7a5a8032 2025-12-19 18:41:26 +00:00
JoshJRive
eca39cec5f fix(vulkan): Fix "player" (#11314) 08c2e47d44
Testing window was restructured to allow the tests to destroy/recreate the device, but the render target was not being (re)created when the device was.
2025-12-18 23:48:00 +00:00
damzobridge
6c1ef7e7fe fix(unity): webgl harfbuzz conflict in unity 6.3 (#11309) 5e2ecca169 2025-12-18 19:43:41 +00:00
bodymovin
a52837c891 feature: support name based binding paths (#11007) a55da7f31f
* feature: support name based binding paths
2025-12-18 00:41:30 +00:00
philter
8cb93cd04e Update public key for verifying script signatures (#11301) db3368437f 2025-12-17 23:34:09 +00:00
csmartdalton
1bcf91af47 feat(vk): Avoid a copy for rasterOrdering non-input-attachment passes (#11298) e4ef1ece98
When the renderTarget doesn't support
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, we have to use an offscreen color
texture instead. Previously, we would copy this offscreen texture back
into the renderTarget after the render pass, which incurred a
substantial amount of memory bandwidth. This PR instead transfers the
offscreen texture to the renderTarget as part of the render pass, and
then discards the offscreen texture, saving a fullscreen copy on TBDR
architectures.
2025-12-17 22:36:05 +00:00
luigi-rosso
5ba42d3e0f feature: bytecode header format (#11293) 68f1096d75
* feature: bytecode header format

* Reexport scripting test rivs

* Reexport one more riv
2025-12-17 20:51:46 +00:00
csmartdalton
4ead3410e2 fix(vk): Make the color ramp pass interruptible (#11270) ba953a142b
Color ramps are the final resource texture we need to make interruptible
for old Android GPUs that don't support complex render passes.

Also fix lots_of_tess_spans to look the same on MSAA and not.
2025-12-16 22:01:46 +00:00
philter
418fbb7ed6 Refactor Script registration (#11280) bc6f965d1f 2025-12-16 20:01:30 +00:00