Commit Graph

2430 Commits

Author SHA1 Message Date
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
luigi-rosso
eb93cc761e chore: bump to luau 0.703 (#11285) 752595c590
* chore: bump to luau 0.703

* fix: error changed in linter
2025-12-16 18:51:45 +00:00
aliasbinman
a8658aac32 Add .frag and .vert to file list (#11289) 3bd6d37844
Update premake5_pls_renderer.lua
2025-12-16 18:17:08 +00:00
JoshJRive
7a994358b1 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
2025-12-16 02:59:10 +00:00
bodymovin
8c06db379d fix(UAT): only trigger callback when instance is created from scripting (#11283) 7564ef1fcb 2025-12-15 23:37:27 +00:00
bodymovin
f9fba5ac2d feat(runtime): skip drawing unchanged frames (#11127) f32a23806c
* skip drawing unchanged frames
2025-12-15 20:08:49 +00:00
JoshJRive
57da7a8848 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
2025-12-14 22:41:23 +00:00
bodymovin
f978b0633a 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
2025-12-14 14:56:38 +00:00
csmartdalton
1f58b58416 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.
2025-12-14 03:26:37 +00:00
csmartdalton
185ed85ab1 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.
2025-12-13 06:07:37 +00:00
JoshJRive
f281198021 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.
2025-12-13 03:52:26 +00:00
philter
5e3256951b fix(editor): Input to VM toggle fix (#11272) 1dd286c979 2025-12-13 02:49:28 +00:00
aliasbinman
d172514627 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
2025-12-12 18:10:53 +00:00
csmartdalton
36f246c817 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.
2025-12-12 08:00:12 +00:00
philter
bdd6395f2c Layout animation time bindable (#11264) c95fe9334e 2025-12-12 04:35:59 +00:00
luigi-rosso
3f98f5f8b5 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
2025-12-12 01:36:59 +00:00
bodymovin
11259b2977 feature(scripting): add support to create view model instances from s… (#11232) 6fc23e1608
* feature(scripting): add support to create view model instances from scripts
2025-12-12 00:59:51 +00:00
philter
6ba84bcc6a Scripting in Core Runtime (#11235) 0a5325e474
rev to luau 0.702 (#11259) b50983c49d
2025-12-11 23:17:56 +00:00
luigi-rosso
814655609d chore: bump macos-version-min to 11 (#11260) 08a3949a0d 2025-12-11 21:42:53 +00:00
csmartdalton
adb73d8787 fix(wgpu): Bit rot (#11245) 47f4ec46d4
* Clean up some assumptions in WebGPU that support for PLS meant it was
  actually being used. Now that we support MSAA, it might not be in use.

* Clean up a refactoring typo that caused an input attachment to be
  deleted before it was used.
2025-12-09 23:31:28 +00:00
bodymovin
4410c00813 chore: skip save operations on clipped single shapes (#11244) d352fe277e 2025-12-09 23:09:03 +00:00
bodymovin
e49b6691ed 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
2025-12-09 22:32:35 +00:00
csmartdalton
fde1465e10 feat(vk): Set the maxTextureSize in Vulkan (#11227) 8b2069142c
Vulkan has always been using minimum sized atlases of 2048x2048 because
we forgot to set PlatformFeatures::maxTextureSize. Start grabbing this
value off the physicalDeviceProps to enable fewer flushes.
2025-12-06 03:04:36 +00:00
JoshJRive
7296c324ea fix(vulkan): Resolve validation error when resuming too-complex render passes (#11229) 3a8b9ba454
Vulkan's LOAD_OP_LOAD cannot be specified on a render pass attachment that is IMAGE_LAYOUT_UNDEFINED - this conditionally makes the image layout GENERAL in those cases (and allows it to stay UNDEFINED for the general case, since the texture may not yet be initialized)
2025-12-05 23:07:37 +00:00
bodymovin
dab5e18bfb feature: add support for animated clipping layouts and shapes (#11222) e2a5390cb1 2025-12-05 20:01:59 +00:00
blakdragan7
29da10c336 fix(Unreal): Unreal perf improvements (#11221) 6a24742e15
* move all used textures to rdg

* changes needed for packaging a game
2025-12-05 01:56:58 +00:00
blakdragan7
f6383809eb 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
2025-12-04 21:08:03 +00:00
csmartdalton
8f98e21354 fix(vk): Adreno atlas rendering workaround (#11219) 9b177fd1df
Adreno 730, 740, and 830 don't seem to appreciate binding buffers and
updating descriptor sets before beginning the render pass, even though
this appears to be valid usage of the Vulkan API. Re-update atlas
rendering to begin the render pass first.
2025-12-04 19:48:40 +00:00
JoshJRive
013dbc25c9 fix(vk): Workaround a crash on early Android tilers (#11212) 5d4d4b98f6
Some early Android tilers are known to crash when a render pass is too complex. This PR is a first stab at adding an "interrupt" mechanism to atlas and draw render passes, which allows us to break up our rendering into smaller chunks that don't crash. Currently, only rasterOrdering mode is supported for interrupting draw passes. We will need to investigate whether this workaround is also needed for msaa, tessellation, and gradient textures.
2025-12-04 08:50:29 +00:00
JoshJRive
f05e7053d2 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)
2025-12-03 20:25:43 +00:00
bodymovin
d2919b9f21 chore: release v6.12.3 6.12.3 2025-12-03 17:55:33 +00:00
bodymovin
3557439325 Updating version files 2025-12-03 17:55:25 +00:00
JoshJRive
cb5e586e6b Update the versions of the spir-v shaders to all be 460 (#11209) f38d54d8e4
Some tooling changed today-ish that is causing the 310 es shaders to fail to build with:
```
runner/_work/rive/rive/packages/runtime/tests/unit_tests/out/android_arm64_debug/include/generated/shaders/glsl.minified.glsl:450: 'token pasting (##)' : not supported with this profile: es
ERROR: spirv/blit_texture_as_draw_filtered.main:6: 'stringify (#)' : not supported with this profile: es
ERROR: spirv/blit_texture_as_draw_filtered.main:6: '#' : '#' is not followed by a macro parameter.
ERROR: spirv/blit_texture_as_draw_filtered.main:6: '' : missing #endif
ERROR: spirv/blit_texture_as_draw_filtered.main:6: '' : compilation terminated
ERROR: 5 compilation errors.  No code generated.
```

This is only a "310 es" issue, and so since most spir-v shaders are already 460, this moves the rest to be the same.
2025-12-03 01:25:29 +00:00
bodymovin
15fa975806 fix: list updates correctly when items are added or removed (#11206) 255f1ba3d2 2025-12-03 00:52:50 +00:00
bodymovin
07d253d8c5 fix: ignore non visible clips when removing redundant operations (#11207) 673820da1a 2025-12-03 00:32:01 +00:00
bodymovin
7a3fff3ab8 update scripted drawable clipping to new strategy and remove unused function (#11195) 8002b223a3
* update clipping to new strategy
2025-12-02 23:03:07 +00:00
bodymovin
0cb5f14ae3 fix(scripting): store data on all cases (#11197) 7fae9fb6c8 2025-12-02 19:30:25 +00:00
bodymovin
9190295c4e fix(EA): list index can be compared to numbers (#11194) e2f7d6cde1 2025-12-02 18:01:02 +00:00
bodymovin
41e1692b5f feature: apply clippings as separate drawables (#11183) c3237c0283
* feature: apply clippings as separate drawables
2025-12-01 20:21:54 +00:00
bodymovin
52de604f36 chore(scripting): add clipping support to scripted drawables (#11184) 27085dfb0c 2025-11-30 21:31:16 +00:00
philter
ea2cbf312d fix(editor): Display runtime errors when Script input VM properties not set (#11177) cd70e30236
Fixes a crash when trying to use pointer events when a ViewModel property input is not setup properly on a scripted drawable instance.

The code was checking for ScriptAsset.vm which will always be non-null when bytecode is compiled in the editor. We should be checking instead for ScriptedObject.state because that will only be non-null if the ScriptedObject has validated (and we early out if that is null so we don't crash).

Also added some errors when VM properties are not setup correctly as Script inputs so users will be aware that there is an issue with their VM setup or bindings
2025-11-27 21:56:15 +00:00
philter
c314773cdd chore: Refactor invalidateEffect for StrokeEffects (#11173) 05630acdb1
Refactors how invalidateEffect in StrokeEffects work. Now there are 2 code paths:

invalidateEffectsFromLocal() - this is called from the StrokeEffect itself. It calls out to ShapePaint::invalidateEffects to let it invalidate any other StrokeEffects that may need to do so. It also calls invalidateEffect on itself.
invalidateEffects() - this can be called from the StrokeEffect (via invalidateEffectsFromLocal) on itself OR by ShapePaint while in the process of determining if any other StrokeEffects should be invalidated via the call above. This adds paint dirt to the StrokeEffect along with any additional work needed when invalidating.
This prevents invalidateEffect from calling ShapePaint::invalidateEffects multiple times.

This also resolves an issue with ScriptedPathEffects in Components
2025-11-26 23:06:31 +00:00
bodymovin
eeb30b2d3a chore: complete scripted converters implementation (#11166) 55853117b2
chore: finish scripted converters implementation
2025-11-26 00:23:59 +00:00
bodymovin
37a01cab69 chore: Preprocess transitions conditions on initialization (#11150) bb52cbd4a3
Preprocess transitions conditions on initialization
2025-11-25 21:49:34 +00:00
bodymovin
978608a0a8 fix: reset interpolator and initialize it on convert (#11157) 0791ee519d
* fix: reset interpolator and initialize it on convert
2025-11-25 21:05:02 +00:00
luigi-rosso
ef83f3e36f feature: goto definition (#11143) 4f005f715e 2025-11-25 13:14:35 +00:00
luigi-rosso
421b47e8aa chore: updating to luau_701 (#11142) d4dfc63c3a 2025-11-23 19:25:28 +00:00
csmartdalton
0eb0ba4af8 fix(vk): Implement manual MSAA resolves (#11120) 756dc2db91
* fix(vk): Implement manual MSAA resolves

Some Android devices have issues with MSAA resolves when the MSAA color
buffer is also read as an input attachment. In the past we've worked
around this by adding an empty subpass at the end of the render pass.
This PR implements fully manual resolves instead, which we now use when
there are blend modes and partial updates. This is hopefully a more
stable workaround than a mystery subpass, and will ideally get better
performance as well when we don't need to resolve the entire render
target.

* Fix synchronization validation (had a write/write hazard between the image state transition and the load op)

* fix(vk): Implement manual MSAA resolves

Some Android devices have issues with MSAA resolves when the MSAA color
buffer is also read as an input attachment. In the past we've worked
around this by adding an empty subpass at the end of the render pass.
This PR implements fully manual resolves instead, which we now use when
there are blend modes and partial updates. This is hopefully a more
stable workaround than a mystery subpass, and will ideally get better
performance as well when we don't need to resolve the entire render
target.

* Fix synchronization validation (had a write/write hazard between the image state transition and the load op)
2025-11-22 03:01:05 +00:00