429 Commits

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

* resolve sorting on export

Co-authored-by: hernan <hernan@rive.app>
2026-01-18 04:23:03 +00:00
csmartdalton
9617565e7c 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.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2026-01-16 06:19:00 +00:00
bodymovin
6eaf71f485 feature: scripted listener actions (#11468) f3a89390cb
Co-authored-by: hernan <hernan@rive.app>
2026-01-15 19:53:42 +00:00
philter
a81117c359 Fix ScriptedDrawable save/restore (#11451) e7142dcfed
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2026-01-13 07:54:46 +00:00
luigi-rosso
768aacd78d No double deref luau (#11448) 62fcec60de
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2026-01-13 07:13:04 +00:00
philter
46cd7a7406 Add opacity support to ScriptedDrawables (#11446) 9b416a02f6
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2026-01-13 05:12:27 +00:00
bodymovin
d920ee0efd 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

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Co-authored-by: hernan <hernan@rive.app>
2026-01-13 01:13:05 +00:00
bodymovin
c511795426 feature(scripting): add support for accessing view models and enum pr… (#11437) 620000211e
feature(scripting): add support for accessing view models and enum properties

Co-authored-by: hernan <hernan@rive.app>
2026-01-13 00:48:26 +00:00
philter
c5fdfdb3d7 Scripting namespaces (#11429) f810efd11a
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2026-01-12 17:55:36 +00:00
bodymovin
a45d0a411d feature: add support for data binding scripted artboard inputs (#11423) 48d14f1521
chore: do not track nested artboard count

Co-authored-by: hernan <hernan@rive.app>
2026-01-12 00:57:39 +00:00
bodymovin
34a547a299 feature(scripting): instance linear animations (#11386) 722a1ae998
Co-authored-by: hernan <hernan@rive.app>
2026-01-10 14:39:38 +00:00
philter
f213badda4 fix: Scroll with snapping max scroll target (#11419) ce274af56c
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2026-01-09 20:28:38 +00:00
bodymovin
60ddaf6d36 fix: trigger change on solid color change (#11399) b5a73917b1
Co-authored-by: hernan <hernan@rive.app>
2026-01-08 01:18:55 +00:00
bodymovin
b24fc49c93 chore: advance scripting only if it is still active (#11394) 0488666fb0
* chore: advance scripting only if it is still active

Co-authored-by: hernan <hernan@rive.app>
2026-01-07 23:27:57 +00:00
csmartdalton
ff65727994 test: Add a 'paintType' option to player (#11371) 209e1b6d96
Allows us to turn off fills or strokes for testing.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2026-01-07 22:21:46 +00:00
philter
5b1100d31e fix(runtime): ScriptedArtboard origin fix (#11395) 88f2054b8a
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2026-01-07 21:29:24 +00:00
bodymovin
075782ff46 feature: add group effects support (#11359) df0db41a9c
Co-authored-by: hernan <hernan@rive.app>
2026-01-02 22:55:01 +00:00
bodymovin
15a922714f 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

Co-authored-by: hernan <hernan@rive.app>
2026-01-02 21:11:44 +00:00
bodymovin
5a94a09dfb 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

Co-authored-by: hernan <hernan@rive.app>
2025-12-23 23:14:54 +00:00
philter
180af1a7fc 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.

Co-authored-by: Philip Chung <philterdesign@gmail.com>
2025-12-19 21:40:35 +00:00
bodymovin
7a489bb15f feature: allow listeners to listen to any type of view model change (#11313) 4b7a5a8032
Co-authored-by: hernan <hernan@rive.app>
2025-12-19 18:31:47 +00:00
JoshJRive
d0129efa4f 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.

Co-authored-by: Josh Jersild <joshua@rive.app>
2025-12-18 23:37:57 +00:00
bodymovin
dad43127a8 feature: support name based binding paths (#11007) a55da7f31f
* feature: support name based binding paths

Co-authored-by: hernan <hernan@rive.app>
2025-12-18 00:31:45 +00:00
philter
90e5c7d1b3 Update public key for verifying script signatures (#11301) db3368437f
Co-authored-by: Arthur Vivian <arthur@rive.app>
2025-12-17 23:24:55 +00:00
csmartdalton
8ac7190472 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.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2025-12-17 22:26:11 +00:00
luigi-rosso
3805482c3c feature: bytecode header format (#11293) 68f1096d75
* feature: bytecode header format

* Reexport scripting test rivs

* Reexport one more riv

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Co-authored-by: Phil Chung <philterdesign@gmail.com>
2025-12-17 20:42:24 +00:00
csmartdalton
0a978321ee 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.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2025-12-16 21:52:24 +00:00
philter
c52a714032 Refactor Script registration (#11280) bc6f965d1f
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2025-12-16 19:52:05 +00:00
JoshJRive
f31972763e fix(vulkan) Rebuild vulkan device between gms on less devices (#11275) 8cdc26684f
* fix(vulkan) Tighten the requirements for destroying/recreating the vulkan gms on Adrenos

This was causing a test failure on a couple devices with the same chipset and driver

* Increase timeout to 5

Co-authored-by: Josh Jersild <joshua@rive.app>
2025-12-14 22:32:20 +00:00
bodymovin
f0b7370df7 Nnnnn add data metatable and viewmodels (#11269) f23eb70aec
* feature(scripting): add support for accessing view models from context and creating view model from global data

Co-authored-by: hernan <hernan@rive.app>
2025-12-14 14:47:49 +00:00
csmartdalton
69b17fe3a8 fix(ci): Increase tolerance on histogram compare (#11274) 332a226197
lots_of_tess_spans_stroke is seeing a histogram result as low as .95087
on a correct image. Bump the default tolerance to .05 so we don't get
false negatives. Hopefully this holds us over until we can work on more
accurate image diffing.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2025-12-14 03:17:19 +00:00
csmartdalton
0871679138 fix(vk): Actually apply a workaround for the Android overflow texture (#11273) e6c21bf6fd
We had a nice comment describing why we shouldn't create the overflow
texture with VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, but then we went ahead
and accidentally created it as an input attachment anyway.

This PR actually applies the workaround described in the comment.

Also apply the "teardown after every GM" workaround to Adreno pre 1.3 GPUs,
since those also experience sporadic crashes and this appears to help.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2025-12-13 05:58:52 +00:00
JoshJRive
6134855b7f fix(Vulkan) Work around a Vulkan driver OOM on Mali devices (#11271) 37439d5fb6
The Mali Vulkan driver/device was running out of memory internally, occasionally. This adds a hook into the testing window that gets run after each GM finishes, which TestingWindowAndroidVulkan now uses to tear the device down completely. The device then gets rebuilt as needed.

Co-authored-by: Josh Jersild <joshua@rive.app>
2025-12-13 03:43:05 +00:00
csmartdalton
d0e4e011e3 fix(vk): Make the tessellation pass interruptible (#11233) e7608ff659
chore(vk): Make the tessellation pass interruptible

We recently worked around some driver crashes on Vulkan by breaking up
atlas & draw render passes that were too complex. This PR makes the
exact same workaround for tessellation passes, and adds a GM to catch
this case.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2025-12-12 07:50:27 +00:00
philter
76973925fb Layout animation time bindable (#11264) c95fe9334e
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2025-12-12 04:26:43 +00:00
luigi-rosso
2981f6ad37 feat: Text input from editor + start of Focusable (#9905) e5c8a7ae8f
* feat: working on focusable

* feat: text events to rive native

* feat: runtime text from editor

* feat: text input in the editor

* chore: cleanup

* chore: fix non text builds

* chore: fix warning

* fix: key import in rive_native_web

* feat: text input for web rive_native

* chore: fixes

* chore: cleanup

* fix: remove unused imports

* chore: more tests for missed lines

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2025-12-12 01:10:25 +00:00
bodymovin
dbba23234b feature(scripting): add support to create view model instances from s… (#11232) 6fc23e1608
* feature(scripting): add support to create view model instances from scripts

Co-authored-by: hernan <hernan@rive.app>
2025-12-12 00:31:28 +00:00
philter
76eae106ad Scripting in Core Runtime (#11235) 0a5325e474
rev to luau 0.702 (#11259) b50983c49d

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2025-12-11 23:09:23 +00:00
bodymovin
acfefa5895 chore: skip save operations on clipped single shapes (#11244) d352fe277e
Co-authored-by: hernan <hernan@rive.app>
2025-12-09 23:00:15 +00:00
bodymovin
14927d5051 fix: virtualized lists with data bound artboards map to the correct s… (#11242) 44c9c0b2ec
fix: virtualized lists with data bound artboards map to the correct source

Co-authored-by: hernan <hernan@rive.app>
2025-12-09 22:24:00 +00:00
bodymovin
1d02cbcef3 feature: add support for animated clipping layouts and shapes (#11222) e2a5390cb1
Co-authored-by: hernan <hernan@rive.app>
2025-12-05 19:52:45 +00:00
blakdragan7
e02fa16250 fix(Unreal): Unreal perf improvements (#11221) 6a24742e15
* move all used textures to rdg

* changes needed for packaging a game

Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
2025-12-05 01:48:21 +00:00
blakdragan7
0072d25f12 fix(Unreal): Layout fit type fix (#11217) 294afdc22a
* Added set / reset size for artboarsd to command queue. Use this for render targets in unrel. Set size directly for widgets.

* removed original bounds

* made state machine advance when setting size

Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
2025-12-04 20:59:34 +00:00
JoshJRive
7aa95ac536 fix(Vulkan): Work around a driver issue causing graphical corruption, other minor changes (#11204) b8b0d3e01c
This change primarily works around a driver issue that was causing visual corruption on some newer Adreno-based devices.
There are other minor changes as well (displaying the driver version from the bootstrapping code, setting a minimum requirement of Vulkan 1.1 in the renderer)

Co-authored-by: Josh Jersild <joshua@rive.app>
2025-12-03 20:16:59 +00:00
bodymovin
c3cefc675e fix: list updates correctly when items are added or removed (#11206) 255f1ba3d2
Co-authored-by: hernan <hernan@rive.app>
2025-12-03 00:44:31 +00:00
bodymovin
cbd6691f87 update scripted drawable clipping to new strategy and remove unused function (#11195) 8002b223a3
* update clipping to new strategy

Co-authored-by: hernan <hernan@rive.app>
2025-12-02 22:54:40 +00:00
bodymovin
09bed0f410 fix(EA): list index can be compared to numbers (#11194) e2f7d6cde1
Co-authored-by: hernan <hernan@rive.app>
2025-12-02 17:51:22 +00:00
bodymovin
8a06f22185 feature: apply clippings as separate drawables (#11183) c3237c0283
* feature: apply clippings as separate drawables

Co-authored-by: hernan <hernan@rive.app>
2025-12-01 20:13:40 +00:00
bodymovin
6b31f1020a chore: Preprocess transitions conditions on initialization (#11150) bb52cbd4a3
Preprocess transitions conditions on initialization

Co-authored-by: hernan <hernan@rive.app>
2025-11-25 21:41:25 +00:00
bodymovin
3099ce30d3 fix: reset interpolator and initialize it on convert (#11157) 0791ee519d
* fix: reset interpolator and initialize it on convert

Co-authored-by: hernan <hernan@rive.app>
2025-11-25 20:56:47 +00:00