Commit Graph

2629 Commits

Author SHA1 Message Date
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
bodymovin
b974d1f75a Nnnnn provide path node data (#11428) 67006966a5
chore: replace path effect signature to pass full node to scripting

Co-authored-by: hernan <hernan@rive.app>
2026-01-12 19:28:43 +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
luigi-rosso
d91d0b38a2 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

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2026-01-10 17:37:08 +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
dskuza
ebf93d657d feat(scripting): build dummy luau vm if disabled (#11422) 393e19b4fa
Co-authored-by: David Skuza <david@rive.app>
2026-01-10 00:10:50 +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
f26de28d16 Nnnnn different fixes (#11415) 4b0ea7e631
* fix: invalidate effects when sorted

* improve scripted converters code

Co-authored-by: hernan <hernan@rive.app>
2026-01-09 19:38:21 +00:00
philter
c851859aa3 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 18:55:55 +00:00
bodymovin
35eb312314 feature: pass view model instance to bindable artboard (#10815) 3734dc3ab9
Co-authored-by: hernan <hernan@rive.app>
2026-01-09 17:32:02 +00:00
bodymovin
3a5b5058ac Nnnnn fix memory lua issues (#11412) ba94f03ad0
* push scripted drawable to stack twice to ensure it is not destroyed before use
* code improvements

Co-authored-by: hernan <hernan@rive.app>
2026-01-09 07:54:52 +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
efd202ff5c 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.

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2026-01-07 22:50:26 +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
HayesGordon
be323ebe74 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

Co-authored-by: Gordon <pggordonhayes@gmail.com>
2026-01-07 20:00:23 +00:00
bodymovin
3f999b7edc fix(scripting): some crashed related to paths (#11378) c05b97d6d5
* fix(scripting): some crashed related to paths

Co-authored-by: hernan <hernan@rive.app>
2026-01-06 20:31:25 +00:00
philter
fafd66788a chore: Enable with_rive_scripting flag for wasm (#11329) 8e395d6bb0
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2026-01-06 19:06:14 +00:00
bodymovin
66c35233ff 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

Co-authored-by: hernan <hernan@rive.app>
2026-01-03 00:49:09 +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
luigi-rosso
c3ff521ac8 fix: lua error on in-flight path mutation (#11350) 56f08da6b1
* fix: lua error on in-flight path mutation

* fix: remove DrawOption

* fix: failing tests

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2025-12-23 23:43:07 +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
bodymovin
a78f52bf82 fix: cast int as double when solo is bound to a number (#11332) 699b891b79
Co-authored-by: hernan <hernan@rive.app>
2025-12-21 20:50:08 +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
fd78cac7a6 fix: initialize did change as true (#11323) 9f2de92c4c
Co-authored-by: hernan <hernan@rive.app>
2025-12-19 20:17:08 +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
damzobridge
4ef0187996 fix(unity): webgl harfbuzz conflict in unity 6.3 (#11309) 5e2ecca169
Co-authored-by: Adam <67035612+damzobridge@users.noreply.github.com>
2025-12-18 19:34:14 +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
luigi-rosso
fbd07113b2 chore: bump to luau 0.703 (#11285) 752595c590
* chore: bump to luau 0.703

* fix: error changed in linter

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2025-12-16 18:35:16 +00:00
aliasbinman
f600a31b6e Add .frag and .vert to file list (#11289) 3bd6d37844
Update premake5_pls_renderer.lua

Co-authored-by: John White <aliasbinman@gmail.com>
2025-12-16 18:07:46 +00:00
JoshJRive
315c683b56 Remove Vulkan support for PowerVR devices below Vulkan 1.3 (#11284) f15e7dd47a
Due to issues with early PowerVR drivers, GL is recommended for these devices

Co-authored-by: Josh Jersild <joshua@rive.app>
2025-12-16 02:49:50 +00:00
bodymovin
5f503f6f8c fix(UAT): only trigger callback when instance is created from scripting (#11283) 7564ef1fcb
Co-authored-by: hernan <hernan@rive.app>
2025-12-15 23:28:19 +00:00
bodymovin
81984a8c89 feat(runtime): skip drawing unchanged frames (#11127) f32a23806c
* skip drawing unchanged frames

Co-authored-by: hernan <hernan@rive.app>
2025-12-15 19:56:26 +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
philter
8d869457e9 fix(editor): Input to VM toggle fix (#11272) 1dd286c979
Co-authored-by: Philip Chung <philterdesign@gmail.com>
2025-12-13 02:40:42 +00:00
aliasbinman
b0887d9e3f Unity dx12 (#11162) 2517eb7d7f
* Initial

* Latest updates

* More updates

* Move some headers

* More cleanup

* clang format

* more clang updates

* Update d3d12_pipeline_manager.cpp

* Update d3d12_pipeline_manager.cpp

* More fixes

* Update unity d3d12

* Fix Pathfiddle

* Update code

* Updates

* Latest files

* Updates

* Fixes

* white space

* Formatting

* formatting

* Clang format

* clang format

* Update premake5.lua

* Update premake5.lua

* Update root.sig

Co-authored-by: John White <aliasbinman@gmail.com>
2025-12-12 18:02:06 +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