Commit Graph

2211 Commits

Author SHA1 Message Date
dskuza
39c3a99bbd chore: release v6.11.4 6.11.4 2025-09-12 03:26:17 +00:00
dskuza
49914377c7 Updating version files 2025-09-12 03:26:08 +00:00
csmartdalton
41e6a3cf54 fix(gl): Add missing barriers for feathering with image atomics (#10565) 7e8588484d
Also turn image atomics off on Adreno since the barriers didn't fix it
on 660 on 642L, and they still don't draw anything.
2025-09-12 01:17:56 +00:00
csmartdalton
ad25ac188e fix(gl): Workaround an ARM MSAA synchronization issue (#10568) 848415ed2f
Various Android vendors experience synchronization issues with multiple
flushes per frame. We used to call glFlush every Rive flush on Qualcomm
for this reason. Remove the 'if' and just call glFlush for everyone.

Also call glMemoryBarrier for everyone ES 3.1+ at the end of the flush.
In particular, ARM Mali-G78 needs this barrier in conjunction with a
glFlush to ensure a resolve of EXT_multisampled_render_to_texture. (Note
that the spec says these resolves should all be implicit and automatic.)
2025-09-12 01:03:35 +00:00
dskuza
f77e3421f4 fix(apple): better release and null checking on fallback fonts (#10562) e0baf4e1fa
* fix(apple): do not use symbolic trait font copy on failure

* fix(apple): release ctfont copy

* refactor(apple): do not manually ref rcp'd font, remove cache

Co-authored-by: David Skuza <david@rive.app>
2025-09-11 23:00:14 +00:00
philter
2be54c4137 editor(fix): Fix children collapsed issue when showing/hiding layout (#10566) 15a6eedc71
A layout's collapsed value wasn't being propagated down the tree which resulted in issues if a parent was set to display, but a child layout was set to hidden, it would not hide its contents properly.
2025-09-11 22:37:11 +00:00
csmartdalton
4e446452fc fix(gl): Drop EXT_shader_pixel_local_storage (#10556) 8df4ac1a56
This extension has been an ever-flowing fountain of bugs for us,
especially on PowerVR. Furthermore, it doesn't even work on Pixel 10
(PowerVR D-Series DXT-48-1536).

Let's de-fragment our Android GL renderer and consolidate everything on
MSAA (except for old PowerVR devices where MSAA doesn't work). MSAA is
hopefully a more tried-and-true, less bug-prone rendering mode in the
Android ecosystem anyway, and it's nice to be more consistent across
devices.

The perf story looks positive. On PowerVR, MSAA seems to be generally
faster. On ARM it's always been a mixed bag depending on content.

Either way, this is a nice approach to switch GL to maintenance mode so
we can go all in on Vulkan.

NOTE: We are still keeping EXT_shader_pixel_local_storage as a fallback
for the feather atlas on devices that don't support float rendering.
There are real GPUs where this is our only way to get high quality
feathers.
2025-09-11 20:27:10 +00:00
aliasbinman
1a0bdfd74f Add high level shader debugging for RenderDoc debugging (#10550) 46e6f66b94
* Initial commit

* clang format

* Added RIVE_RAW_SHADERS #define and now use this in D3D Debug mode

* Merge if statements
2025-09-11 20:05:25 +00:00
blakdragan7
815418b1d2 fix(Unreal): Updated UE plugin to no longer do deprecated things (#10555) c799a27dfd
* Remove use of `FRHIResourceCreateInfo` which is now deprecated
* Updated to c++20 because that is the new requirement for UE
* Fixed a bug where the state machine name selection would cause a crash if no state machines are in riv file.
* No longer use raw pointers as `TObjectPtr` are preferred now
* Fixed bug where `#ifdef WITH_RIVE_TOOLS` was missing in `FrameOptions` declaration
2025-09-11 18:55:32 +00:00
aliasbinman
9b40e90672 Add keyboard toggle to PathFiddle to run updates at fixed 120fps or unlocked (#10548) 576b235996
* Initial commit

* Update to using variable timesteps rather than fixed
2025-09-11 12:05:37 +00:00
philter
bb1d6ca840 Expose localBounds in CPP (#10537) 0ed12de980
Implement some missing localBounds methods in CPP on core objects that expose this. Basically ported over from Dart. This was requested in order for the new rive_native Flutter runtime to provide a similar API to the legacy Flutter runtime.
2025-09-10 20:06:53 +00:00
aliasbinman
bc27a791c5 More profiling markers to runtime (#10549) e58f44d5ec 2025-09-10 18:47:54 +00:00
luigi-rosso
f64b0e77a6 feature: Scripting Revision Manager (#10474) 3cdbce02cb
* hydrogen pane uses codefile

* feature: reworking theme

* feature: working on scrolling panels

* fix: missed files

* chore: removing print statements

* feature: implement CodeFileView

* fix: opening linked files starting to add vertical split options

* fix: missed file

* feature(hydrogen): splittable panels

* fix: not advancing state machines from scripts

* fix: warning

* fix: data_tree_instance_test
2025-09-10 17:19:13 +00:00
dskuza
099f8bcf3d fix(apple): update listeners on list instance changes (#10469) 8ce5e60a6d
Co-authored-by: David Skuza <david@rive.app>
2025-09-10 14:30:21 +00:00
JoshJRive
892d8bee75 fix: GL async shader compilation improvements/fixes (#10544) 2d7b1b788f
This improves the handling of GL parallel shader compile and the ubershader fallback, centered around fixing the Galaxy S22 goldens

- GL ubershaders needed to not set ENABLE_CLIP_RECT in MSAA mode when missing the EXT_clip_cull_distance extension
- avoidMaxShaderCompilerThreadsKHR is no longer necessary because the extension is actually working as expected
- Similarly an explicit null check on glMaxShaderCompilerThreadsKHR is no longer necessary because the Android egl extension function loading code already does so
- The recommended way to use KHR_parallel_shader_compile is to compile the shaders, then start the link, then wait on the link to finish (and then display compilation errors after that if compilation failed). This simplifies the compilation handling
- There was an assert in tryGetPipeline that was intended as a "this should be impossible" test but it turns out it is possible (when the ubershader had completed, but errored), so now on an ubershader error case we will return nullptr (and let the renderer not draw) rather than assert
2025-09-10 00:58:08 +00:00
csmartdalton
6d027f6e25 fix(gl): Reinstate the pls2 workaround for PowerVR drivers < 1.13 (#10524) dd4dd9f326 2025-09-10 00:15:14 +00:00
bodymovin
9df873d09c feature: add support for different random modes (#10538) dab3b5994d
* feature: add support for different random modes
2025-09-09 23:56:49 +00:00
Tod-Rive
df6c973f81 fix(ios):fix a metal API validation error on iOS simulator. (#10539) 5d0cf127b2
* fix(ios):fix a metal API validation error in sim.

When running on the simulator, we run in atomics mode. In this mode, we weren't binding the clip plane buffer properly.
2025-09-09 19:18:28 +00:00
bodymovin
de4a5368e4 Rml initial work (#10542) 199af78f1e
* feature: adding rml compiler

* chore: fixing multi fields missing

* chore: cleanup

* chore: updating to latest master

* chore: allowing saving rml

* sorting items correctly

* hiding unnecessary xml props

* stripping unnecessary ids

* chore: add missed files

* chore: adding missed files

* add serializer to rev

* fractional index

* list id types

* include non runtime objects on export

* more rml

* sort root nodes

* add flags support

* fixes

* add parenting to definitions

* fix id clash

* skip computed values

* add full parentable support

* fix bit flags

* fix keyframes

* add interpolators as children

* support multiple parented objects

* handle duplicate parent

* cli

* add rml docker

* clang format

* add support for new properties in core definition

* restore initial values of json
2025-09-09 18:58:47 +00:00
HayesGordon
de0f2a0466 fix(runtime): force keep going on 0 advanceAndApply (#10504) 0152183944
* fix(runtime): force keep going on 0 advanceAndApply

* Update packages/runtime/src/animation/state_machine_instance.cpp
2025-09-09 06:53:38 +00:00
csmartdalton
0542f1b9d8 WebGPU: Added way to pass WGPUCommandEncoder to RenderContextWebGPUImpl::flush() function (#10530) b5a50b8118
* WebGPU: Added way to pass WGPUCommandEncoder to RenderContextWebGPUImpl::flush() function

* chrisfixes
2025-09-08 21:37:26 +00:00
csmartdalton
7d55658336 fix: Update image texture usages for wagyu mipmap generation (#10529) 65829bc47a
* Add src usage as generateMipMaps blits

* ifdef
2025-09-08 18:59:07 +00:00
csmartdalton
381d661825 wagyu 38 (#10528) f03e236489 2025-09-08 18:45:31 +00:00
JoshJRive
4d69c00784 fix(gl): Validate GL extension functions load before using them (#10526) 300809d5bf
It is possible that Android GL drivers report an extension as being present, but the extension functions actually are not. This validates that we get valid pointers for any extension (and turn off trying to use the extension if we cannot).

fix(gl): Fix rendering issues on Xiaomi Watch models (#10527) 8a0dbb9c80
the GL_EXT_clip_cull_distance extension shader code was using a feature of GL_EXT_shader_io_blocks, which was not otherwise being required by the shader. This use has now been removed.

During an attempt to work around some driver issues on an ANGLE device, glsl.glsl was changed to use the EXT_shader_io_blocks extension (which we are otherwise not using) to specify a set number of clip planes for EXT_clip_cull_distance. However, the workaround ended up removing support for EXT_clip_cull_distance in ANGLE and WebGL so the glsl.glsl change was no longer necessary.

More recently, developers on a couple Xiaomi Watch devices discovered a rendering issue, which stemmed from the use of GL_EXT_shader_io_blocks functionality without having required it in the shader code. Rather than add the #extension line to do so, since this use of that functionality isn't currently solving any known issues, it seems better to just remove the shader_io_blocks usage and let the GPU/driver set the clip plane count itself.
2025-09-08 18:25:36 +00:00
csmartdalton
2991213199 fix(gl): Limit the tess/grad instance counts on Mali/PowerVR (#10520) b0646c5c97
fix(gl): Limit the tess/grad instance conts on Mali/PowerVR

Limit the number of instances we draw at a time when rendering the
tessellation and gradient textures. PowerVR and ARM GPUs have been known
to crash when rendering large instance counts. We're already limiting
the instance counts for main draws, but we missed the tessellation and
gradient passes when we added this workaround.
2025-09-08 18:03:50 +00:00
bodymovin
4dc4463592 restore skipping data bind values (#10516) 049120501f 2025-09-05 18:24:47 +00:00
dskuza
1314251b3c fix(apple): fix crash when valid web url address fails to import (#10515) 924860c1bb
Co-authored-by: David Skuza <david@rive.app>
2025-09-05 15:53:52 +00:00
csmartdalton
03dcde5861 fix(gl): Remove EXT_shader_pixel_local_storage2 workarounds (#10519) 84075d7989
We discovered a workaround on older PowerVR devices that involved
enabling EXT_shader_pixel_local_storage2. It seemed safe enough, but it
is responsible for rendering and perf regressions. Just quit using pls2
altogether.

Also disable GL_CULL_FACE when initializing and resolving pixel local
storage. Leaving it on is just one more possible bug to crop up if we
get the wrong face, and if we do get it wrong it's hard to debug because
everything disappears.
2025-09-05 15:27:18 +00:00
csmartdalton
c470563c4a fix: Work around a PowerVR GLSL compiler bug (#10518) 6062012b6a
The PowerVR compiler was (and still is) evaluating both sides of a
ternary expression. Rewrite the code to expect this and be safe.
2025-09-05 15:02:14 +00:00
csmartdalton
e36f2f3490 fix: Tag RIVE in NSLogs (#10510) ce87aac5e0 2025-09-04 20:24:05 +00:00
bodymovin
1e2080affc fix: revert skipping collapsed data bound properties (#10507) fba405c288
* fix: revert skipping collapsed data bound properties
2025-09-04 18:43:47 +00:00
JoshJRive
7bf254e614 fix(ios): Don't call abort when the unexpected happens. (#10472) 1adc508ecd
* removed aborts and properly handle the error case instead. Don't use printf because nslog allows for proper output to log files in ios

* more converts to nslog

* made checks more specific

* Wiring up multiple synthesized failure types

* Wiring through the new synthesized failure modes to D3D11, 12, and GL

* Move the Metal ubershaderLoad failure synthesis to a better spot

* clang format

* Missed wrapping a variable in #ifdef WITH_RIVE_TOOLS

* Correction: missed *multiple* #ifdef WITH_RIVE_TOOLSes

* Still more

* Testing to see if the D3D12/GL errors are related to the ubershaderLoad synthesis or not

* Removing additional pieces of the testing to see what's causing the issues

* It's important to write your preprocessor directives correctly 🙃

* Trying to figure out what the fence value is that is coming out wrong on the D3D12 tests and why GL is failing

* trying something dumb to see if this re-breaks the oneplus7

* Split the render test up into three tests to see if it is any better on the oneplus7

* Trying to see where the d3d12 device is getting removed (and why), and also what happens if I run 2 of the same synth test on oneplus7

* Sorry everyone it's effectively printf debugging time 🫤

* Changed the CreateEvent call to see if that works for D3D12 and also more printing for GL

* More

* Okay testing some other dumb stuff - this might resolve oneplus 7, still no idea on D3D12 yet

* Testing an alternate fix for the oneplus7 issue plus a different initial frame value for the copy fence

* Adding a comment before push

* Clean up the testing code (the D3D and oneplus7 issues are fixed but now there's a GL issue on windows. sigh.

* clang format again

I'm good at this lol

* Okay I think this will fix the windows GLFW issue at the cost of it might break all the android tests or something (but I hope not!)

* Now debugging why glfw window creation is failing for windows unit tests

* Okay this should "fix" the GL issues on github by just not creating a GL window if GL is not supported.

* Some minor cleanup

* Clarifying a comment, mostly to get the tests to re-kick
2025-09-04 17:25:36 +00:00
luigi-rosso
de12392e5a feature: console entry can be clicked to open script file (#10484) b555c57747
* feature: console entry can be clicked to open script file

* chore: missed files

* fix: mixed file

* fix: failing tests
2025-09-03 19:54:44 +00:00
csmartdalton
6a5919a862 feat: Add fallback AtlasTypes that don't need float color buffers (#10475) 5e6f683b9e
Floating point color buffers are only supported via extensions in GL.
Previously, the feather atlas would just break when this functionality
wasn't present.

This PR adds support for multiple different AtlasTypes that make use of
various GL extensions to render the atlas. As a final resort, if none of
the other extensions are available, it can split coverage up into rgba8
compoments. This mode works on unextended GL at the cost of quality.
2025-09-03 15:45:17 +00:00
bodymovin
99fc26e0e5 skip collapsed objects from running data bound values (#10476) 7868b2bb71
chore: do not run data bound properties from collapsed objects
2025-09-02 13:57:25 +00:00
philter
30d3c3368a Improve Layout display handling incorporating it with isCollapsed (#10473) 0389f47d3d
We revisited how we handle layout display changes and how they related to the collapsed dirt on a LayoutComponent:

We now override isCollapsed in LayoutComponent to take into account both the collapsed dirt that may have been propagated down from a parent AND the LayoutComponent's own display value. If the layout has collapsed dirt, it MUST have been propagated down so it takes precendence, otherwise use its own display value
We removed the need to walk up the parent tree to figure out if any layout in the hierarchy is hidden
We removed a workaround to prevent a 1 frame visual glitch. This workaround was resolved by this fix and is no longer needed.
2025-08-30 01:11:46 +00:00
bodymovin
85ddaef29c chore: add collapse and solo test (#10471) c903296458
* chore: add collapse and solo test
2025-08-29 21:46:46 +00:00
JoshJRive
77ccb966af Work around the Galaxy S22 rendering issue (#10468) 3dcdb47683
Work around the S22 rendering issue

Chris figured out that this was broken with the introduction of using KHR_blend_equation_advanced (vs. the coherent one) - the S22s specifically report compatibility with it but the rendering is wrong.

To fix it, unfortunately, the best way we could think of was to (just before the first beginFrame call) do a quick test where we render some known colors with a known blend mode to a tiny texture then read the output and validate it's within a threshold. Right now the threshold is large because the actual error in practice was massive, so this works - only the S22 models trigger the "oops I can't use this" threshold and back out support.
2025-08-29 04:13:06 +00:00
bodymovin
84f0a7f582 fix: create a copy of the events list to avoid clearing immediately a… (#10461) 70108fd1a6
fix: create a copy of the events list to avoid clearing immediately added events
2025-08-28 20:29:07 +00:00
blakdragan7
2fe9aa404e refactor(UnrealPlugin): Unreal Rewrite Tech Preview (#10382) d4a7f91ee5
* removed opengl renderer because it never worked anyway

* removed android check that is no longer used

* remove iriverenderer

* prepping for commandQueue

* wip

* wip

* started implementing draw loop

* wip

* now stripped down to no include rendering anywhere its not needed

* rive now attempts to render, but server is not loading ile

* wip

* wip

* started adding support for non uav render targets

* statemachines now update correctly and basic rive leaf widgets draw

* listeners now added for file and artboard

* merge master changes

* made ui draw more performent

* added todo

* added statemachine listener and settled callbacks

* added resource handling for rive handles

* Started implemetning file data in viewer

* now display data about artboards, statemachines and viewmodels. Fixed crash with resizing preview

* fixed bugs, better formating

* Properties now display correctly for URIveFile Asset Editor

* Dynamic View Model Node First implementation

* make view model nodes wip

* make artboard and make view model nodes finished

* wip viewmodels

* Generate view model blueprints

* almost finished data binding

* Unreal MVVM finished. Command Q still needs work

* integrated external images and data binding artboards in unreal

* fixed opening file details

* leaf widget now correctly uses fit and alignment. Fixed a couple of bugs

* added clip path for widget view

* cleanup, data binding finished (probably). smoother reimport. proper enum creation for blueprints.

* Error checks now work for custom bp nodes

* File now saves data instead of requesting it every time

* properly saves and loads file. Now builds for standalone

* added defaults for instances

* auto binding view models, properly holding a ref to bound view models. general cleanup

* dont subscrive to view model properties

* added SetStateMachine to URiveViewModel

* fixed delegate signature

* fixed some bugs related to output pin

* fixed a few bugs with loading / saving nodes

* properties now properly get created with signatured and notifies

* GM module now works with re-rewrite

* now get values on start.

* auto bind now uses rive descriptor

* lists working

* added way to check if you need to get defaults

* now update list size when data updated

* fix build issue

* added way to get view model properties via c++

* audio works

* made audio engine a little easier to use

* started implementing rive render target

* added shader types

* raster order shaders now link

* Now raster ordering plugged in.

* wip

* wip

* wip

* now supports render targets that don;t have render target flag.

* thumbnail renderer now works

* started implementing render target. only needs gamma correction

* removed uneeded message and test file.

* now updated render target dropdown for artboards and state machines

* Removed RiveTextureObject

* removed RiveEvent class

* raster order mode mainly works now

* better copy for back buffer

* made default clear value for back buffer transparent so it uses fast clear

* fixed color mode for render target

* dont setup on cdo's

* added srgb gamma correction

* started getting packaging working

* now packages for windows

* goldens / gms now run with rewrite

* Re added dropdown names for rive actor

* check for null handle

* now builds on mac

* removed uneeded file

* PR comments
2025-08-28 20:08:33 +00:00
bodymovin
cf15ccec07 feature: add auto generated state machine on artboard initialization (#10420) 6c147cb33f
* feature: add auto generated state machine on artboard initialization

Co-authored-by: hernan <hernan@rive.app>
2025-08-28 19:55:08 +00:00
csmartdalton
831223fa45 feat: Re-enable GL_KHR_parallel_shader_compile on ANGLE (#10465) 7bf33dc199
Rather than disabling the extension entirely, we can just avoid calling
glMaxShaderCompilerThreadsKHR on these devices.
2025-08-28 19:23:05 +00:00
dskuza
8263c4223a chore: release v6.11.3 6.11.3 2025-08-28 17:06:24 +00:00
dskuza
e9e467a789 Updating version files 2025-08-28 17:06:17 +00:00
dskuza
a9dab80ed4 fix(apple): fix macOS and Catalyst compilation errors (#10462) e20c603403
Co-authored-by: David Skuza <david@rive.app>
2025-08-28 16:22:10 +00:00
dskuza
27690b4c18 ci(apple): test building macOS on pull request (#10464) a9bde0a608
Co-authored-by: David Skuza <david@rive.app>
2025-08-28 16:15:34 +00:00
luigi-rosso
a2f82c37da feature: adding scripted list property (#10457) 5c83e3cd4a
* feature: adding scripted list property

* fix: missed file
2025-08-28 16:04:37 +00:00
csmartdalton
155d578a9b fix: Disable KHR_parallel_shader_compile on ANGLE (#10458) bac33a5808
Various Galaxy devices using ANGLE will crash immediately if we turn it
on, so just don't use it there.
2025-08-28 04:58:06 +00:00
dskuza
085fb846f7 refactor(apple): advance artboard with layout fit on layoutSubview (#10427) 759f2fc742
Co-authored-by: David Skuza <david@rive.app>
2025-08-27 15:07:14 +00:00
dskuza
e896ee7a1e refactor(apple): mark more (view)model members as @objc (#10433) 3bd0ee9ad9
Co-authored-by: David Skuza <david@rive.app>
2025-08-27 14:55:10 +00:00