mirror of
https://github.com/rive-app/rive-flutter.git
synced 2026-03-13 08:32:10 +08:00
master
598 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
53d173c4c4 |
chore(flutter): release 0.14.4 (#11797) ff2554c258
* chore(flutter): release 0.14.4 * docs: update linux readme support Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
a033d05081 |
fix: RivePanel intercept all pointer events (#11786) bc003d5d87
fix: reinit scripted objects owned by the state machine (#11783) 72f38fef07 fix: reinit scripted objects owned by the state machine when data binding is updated chore: make viewmodel references safer (#11781) 0961388866 fix(unit tests): Update a test case to have a correctly-formatted category (#11778) 4edb867bde One change updated the TEST_CASE categories to have braces `[ ]` since that's how they're expected to work, but another change added a test without. This fixes that one case. Intersection board in renderer now allows overlap (#11724) 352adc26ac The intersection board in the renderer currently breaks any overlapping shapes into separate draw groups. This change allows the render context to specify when overlapping within a draw group could be allowed. feat(vkcwa): Move borrowed coverage to a dedicated subpass (#11761) 57feaeef08 This allows us to remove some dependencies from the main subpass and is a more clear description of what we're doing -- a single rendering of borrowed coverage, followed by moving on to the main subpass. It also avoids some issues on Qualcomm with having SHADER_READ/WRITE dependencies combined with input attachment dependencies on the main subpass. fix: allow artboard conditions without data context (#11776) e9c66affc8 fix(editor): stop audio when playback is stopped (#11771) d8ff1c2d88 * fix(editor): stop audio when playback is stopped * feature: add pause, play and resume support for audio sounds in scripting Armor the use of mapped gpu buffers (#11738) c4874f9ca2 It's possible that a GPU resource fails to map to system memory for some reason (for instance: if we lost the GL context). In that case, rather than attempt to write to a null pointer, we should instead just fail to draw anything. Create TesselationDataFormat.txt (#11767) 2d76643c5e * Create TesselationDataFormat.txt * Josh nitpicking * Fix Names * Update TesselationDataFormat.txt * Update TesselationDataFormat.txt * Rename file feature: expand view model instance support in scripting (#11744) a1966ba517 ArtboardComponentList optimizations (#11757) a3ef3daa73 Implements a couple of optimizations for Artboard lists: Don't syncLayoutChildren during updateList as the artboards are being built up, only sync afterwards For non-virtualized lists, keep the artboard and state machine instances in a vector and get them by index rather than having to look them up using their corresponding list item. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
1c8c51de60 |
chore(flutter): release 0.14.3 (#11696) bc92b879fb
fix: only disable microprofile’s webserver for rive_native (#11729) fba8d3eb5a * fix: only disable microprofile’s webserver for rive_native * fix: re-add MicroProfileWebServerStart() chore: do not advance data binds without source (#11727) 44b4d20401 fix: iterate draw target orders if list is not empty (#11723) c80de97d44 refactor(rive_native): flutter runtime build without rive_tools (#11712) 0170b92c8c * refactor(rive_native): flutter runtime build without rive_tools * test(flutter): fix runtime shared tests feat(vk): Implement clipRect and dither for clockwiseAtomic (#11709) 78c811b5dc feat(vk): Implement clipRect and dither for clockwise atomic Stateful Components (#11706) 37f69c268c This is the first part of making Components more self contained and providing simpler interfaces when using them in an Artboard. This PR adds an isStateful flag to Artboards. When marked stateful, an Artboard's host will generate and bind to a ViewModel instance at runtime, and that VM instance is detached from the File's VM tree. fix(vk): Always use premultiplied alpha (#11674) 92387c12da Premultiplied alpha is better for dithering because we can just pre-add the dither before blending. (With the minor caveat that a negative dither may not take full effect when the output color is already 0.) This PR converts all the unmultiplied algorithms in vulkan to premul. Improve Library Script dependency import (#11681) 7a527f1881 This PR reinstates proper storage of a script's dependencies as a core property and also greatly increases time to import from minutes to seconds by preventing unnecessary recompilation (tested against the box2d library), and now imports all dependencies again. Nnnnn update flamegraph UI 2 (#11695) 29c76e799a * support downloading profile assets on demand * chore: more profiler updates fix(unreal): Fixed Mac RHI (#11694) 8e1ff5eb60 * fixed building on mac, started fixing atlas change for rhi * fixed atlas render for rhi * perf test stuff * fix rhi mac SM6 * added tods changes for fab store compliance chore(editor): get viewmodel instances from cpp on demand (#11680) d04d8106fb * serialize viewmodel instances on demand * move map outside file to avoid memory leaks Optimized feather (#11625) 72f05121ea * Convert to Float16 * Clang * Update render_context_vulkan_impl.cpp * Updated GMS * Update render_context_gl_impl.cpp * Update * Update gpu_namespace_test.cpp * Update gpu_namespace_test.cpp * clang * Comments * clang * Update common.glsl * Update Shaders * Add non conversion filtering path * Update draw_path_common.glsl * Remove gather and use a R16 texture for atlas * Update draw_path_common.glsl * Update draw_path_common.glsl * Update draw_path_common.glsl * Update draw_path_common.glsl * Revert back to R32 * Update render_context_d3d_impl.cpp * Update draw_path_common.glsl * Update draw_path_common.glsl * Update draw_path_common.glsl * Update draw_path_common.glsl * Update render_context_metal_impl.mm * remove r16 * Update pipeline_manager_vulkan.cpp * Update pipeline_manager_vulkan.cpp * Change metal to R16F * Moved filter_feather into a inline function * Rebase GMs * Restore 16 bit * Fixes * Update pipeline_manager_vulkan.cpp * Clang * Update GMs * Update GMS * Remove setting feather texture * clang * Update Gms * GMS * Update GMs * Update pr_platform_tests.yaml * GMS * Change min to clamp * Rebase GMs * GMS * GMS * GMS * GMS * GMS * gms * GMS * GMs * GMs * GMS Fix Lua stack imbalance when registering module (#11683) a03a19071f Make better dithertypes image (#11664) 3fb7ee93b6 * Update dithertypes.cpp * Create dithertypes.png * add gms * Rebase GMs * Add GMS * GMS * GMS * GMS feat(renderer): Implement dither for clockwise mode (#11660) 1de6e822b1 Also requires bumping the scratch-color texture to rgb10_a2 so we maintain better precision for the dither. feature: Mirror Performance Profiling & Editor Performance View (#11667) 9ff17d62ca * feature: adding profiler to ffi * feature: performance metrics * fix: mirror shows coop loading progress * feature: add mirror tests * fix: feature flagged performance profiler * fix: mirror strings * fix: ui strings for profiler panel * fix: missed performance_panel.dart * fix: microprofile wasm * fix: rive_binding feat(vk): Add an option to disable fixed function clockwise mode (#11666) 838cad2bf2 Dithering does better when we evaluate our blend equations in medium precision from the fragment shader, vs letting it happen in the blend unit (which, presumably, must be lower precision). For this reason, an app may wish to disable "fixed function" rendering for clockwise mode. fix(shaders): fix for angle gm (#11670) f4c16df15d fix for angle gm Convert Atlas texture to be Float16 from Float32 (#11637) ce781fdcc0 * Convert to Float16 * Clang * Update render_context_vulkan_impl.cpp * Updated GMS * Update render_context_gl_impl.cpp * gms * Josh's comments * GMS * Update GMS * Rebase GMS * GMS * GMS fix(renderer): Interleave positive and negative feather atlas triangles (#11654) 37764336db We were rendering the atlas with all negative triangles first, followed by all positive triangles. This is the worst possible ordering for maintaining high precision in a 16-bit coverage buffer, since as the magnitude accumulates, we lose the lower bits. Instead, render the positive/negative triangles interleaved, in the same order naturally come in. This requires an extra check in the fragment shader for whether the triangle is clockwise. fix: Check for bindableProperty nullptr in TransitionViewModelCondition (#11653) aa788cab46 Microprofile on Mac (#11650) c0ee8aa205 * Update premake5_v2.lua * Update premake5.lua * Update fiddle_context_metal.mm * Update premake5.lua feat: Layout aspect ratio (#11630) e4ac15fc2b Adds support for aspect ratio (which is a numeric value representing the ratio of the width to the height of a layout). For example: A value of 2 means the width will be twice as large as the height A value of 0.5 means the width will be half as large as the height Sometimes you may want to set the dominant axis (for example, use the width value as source of truth to compute the height value using the aspect ratio, or vice versa). Yoga allows this by using it's parent layout direction, and that is what we do. If the parent is set to Row, it will prioritize the width and compute the height, and if its set to Column, it will prioritize the height and compute the width. Default value is 0, in which case it does not apply any aspect ratio to the layout computations. May need a UX pass. feature: mirror! (#11640) c7217d5b3c * feature: mirror! * feature: add console fix: dispose ScriptedContext when ScriptedObject is disposed (#11616) a153b953bf feature: expose audio engine absolute time for synced playback (#11619) 3109712183 * feature: expose audio engine absolute time for synced playback Add dither functions (#11282) 599f58a196 * Add dither functions * Update draw_raster_order_mesh.frag * Update draw_raster_order_mesh.frag * Update draw_raster_order_mesh.frag * Cleaned up code * Claaaaaaannnng * Add to MSAA and clockwise * More updates * Add to atomic path * Update draw_clockwise_atomic_path.glsl * Claaaaannnngggg * Add ditherScale and ditherBias to flush uniforms * Add 4x4 bayer option * Update common.glsl * Added more atomic dithering * Moved ditherScale and ditherpass to be passed in * Clang * clean up * Add temporal animation on dither pattern (complement of odd frame) * Add temporal dither as well as #Defines * clang * clang * clang * Move to shader misc flags * clang * clang * Update specialization.glsl * Fix atomic * clang format * fix cast to half * Add selection of dither modes * Clang format * Address Chris' comments * address more comments * More updates * Clang format * Remoe lines * Move to m_baselineShaderMiscFlags * Move shader bits to pack to 2 instead of 3 bits * Update gpu.hpp * Handle VK * Delete draw_clockwise_atomic_image_mesh.glsl * Clang * Address comments * Update draw_mesh.frag * Add GM * Update VK * clang format * Update gpu.cpp * Update dithertypes.cpp * Update atomic_draw.glsl * Update comparison for dither type * clang format * Address comments * Update render_context.hpp * More comments * clang * More comments * More comments * clang * Update Gms * GMS * GMs * Update background_shader_compiler.mm * Update render_context_metal_impl.mm * clang * GM * Change the dither code to be on a dynamic branch * Removed all shader viariants for dithering * Update common.glsl * Remove branch on dither * Add dither as a shader feature * Update gpu.cpp * Clang * Clang * VK * Update dithertypes.cpp * Clang gm * Clang * Update metal stuff * Clang * Update generate_draw_combinations.py * Update generate_draw_combinations.py * Update background_shader_compiler.mm * Update render_context_metal_impl.mm * Update render_context_metal_impl.mm * Fix vertex * Clang * GMs * Update gms * Update draw_pipeline_vulkan.cpp * More GMs * Update gpu.hpp * Update gms * Update draw_pipeline_vulkan.cpp * More GMs * More GMs * Update GMs * Update dithertypes.cpp * GMs * Clang * Update GMs * GMS * More gms * Update gpu.hpp * Address comments * Clang * Clang * Update common.glsl * Update common.glsl * Fix metal * clang * Gms * Update gpu.hpp * gms * gms * goldens * Update common.glsl * whitespace * Update gpu.hpp * Update dithertypes.cpp * Update GMS from master * GMS * Remove all dithertypes gm * Clang * Update GMs feat(vk): Add a "virtual tile" feature (#11589) d4355212e2 Adds a frame option for splitting the rendering up into virtual tiles. As of now, each tile gets drawn in a separate render pass. The purpose of these virtual tiles, for now, is to break the frame up into smaller chunks so that Rive can be pre-empted by other rendering processes. This is only supported on Vulkan/non-msaa. Changed namespace of RectanizerSkyline (#11617) 68d898e3de * Changed namespace * Update sk_rectanizer_test.cpp Add ease in out code (#11607) 33e98faa6a * Add ease in out code * Update * Update gpu_namespace_test.cpp * Update constants.glsl * Update gpu_namespace_test.cpp * Update gpu.hpp * Clang * Update gpu_namespace_test.cpp * Update gpu_namespace_test.cpp * clang * Update GMS * More GMS * more gms * gms * Comments * clang * Update common.glsl * Update Shaders fix(Unreal): UE platform updates (#11621) 9df72a3757 * updated platform for mini audio * fix tesselation shader * fixed pixel shader output for atals texture * needed define feature: rcp<ScriptingVM> (#11620) 53de8c7b01 feature(unreal): New Platform support (#11604) 7182effde6 * initial switch commit * switch support. Added force MSAA define, properly link against rive core built for switch, switch plugin for unreal, seperate draw using blt texture fore resolve * now play animation if no statemachine is found * format * copy draw list for msaa * switch wip * initial switch working passing gm / golds in atomic mode * switch not builds correctly alongside the other platforms * wrap path id in ifdefs fix: use after free of lua_State (#11618) fb6d35a8d3 Fix script compilation speed (#11592) c286304f4d * feature: export all scripts * fix: pallettes * working on scripting workspace * asan * feature: recompile full vm * feature: ephemeral flag * feature: map generator refs * feature: compilation time * fix: remove accidentally committed files * fix: better request_vm_test.cpp * cleanup * fix: wasm binding * fix: clang-format * fix: rive.dart * fix: add missing scripts * fix: remove unused function * fix: make_docs.sh * fix: riveFileSetScriptingState nullable * fiix: cleanup fprintf * fix: cleanup * fix: format * fix: ui strings * fix: comment * feature: export in compilation order * chore: clarifying comment * fix: share binary writer * fix: missed endif * fix: add miniaudio to scripting workspace * fix: failing tests * fix: tests feature: fast function calls for Vector (#11602) 953dd2021b * feature: fast function calls * fix: clang_format vector test * fix: missing include feature: add audio support on scripts (#11582) 3e2bbcf7f0 fix: remove metatable creation (#11598) bd80286805 fix: we do not need to create a metatable and it was causing issue because it was shared byu multiple tables feature: add support to provide view model instance to artboard and p… (#11590) 924040d3e2 feature: add support to provide view model instance to artboard and pass parent data context feature: add support for deterministicMode for tests (#11562) 0bd4a639ab feature: add support for asPath and asPaint script methods (#11580) 6ce4ab9eb1 chore(Vulkan): Vulkan "core" is now Vulkan 1.1 (#11581) 9b93015635 The Rive Vulkan renderer requires a minimum spec of Vulkan 1.1, but the core code was still setting 1.0 as the minimum supported version. This was fine with our tests because we were never trying to run them on devices that didn't support at least 1.1, but this updates core so that it's consistent with our minimum. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
9a54aa258f |
chore(flutter): release 0.14.2 (#11584) 9c84acd0f7
Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
69df876276 |
docs(flutter): point to pub example (#11573) 7d19394530
* docs(flutter): point to pub example * docs(flutter): additional instructions in example folder feature(editor): Importing a library script imports its dependencies (#11385) 11572bfdab This PR adds support for automatically adding any dependency scripts of a library script that is added to a file. We recursively walk down the dependencies until they are all added as ScriptAssets to the host file. Includes an update to peon worker to return dependencyIds and folderPath with the script attributes. Namespacing using folders isn't supported in this PR but will be addressed subsequently. fix: missing blob_asset.json files (#11574) 0e3db43471 feature: the blob Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
0556924fe4 |
chore(flutter): mark internal members and expand comments (#11506) 440cbadbf3
* chore(flutter): mark internal members and expand comments * chore(flutter): hide internal member * chore: formatting fix: hit tests on leaves of collapsed layouts should not succeed (#11568) e680a845a5 fix: luau stack on layouts (#11565) 55743a6610 feature: expose data context via scripting (#11560) 02996b61bb refactor(Renderer): Better Offscreen render support (#11521) b840c40aa1 * fixed blend mode in d3d12. made offscreen render targets work for d3d and d3d12 * format * added offscreen rendering to Unreal testing window * fix comment and typo * updated rhi to also only do source blending when needed * added new golds * more golds * more golds chore(Vulkan): Make the Vulkan bootstrapping code error handling more recoverable (#11536) 482babcfce Rather than asserting/aborting on failures in the bootstrapping code, this change updates it to return errors (sometimes by error code, sometimes just as a failure with logging, depending on the scenario). This should be useful for the high-level Android runtime's Vulkan support. fix(fiddle_context): fix memory leak when window resized (#11557) 82290a8976 The path fiddle context was leaking IO surfaces inside of the view layer, and putting the contents of the `onSizeChanged`, `flushPLSContext`, and `end` functions solves it. fix(editor): Fix crashes when resizing hierarchy panel and generating share link (#11556) 84435c6038 Fixes 2 crashes in editor: When the editor window is resized to a small size, then the hierarchy panel is resized, it can result in a dino crash An unrelated crash was discovered when trying to export a share link. Added a nullptr check to resolve it. fix: Only apply layout interpolation on new frame (#11555) 4c6e0011da Previously we weren't checking for the newframe flag prior to applying layout interpolation which caused us to return true when we shouldn't (resulting in unnecessary option C loops). This PR adds that check. This also resulted in layout animation applying a frame to early. feature: blob asset! (#11554) fdaec2ec5d feature: ScriptedRenderImage! (#11473) 12f56c871a * feature: ScriptedRenderImage! * fix: failing tests * fix: merge bug * add image lookup callback for nested artboards * remove imageLookupCallback feature: bump to luau 706 (#11544) 0edc7b14a8 * feature: bump to luau 706 * fix: clang format Prevent layout animation on Artboards just added to ArtboardHosts (#11548) f16f751405 * Prevent layout animation on List items just added to List * Rebaseline silvers fix: crash on script dispose (#11542) e86db167ed feature: expose root viewmodel to scripting via context (#11539) 0eadaaea47 fix(apple): use core text suggested fallback font if necessary (#11530) 147fe75b6b feature: add support for mapping view models to artboards in lists (#11524) 41002bf174 * feature: add support for mapping view models to artboards in an artboard list fix(UAT): script asset key id (#11525) e59db089ed feature: add support for creating text runs from view model lists (#11519) 904f37cdf3 * feature: add support for creating text runs from view model lists Add copy/paste support for ScriptAssets (#11522) f2df4669c8 Users can now select a script in the assets panel and ctrl/cmd+c to copy and paste in the same file or between files. I didnt add copy/paste items to the right click menu in this PR, but we can if we decide its warranted. This also adds a fix for a bug where when duplicating an Artboard that was marked as a component, the Component did not appear in the assets panel. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
1953eb40c3 |
chore(flutter)!: update the minimum Flutter version to 3.28.0 (#11509) ca8bf93429
Nnnnn add scripted inputs (#11494) a8418441ca * chore: add support for inputs in scripted istener and conditions feature: add scripted transition condition protocol (#11479) 853b2a08b5 * feature: add scripted transition condition protocol chore: process listeners in specified order (#11487) 3253c0beae * chore: process listeners in specified order * resolve sorting on export 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 Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
fbfd485ecc |
feat(flutter): add a value stream to observable data binding properties (#11480) d020d4554c
Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
dd9acea80b |
feat(flutter): expose enumType on ViewModelInstanceEnum (#11470) f88b98828b
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. 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. feature: scripted listener actions (#11468) f3a89390cb Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
2277511e92 |
chore(flutter): release 0.14.1 (#11456) bd02dca338
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. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
53056d7121 |
feat(flutter): compile with runtime scripting (#11432) 3c44afce94
* feat(flutter): compile with runtime scripting * chore: revert editor only code * chore: revert * chore: add back dummy editor script linking Fix ScriptedDrawable save/restore (#11451) e7142dcfed No double deref luau (#11448) 62fcec60de Add opacity support to ScriptedDrawables (#11446) 9b416a02f6 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 feature(scripting): add support for accessing view models and enum pr… (#11437) 620000211e feature(scripting): add support for accessing view models and enum properties Nnnnn provide path node data (#11428) 67006966a5 chore: replace path effect signature to pass full node to scripting Scripting namespaces (#11429) f810efd11a feature: add support for data binding scripted artboard inputs (#11423) 48d14f1521 chore: do not track nested artboard count 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 feature(scripting): instance linear animations (#11386) 722a1ae998 feat(scripting): build dummy luau vm if disabled (#11422) 393e19b4fa fix: Scroll with snapping max scroll target (#11419) ce274af56c Nnnnn different fixes (#11415) 4b0ea7e631 * fix: invalidate effects when sorted * improve scripted converters code feat(scripting): forward declare luastate (#11418) a08d538dbf Fixes an issue when building runtimes with scripting enabled where certain headers may not be included feature: pass view model instance to bindable artboard (#10815) 3734dc3ab9 Nnnnn fix memory lua issues (#11412) ba94f03ad0 * push scripted drawable to stack twice to ensure it is not destroyed before use * code improvements fix: trigger change on solid color change (#11399) b5a73917b1 chore: advance scripting only if it is still active (#11394) 0488666fb0 * chore: advance scripting only if it is still active 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. test: Add a 'paintType' option to player (#11371) 209e1b6d96 Allows us to turn off fills or strokes for testing. fix(runtime): ScriptedArtboard origin fix (#11395) 88f2054b8a 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 fix(scripting): some crashed related to paths (#11378) c05b97d6d5 * fix(scripting): some crashed related to paths chore: Enable with_rive_scripting flag for wasm (#11329) 8e395d6bb0 Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
1ed742e74a |
fix(flutter): expose AudioSource and add example usage (#11380) da1c7a6ae2
Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
cd195cf325 |
chore(flutter): avoid name conflicts on Key and other cleanup (#11381) edc94495f2
* chore(flutter): avoid name conflicts on Key and other cleanup * chore(flutter): analyzer warnings 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 feature: add group effects support (#11359) df0db41a9c 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 fix: lua error on in-flight path mutation (#11350) 56f08da6b1 * fix: lua error on in-flight path mutation * fix: remove DrawOption * fix: failing tests 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 fix: cast int as double when solo is bound to a number (#11332) 699b891b79 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. fix: initialize did change as true (#11323) 9f2de92c4c feature: allow listeners to listen to any type of view model change (#11313) 4b7a5a8032 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. fix(unity): webgl harfbuzz conflict in unity 6.3 (#11309) 5e2ecca169 feature: support name based binding paths (#11007) a55da7f31f * feature: support name based binding paths Update public key for verifying script signatures (#11301) db3368437f 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. feature: bytecode header format (#11293) 68f1096d75 * feature: bytecode header format * Reexport scripting test rivs * Reexport one more riv 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. Refactor Script registration (#11280) bc6f965d1f chore: bump to luau 0.703 (#11285) 752595c590 * chore: bump to luau 0.703 * fix: error changed in linter Add .frag and .vert to file list (#11289) 3bd6d37844 Update premake5_pls_renderer.lua 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 fix(UAT): only trigger callback when instance is created from scripting (#11283) 7564ef1fcb feat(runtime): skip drawing unchanged frames (#11127) f32a23806c * skip drawing unchanged frames 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 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 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. 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. 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. fix(editor): Input to VM toggle fix (#11272) 1dd286c979 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 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. Layout animation time bindable (#11264) c95fe9334e 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 feature(scripting): add support to create view model instances from s… (#11232) 6fc23e1608 * feature(scripting): add support to create view model instances from scripts Scripting in Core Runtime (#11235) 0a5325e474 rev to luau 0.702 (#11259) b50983c49d chore: bump macos-version-min to 11 (#11260) 08a3949a0d Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
f8898c4435 |
fix(flutter): missing artboard DataType enum (#11247) cfede8c1c3
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. chore: skip save operations on clipped single shapes (#11244) d352fe277e 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: Gordon <pggordonhayes@gmail.com> |
||
|
|
885a1154e0 |
chore(flutter): publish 0.14.0 (#11238) 057d841733
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. 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) feature: add support for animated clipping layouts and shapes (#11222) e2a5390cb1 fix(Unreal): Unreal perf improvements (#11221) 6a24742e15 * move all used textures to rdg * changes needed for packaging a game 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 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. 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. 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: Gordon <pggordonhayes@gmail.com> |
||
|
|
ea769d78de |
fix(flutter): make RiveWidgetBuilder file loading cancellable (#11190) 9e48626a96
* fix(flutter): make RiveWidgetBuilder file loading cancellable * docs: update CHANGELOG 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. fix: list updates correctly when items are added or removed (#11206) 255f1ba3d2 fix: ignore non visible clips when removing redundant operations (#11207) 673820da1a update scripted drawable clipping to new strategy and remove unused function (#11195) 8002b223a3 * update clipping to new strategy fix(scripting): store data on all cases (#11197) 7fae9fb6c8 fix(EA): list index can be compared to numbers (#11194) e2f7d6cde1 feature: apply clippings as separate drawables (#11183) c3237c0283 * feature: apply clippings as separate drawables chore(scripting): add clipping support to scripted drawables (#11184) 27085dfb0c 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 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 chore: complete scripted converters implementation (#11166) 55853117b2 chore: finish scripted converters implementation chore: Preprocess transitions conditions on initialization (#11150) bb52cbd4a3 Preprocess transitions conditions on initialization fix: reset interpolator and initialize it on convert (#11157) 0791ee519d * fix: reset interpolator and initialize it on convert feature: goto definition (#11143) 4f005f715e chore: updating to luau_701 (#11142) d4dfc63c3a 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) feature: add path effects for fills (#11136) 376052977b feature: add support for path effects for fills fix(vk): Only rely on implicit PowerVR raster ordering on Vulkan 1.3 (#11132) 4cdb5779cd After testing a statistically significant number of devices (7, specifically!) I have concluded that implicit PowerVR raster ordering only works with Rive on Vulkan 1.3 contexts. Update our renderer accordingly. Update path_fiddle.cpp (#11123) 19be344a5a * Update path_fiddle.cpp * clang format fix(Vulkan) Vulkan synchronization fixes (#11091) 810e208837 This gets (non-atomic) Vulkan rendering to pass the Vulkan synchronization validation layer tests. Nnnnn add support for path effect part 3 (#11107) c27b081319 * WIP * ui * fix errors * remove duplicate code * remove empty switch case * make pathData return required * add web ffi path methods fix: rename Node to NodeData (#11110) c46192f1fe add support for path effect (#11095) ab13b4d1a2 * add support for stacked path effects chore: rename vec2d to vector in scripts (#11097) 4ad14fbe73 * chore: rename vec2d to vector in scripts * chore: replace comments * chore: fix formatting * chore: formatting * fix: bad definition * fix: pointer event chore: Runtime Scripting fixes & tests (#11094) 539bd8c48c - Call reinit on ScriptedObjects in Artboard::initialize as discussed. We still need to reinit in Artboard::internalDataContext, because things like ScriptInputViewModelProperty depends on the ScriptedObject having a datacontext, which we don't necessarily have at initialize time. - Always run the setup code in ScriptedObject::scriptInit, but only run the init function if we verified its implementation. - Added some tests. Still need to add more comprehensive tests once we can get rivs exporting with bytecode. feature: autocomplete requires! (#11090) 6bd796b5f0 * feature: autocomplete requires! * chore: cleanup fix(vk): Never read the resolve attachment (#11081) 2430b66647 When Vulkan expands the renderTarget into the MSAA color buffer for LoadAction::preserveRenderTarget, we've been reading the resolve texture as an input attachment. But it's debatable whether a texture can be an input attachment AND a resolve attachment in the same render pass, and some early Qualcomm devices have struggled with this even if we implement the MSAA resolve manually. For now, always copy out the render target to a separate texture when there's a preserve. chore(scripting): rename scripting (#11084) 85b425bf93 * chore(scripting): make init and draw optional * chore(scripting): rename ScriptType to ScriptProtocol and none to utility * rename Drawing to Node Peon Worker Script Signing (#11063) 8748f53562 * feature: signing and compiling via ffi * feature: script signing * fix ups * Fix tests feature: Script signing (#11016) 9295f20b82 * feature: signing and compiling via ffi * feature: script signing * fix: missed with rive scripting * chore: more fixes * fix: rive_native wasm * fix: missed dispose call for the workspace * feature: optional signing * chore: core collision * feature: doing actual verification * fix: signature verification at runtime * chore: missed files * fix: switch order * fix: with rive scripting flag * fix: core def collisions * chore: unifying enrich assets * chore: remove unnecessary type check * fix: signing context fix(vk): Use rasterOrdering mode on Imagination GPUs (#11072) 69b2a3c643 We already have a codepath that enables rasterOrdering on ARM, even if the extension isn't present, because we know that's how these GPUs work. If we enable this codepath on Imagination, it appears to work as well. This works around an MSAA crash on Pixel 10. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
218e71957d |
refactor(flutter): move rive_native setup from CMakeLists to Gradle (#11067) 2aa57b3d8a
* refactor(flutter): android move rive_native setup to gradle from CMakeLists * chore(flutter): update rive_native android example * chore(flutter): add android rive.native.skipSetup example * docs: update CHANGELOG * chore: revert example rive_native dep feat(wgpu): Add core support for MSAA (#11040) cb9968caef Implement an MSAA mode in WebGPU that doesn't rely on any optional (non-core) features besides SPIR-V. This will be the catch-all fallback that works everywhere. fix(editor): Prevent runtime script advance when state machine not playing (#11062) 81f6b8ffa7 chore: rev to latest luau release 700 (rive_0_23) (#11060) 2ac436db1b * chore: rev to latest luau release 700 (rive_0_23) * fix: api changes chore: ScriptedDataConverter in runtime (#11053) 05e1b4ab9f ScriptedDataConverters in C++ runtime. Adds a new DataType.any which allows a datavalue to be applied as long as the propertyKey type matches the datavalue's type. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
411ae722e7 |
chore(flutter): publish 0.14.0-dev.14 (#11056) 486d88ad91
Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
6e2f76e665 |
feat(flutter): expose method to access all text runs relative to artboard (#11034) 83eae64358
* feat(flutter): expose method to access all text runs to help migration * docs(flutter): update changelog * chore(flutter): avoid naming clash with editor * ci(flutter): why new flutter break test :( feature: add ScriptedContext (#11052) 1d2c69015a * feature: add ScriptedContext chore: cache advancing components and support any core object as adva… (#11039) a9e670e153 chore: cache advancing components and support any core object as advanceable chore: Scripted PointerEvents at runtime (#11046) 7507e62b37 This PR refactors some of the StateMachine related code (listener groups) and adds support for pointer events to ScriptedDrawables. feature: add contour measure to scripted path! (#11049) b63286db94 * feature: add contour measure to scripted path! * fix: failing tests fix: only delete invalid objects when an artboard is destroyed (#11048) c85665930c chore: Perform Script's method validation only once (#11037) c783bb438c fix: advance current state by 0 when there is no previous state (#10994) f1fb606c21 * fix: advance current state by 0 when there is no previous state * fix memory leak Scripted Layouts C++ Runtime (#10907) 6f471b7939 fix(webgpu): Various fixups (#11023) 4ecb920d73 Fix a couple shader flags in WebGPU (including some refactoring to handle them at the RenderContext level instead of the backends). Fix renderTarget{Width,Height} in TestingWindowWGPU. Add a "--gms" option to check_golds.sh so we can skip goldens in local runs and make them faster. Add a "-r" option to check_golds.sh for release runs. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
09f6c9d8e2 |
fix(rive_native): call textureFrameAvailable on main thread (#11011) 627eb78471
* fix(rive_native): call textureFrameAvailable on main thread * fix(rive_native): cont textureFrameAvailable on platform thread chore: Implement ScriptedObjectImporter to import ScriptInputs (#11002) 08647852bf fix(dx12) intel and Intel arc support (#11022) 21cbb65eef * fixed intel arc * dont use raster ordering with intel arc * better comment * pulled out intel checks as requested on PR Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
786587c7ae |
ci(rive_native): expand runtime platform tests (#10979) 6b8c2178ff
* ci(rive_native): expand runtime platform tests * ci: setup flutter * ci: git lfs and pub get * ci: flutter linux setup * ci: sidestep windows * ci: add rive native web integration test * ci: skip full test suite on linux * chore: force build * ci: temp disable web integration test * ci: only test web integration for now * ci: debugging! * ci: install xvfb * ci: attempt fix * ci: install npm deps * ci: reduce linux deps for fast runs * ci: renable all jobs * ci: linux reduce deps install * ci: add uuid and retry windows * ci: ignore windows and linux unit tests for now * ci: re-enable all tests * ci: remove python venv * ci(flutter): add higher level flutter package test for rive_native chore: rev to luau 0.699 (#11019) 1bb021d018 Fix Vulkan bootstrapping API version reporting (#11001) f5191dd154 The version that was being passed to the rive vulkan context was the version from querying the instance, which can differ from the API version that the actual device supports. This now correctly passes the device's vulkan version, which eliminates the need for a weird workaround in the VMA initialization (where we thought we had a Vulkan 1.3 device but in fact it was only Vulkan 1.0). Additionally mark the VKDBGUTILWARN003 message that happens on the S23s as non-aborting. It appears to be an incorrect warning - "Renderpass is not qualified for multipass due to a given subpass", for a renderpass that is not set up as multipass. Update our signal handler to break into the Windows debugger if it's attached (#11015) d9b3ed9801 Update our signal handler to break into the debugger if it's attached on Windows fix(wasm): Remove ASAN from the default WASM debug build (#10995) 0743b80014 This was causing our wasm debug binaries to become so large that some browsers couldn't handle them anymore. If we need ASAN, we have a proper "--with-asan" option for that now. feat: Implement clockwise mode on GL_EXT_shader_pixel_local_storage2 (#10987) 5f018f395b Clockwise mode finally gives us a really good use case for EXT_shader_pixel_local_storage2. On scenes that don't use advanced blend, this is showing speedups around 1.35x. This PR also does some cleanup around consolidating the logic for ShaderMiscFlags::fixedFunctionColorOutput, so we don't have to re-implement the same logic in every backend. chore: improve collapsed data bind processing performance (#10962) ed5a446ff2 fix(runtime): Revert state machine checks for needsAdvance (#10985) 3b82e09da9 Reverted an update where nested artboards were checking their nested state machine instances for needsAdvance and advancing if true. This appeared to fix (#10842) an issue that required a double advance when running goldens, however, there is actually another issue that this masked rather than fixing it. That will come in a seperate PR. Report missing gms in overnight/manual GM Tests (#10988) 5615843df1 Now when Rive Slack Bot posts to the golden channel when a gm run (both gl and vulkan), it will also report the missing results (and missing goldens, should that be a thing) if there are any. fix(renderer): d3d12 AMD / Intel support / raster order support (#10983) c47562209d * proper states based one warnings. Support for gpunamefilter * fix for raster order mode * now works on AMD * factored out wstring conversion * clang format * no need for pop back if using len -1 * removed uneeded forward declare Bump to latest wagyu port (build 69) (#10977) d0b67890c8 Bump to latest wagyu port (build 69) to get access to wgpuWagyuStringArrayFreeMembers feat(vk): Support faster texture updates (#10978) 0049d6e21e fix: crash when multiple definitions have the same name (#10976) 43585faefe Improvements to Browserstack golden/gm runs (#10967) d2f21b08aa A few quality-of-life improvements to the way the Browserstack runs (and image diffing) work and look. - Add a Device Summary to the generated diff page that shows the list of devices and how many tests passed/failed/were missing for each (with failures sorted to the top). This makes it easier when things are failing a lot (like currently in Vulkan) to more easily where the failures are - Fix an error when running the Browserstack script on Windows - Add the Android OS version to the device name (there are multiple of the same device make/model on Browerstack running on different OS versions, and we were squishing their results together into one pile) - Simplify the device name for devices with a redundant model name (i.e. Google_Pixel_6 instead of Google_Pixel_6_Pixel_6) - Set a display name on browser stack (mostly so that the browserstack dashboard will stop showing a warning that some tests don't have names), but the display name contains the backend name (or default if it was unspecified) so browsing between gl and vulkan runs is easier - Unified color definitions (and changed a couple to be easier to read, especially in the device summary page) - Fixed how some of the text was being injected into the template to not contain a bunch of (conveniently invisible) \ns (that is, the actual text \n was in the document, not as newlines) - Diff page no longer shows the "pass" and "identical" sections if it's in fails_only mode chore(scripting): add support for creating pointer events in scripts (#10968) 2daf848d0a fix(unreal): Several fixes for unreal (#10963) 5a321f1807 * added setter methods for properties * made lists a reference. unsettle artboard in a bunch of places that needed it. * made lists references. Removed field notify value from lists. * added context menu entry for cleaning generated classes * started implementing clean function * added clean context menu entry for cleaning up duplicate blueprint types * attempting to make list manipulation more stable * re arranged how view models work * rebase error * now properly removes handle even if objects goes out of scope * uneeded header and clang format * more uneeded header * missing check * added unit test for getHandleForInstance * addresed pr comments * pr comments * missing semi colon * clang-format refactor(renderer): move gamma correction logic to atomic resolve. (#10966) b9471b7d2a * updated unreal msaa shaders to use new includes * moved gamma convert to be at end instead of begining Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
fbe806ad10 |
fix(flutter): ref FileAsset and add dispose with finalizer (#10918) 6b091f8286
* fix(flutter): ref FileAsset and add dispose with finalizer * chore(flutter): update out of band example disposing * chore(flutter): early clean assets on decode * fix(flutter): assetLoader check 0 on web not null feature: rev to latest luau (#10960) ac8e6c591e Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
417151726c |
fix(flutter): add isTickerActive to better track animations (#10820) f2c28d32d0
* fix(flutter): add isTickerActive to better track animations * refactor(rive_native): layout and first paint feature: add to path (#10961) 1607b4d220 feature(scripting): expose pointer events (#10958) d571f01f6e feat(unreal): basic rhi msaa support (#10926) a2fcd46df8 * Started adding msaa mode to rhi * initial state msaa working on d3d12 * Now set stencil ref via set pipeline state * set stencil in correct location * vulkan msaa working for non advanced blend in rhi * fixed missing check for msaa * proper merge msaa and fix advanced blend for atomics * added COALESCED_PLS_RESOLVE_AND_TRANSFER permutation and added better shader compile exclusions * Now uses coalesce resolve * base msaa working in d3d12 rhi * mac support for non advanced blend msaa * finally wokring on both dx12 and vulkan * seperated out splitting render passes by a platform feature flag * better name * merge master * some odd typo * better matrix compare * better comment * glsl syntax fix * removed commented code * removed is matrix function in favor of all() as per PR comment * factored out modify shader as a subcless * updated cvar variable * fix typo * followed PR comments * more pr comments * clip planes actually do work now * removed FixedFunctionColorOutput variable in favor of the flush desc member var * fixed type restrictions and clang format * improved comment and added missed file from last commit * revert factoring common code because it was causing several errors * factored out common shader code * check clip plane support * changed back to vulkan only chore: add utf8 library for scripting (#10956) 097cdb71c3 fix: treat conditions as unmet if the state machine is not bound (#10955) 5c6dfc4b7a feat: Implement clockwise mode using the interlock in Vulkan (#10951) 9903c18b2e Pretty straight-forward implementation. On Intel this is showing speedups in the 1.2-1.6x range (over atomic mode, and depending on content). fix: require order causing a crash (#10953) fd749cce47 feature: add word joiners support (#10908) 937778bd8d feature: add support for quantization and speed controls on nested artboards (#10839) 96e8debf43 feature: add support for quantization and speed controls on state machines feature: add scripted nodes! (#10949) 6a61e45ac0 fix: no crash if bindableProperty is nullptr (#10944) 45400d8398 chore: add more scripted converter features (#10939) 5f3da40291 fix: fp16 precision issue in clockwise rendering (#10940) 1a7500295d We were using an epsilon that became 0 in fp16. Bump it to a nonzero, non-denormalized fp16 value. fix(Vulkan): Various Android Vulkan fixes (#10927) a7d233d7c1 Device fixes: - Break the MSAA resolve off into a separate render subpass to resolve corruption on some Adreno devices - Work around an issue where some early Mali drivers report Vulkan 1.1 support but are missing the allocation functions that vma is looking for - Some of those Mali devices spew incorrect validation errors about the inability to create, say, an RGB8 texture because the maximum mipmap count is 0 (and other similar "oops we queried and got 0" errors) even though the images actually create fine. Added them to an ignore list. - The MSAA color and depth/stencil textures are now being created with the TRANSIENT bit (this doesn't fix any known device issues but it does seem more correct) Other improvements: - vk_check now displays a string representation of the vulkan error instead of just its numeric value - the abort handler on Android now also prints the stack trace (to make debugging easier) - fiddle_context_vulkan now requests the correct width and height for image capture - The queueImageCopy function in swapchain was not properly setting the pixel read bounds to the whole swapchain if passed an empty AABB feat: missing Mat2D.invert to use existing Mat2D ref (#10935) a406176fa6 * feat: missing Mat2D.invert to use existing Mat2D ref * feature: add bounds minor scripting dogfood fixes (mat2d setters & artboard input) (#10934) a15901421d chore: add missed setters and fix artboard inputs feat(vk): Use the PLS transient backing resource in Vulkan (#10905) 4e366e3ddb feature: adding scripted pointer events (#10915) 3ebf132c40 * feature: adding scripted pointer events * chore: adding pointer event test Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
dbe08d425b |
chore(flutter): improve library loading and error messages (#10911) 8c460f7150
feature: expose width/height setter/getter for scripted artboards (#10917) d01497d380 feature(scripting): add data value color support for scripted converters (#10909) dfa19bdfbb Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
b45346db54 |
chore(flutter): publish 0.14.0-dev.13 (#10914) fa6b160f98
* chore(flutter): publish 0.14.0-dev.13 * chore(flutter): allow more versions for vector math * chore(flutter): revert example new scale api Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
e973c1f273 |
feat(flutter): add RiveArtboardLayoutMixin for better layout and sizing (#10849) 24d5d03049
feature: expose time functions (#10916) 6b70e37991 rev to rive_luau_18 (#10901) c1e0f7b595 * rev to rive_luau_18 * fix: for change in luau * fix: default old solver * adding back missing files * fix: test * update .riv files * chore: updated to luau 0.697 feat: Initial implementation of a clockwise rendering mode (#10897) 2fb75868b5 Add a new InterlockMode that overwrites all fill rules as clockwise and implements the clockwise path rendering algorithm using raster ordered PLS. The only backend to support this so far is GL with shader images, but more will come. Notably, when there is no advanced blend, we can set "fixedFunctionColorOutput" and render directly to the target framebuffer. Performance so far looks promising, especially on Intel, but more in-depth perf optimizations arebyet to come. This is implemented as its own InterlockMode only to give it soak time. Once this rendering mode is stable, we can merge it back into "rasterOrdering" and just select draw shaders based on fill rule. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
15dde57e6b |
chore(flutter): bump min flutter 3.27.0 and dart 3.6.0 (#10890) c17605691c
* chore(flutter): bump flutter min 3.27.0 and dart 3.6.0 * docs(flutter): update CHANGELOG chore: add support for zero width spaces as word breakers (#10899) c804e738de chore: add support for zero width spaces as work breakers fix: set dataContext to nullptr when unbinding (#10898) 684c603b1a fix(vulkan): Fix image/gradient rendering on some Android devices (#10894) d8e7fbdb7b On some Adreno models, gradients were not properly rendering properly, due to the texture/gradient coordinates always being 0 This was caused by what appears to be a driver bug, in which doing vkUpdateDescriptorSets with multiple descriptors (in our case, updating paintData and paintAuxData in a single call) would fail to properly commit the data from the second one. We're only doing this in the one place. Separating this into two calls causes gradients and images to now display as expected. chore(vk): Remove a redundant interlock mode from the draw pipeline key (#10887) 979c4feb82 The shader key and render pass key were both including the interlock mode, and the pipeline key was so full that adding a new interlock mode would overflow it. Only include the interlock mode once. Add fire events to player (#10758) 15693e8ff1 * Add code to player * Update player.cpp * Update player.cpp * Update player.cpp * Clang format * Update player.cpp fix: when the artboard is checking for ancestors it should return its… (#10883) d5b8889321 fix: when the artboard is checking for ancestors it should return itself as source when it is not the instance Add gamma texture test (#10856) e9b6d8a64e * Add gamma texture test * add texture gm * Create gamma_texture.png * Create gamma_texture.png * Create gamma_texture.png feat(Android): Multitouch and pointer exit support (#10848) 9bcc4a6d11 Adds multitouch and pointer exit support. Also bumps the compile and target SDK to 36, adding `core-ktx` dependency for one method. fix(gl): Fix a PLS regression on Oppo & Vivo (#10861) 33c9ac9f95 A recent refactor introduced an issue on Vivo Y21 and Oppo Reno 3 where writes to pixel local storage got disabled when the color mask was off. Just leave the color mask enabled in EXT_shader_pixel_local_storage mode. chore: add support for assigning dynamically loaded images from listeners (#10857) 8df6209168 feat: Merge fragment shaders for atlas blits & image meshes (#10852) 9794d81296 Previously we were trying to shoehorn atlas blits into draw_raster_order_path.frag, which led to a lot of hard-to-read #ifdefs since they're so different from paths. In reality, atlas blits are more similar to image meshes -- both are just triangle meshes that render directly without having to work out winding numbers -- so handle them in draw_raster_order_mesh.frag instead (which we renamed from draw_raster_order_image_mesh.frag). Additionally, for MSAA, the draws are all so similar that we can just merge them all into a common "draw_msaa_object.frag" shader. add drag event type support (#10807) 2f4ec0a570 * add drag event type support fix(build): Correct tracking of intended target OS in premake (#10853) c7a0379ab3 We've been testing _TARGET_OS in a lot of places in our build, but that is not actually updated in Android/Emscripten builds (it would continue to report, say, Windows). Among other things, this meant that we would build D3D12 shaders for every Android build, even though they were not needed. This adds a `rive_target_os` value to `rive_build_config.lua` which is updated manually for those two projects, so that scripts won't do the Windows/mac things when building for android/emscripten on those platforms. fix(vk, android) Workaround for Vulkan driver pipeline linking issues (#10756) 39741ac0c8 * Workaround for Android 9/10 Adreno 5- and 6-series Vulkan driver bug There's a bug in some of the early Adreno drivers where some of the Rive shaders will fail to compile due to hitting an internal limit. The workaround is to run a shader compilation pre-pass to inline functions before embedding the compiled shaders into the runtime. fix(runtime): Address issues requiring double advance (#10842) 5dd872763b This PR removes the double advanceAndApply(0) when running goldens. There were 3 seperate issues that are resolved here. NestedInput values which were keyed on a timeline did not take effect until the next frame when they were used to drive a Blend state. Fix: NestedArtboards and ArtboardComponentLists should check if needsAdvance() in addition to tryChangeState() Layouts where positionType (absolute/relative) were keyed on a timeline were behaving inconsistently depending on whether positionLeft/positionTop were also keyed on the same frame. Fix: Make sure changing positionType only overrides the positionTop/positionLeft values if those were not keyed on the same frame as positionType Text follow path modifier was rendering incorrectly in a specific case where a Text's width was bound to a VM property which gets its value from a Path's length. Fix: Call updateDataBinds before returning in Artboard::updatePass Fix path extraction (#10823) 76a19909c5 * Update contour_measure.cpp * Update trim_test.cpp * Update trim_test.cpp * Update contour_measure.cpp * clang format * Update contour_measure.cpp Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
91812e7aa4 |
chore(flutter): release 0.14.0-dev.12 (#10841) c2b83f625a
* chore(flutter): release 0.14.0-dev.12 * docs: update changelog feature: add support for pausing nested artboards (#10833) 0a3cb5ac3e * feature: add support for pausing nested artboards feat: Scripted Enum (#10829) 650a980d41 Adds support for ScriptedEnums (ViewModel enums). This PR does not include enums as Inputs, that will follow subsequently refactor(renderer): Generalize fixedFunctionColorOutput (#10813) 396c65832e * refactor(renderer): Generalize fixedFunctionColorOutput Previously, fixedFunctionColorOutput was called "atomicFixedFunctionColorOutput" and only applied to atomic mode. Generalize it so it also applies to msaa, and will be compatible with clockwise rendering in the near future. * made build in unreal feature: add scroll threshold (#10824) 284c801953 fix(renderer): Fix outputs in the shader Makefile (#10822) 53bc4a7cbb feat: Scripted Boolean (#10804) cb93fbb138 Adds support for scripted booleans and boolean inputs. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
49baf479ea |
fix(flutter): prevent negative texture sizes (#10818) c4d91c9290
* fix(flutter): ensure the desired width and height scale is never negative resulting in unbounded texture sizes * chore(flutter): assert texture width and height is greater or equal to 0 feat: Add PLS backings to the RenderContext resource manager (#10793) 2fe0021c07 Before this change, renderer backends were responsible for allocating any textures or buffers required to back pixel local storage data. They all did this by allocating separate backings for each render target, which is wasteful on systems with multiple render targets. This change adds PLS backings to the RenderContext's resource tracking system, and allocates one global PLS backing with the dimensions of the largest recent render targets. For now, only GL is updated to take advantage of this resource, but other backends should follow soon. It also merges the transient PLS backings into a single logical TEXTURE_2D_ARRAY, as opposed to separate TEXTURE_2Ds. Allocating the PLS backings in a 3D layout appears to get better cache performance on Intel Arc GPUs. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
97016ce0c4 |
chore(flutter): release 0.14.0-dev.11 (#10795) 4410ff9038
Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
006cc93767 |
chore(rive_native): publish 0.0.14 (#10794) 9a31b40b81
* chore(flutter): cleanup and logging * chore(flutter): fix analyzer warnings * chore(rive_native): publish 0.0.14 * chore: update hash.txt with new hashes Co-authored-by: Gordon <pggordonhayes@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
f27f3a504d |
fix(flutter): android graphics memory leak (#10786) cc4af4c697
feature: add support for artboards as conditions (#10788) dd59b347fb * feature: add support for artboards as conditions fix: add dirt to data bind after being used on listener (#10789) 4149563244 Get the Linux unit tests building and running in the GitHub workflow (#10761) a0b890f273 Scripting support in CPP (#10685) a34d1ffe15 Get scripting working in CPP runtime. This currently only supports in editor workflow, since some additional backend pieces will be required to get it working in CPP in the runtimes. chore: automatically bind view model trees to dependents when any of … (#10782) ae01b2a8c3 * chore: automatically bind view model trees to dependents when any of its children view models is replaced fix(runtime): Font weight layout measure fix (#10766) 0ae985862d With certain fonts, the expected font features/variations aren't available until a frame after the text is measured, so for example, we measure glyphs using its default weight rather than the weight set in the style, which causes the rendered text not to fit within the measured area, thus incorrectly wrap to the next line. This fix updates variable fonts whenever TextStyle::font() is called IF the variable font hasn't previously been cached. Specifically this issue was reproducible when using Solos to toggle between components which had text wrapped in layouts. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
4b5c4c3530 |
chore(flutter): release 0.14.0-dev.10 (#10768) 10cf7f0a12
fix: interpolator in cpp runtime (#10752) 01c1b43af9 * fix: interpolator in cpp runtime feat(gl): Add scissor to GLState (#10748) a3f6433c00 Start tracking scissor state and use it to limit our clear bounds for pixel local storage backing. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
36f0638fe0 |
fix(rive_native): front called on empty vector (#10706) 35953858c3
* fix(rive_native): front called on empty vector * Update packages/runtime/src/animation/animation_reset.cpp feature: scripted converters (#10711) a40f07ee54 feat(Unreal) Mac RHI Atomics (#10753) 50e69c8fde * Added metal rhi support. fix: handle duplicate data binds on export and on clone (#10751) cd11dd2e60 fix: handle duplicate data binds on export and on clone to avoid inconsistencies fix(unreal): Sometimes would draw black when should be transparent. (#10747) 64f8da473b fixed advanved blend being black when artboard is transparent fix(runtime): Invalidate stroke effects on ForegroundLayoutDrawable (#10733) 2f7bed5eb1 fix: keep unprocessed data binds until they are consumed (#10732) f4b36c2d03 refactor: Start splitting shaders into separate files (#10698) b73733a052 * refactor: Start splitting shaders into separate files The draw shaders are getting unruly with #defines all over the place. Before we can add more, we need to clean these up a little. This PR splits out the fragment portions of raster ordered and msaa shaders into separate files. This also required teaching minify.py to handle .vert and .frag files. * apply_frag_coverage * fixwebgpu * unreal * fixmetalagain * formats * oops * rm draw_image_mesh.glsl feat: Add a mechanism to select the integrated GPU on Windows (#10713) 986c92af9a Add mip map lod bias and bilinear types (#10701) 608fb2781f * Add mip map lod bias and bilinear types * minor updates * Removed MAX enums * Added Image Mesh LOD Bias * Add metal support * Add VK support * WebGPU filter * Remove lodbias from metal * clang format * clang format * turn off bilinear on GL as a test * Remove trilinear and miplodbias from sampler states * Moved miplodbias into shader instructions * removed trilinear from webgpu * clang the shaders * Update image_filter_options.cpp * fix missing $ in metal.glsl * fix lua WRT trilinear * fix missing flushuniforms in metal.glsl for image draw * Remove lodbias from FRAG_DATA_MAIN * fix #define * Update rive_lua_libs.cpp * Update metal.glsl * Removed lodbias from image mesh as a test * Update atomic_draw.glsl * Update draw_image_mesh.glsl * Fix unit tests * Remove whitespace * Update draw_image_mesh.glsl * Update image_sampler.hpp * Update bindings_c2d.cpp * clang format * Update render_context_d3d_impl.cpp * Readd lodbias to draw image mesh * Update glsl.glsl * Update draw_image_mesh.glsl * Update glsl * Update glsl.glsl * Update glsl.glsl * Update glsl.glsl * Update rhi.glsl * more lodbias removal * more lodbias removal * Update glsl.glsl * Update glsl.glsl * Update glsl.glsl * Remove one image call lodbias * Update glsl.glsl * Update glsl.glsl * Update glsl.glsl * Update glsl.glsl * Update glsl.glsl * Update draw_image_mesh.glsl * clang format * Update hlsl.glsl * Update metal.glsl * Update rhi.glsl * clang format * Update Goldens * update golden * more goldens * Test for metal * goldens * metal test fix * Update gpu.cpp * revert changes * Update gpu.cpp * Update linux golden * Metal test * metal test * Update gpu.cpp * Update gpu.cpp * clang format and ios goldens * Update goldesn * linux goldens * move mipmaplodbias in uniforms * Addres Chris' comments * More comments addressed * clang format Restructure Vulkan bootstrapping (#10721) 9c66afdd2a This redoes the Vulkan bootstrapping used by our test apps to use our own internal bootstrapping (rather than VkBootstrap), as well as fixes swapchain issues with a subtly incorrect use of fences. cpp(fix): Update scroll friction at edges (#10719) 36a2a4b4db fix: cache and reset pointer events (#10707) fd286173b1 * fix: cache and reset pointer events fix: Check for nullptr in Axis::offsetChanged (#10708) d79a44ba26 Ue fixes (#10705) e6ba6e329a * Added custom draw function to render targets. Made saving on reimports for rivs not crash. Made generating blueprints 5.6 compatable * view models now unsettle the state machine. * now command q gets the view model type name for properties. UE also uses stores this information * made viewModelProperty work with slashes. * undo slash support * removed test slash vm from data_bind_test_cmdq and updated unit tests to match * updated draw commands * better saving without crash * automatic defaults are now working * don't generate enums every noade. Make them inside the file and cache them. * make enums public to allow referencing in blueprints * removed defaults ready delegate * removed unused class * PR changes * missed Co-authored-by: Gordon <pggordonhayes@gmail.com> Co-authored-by: hernan <hernan@rive.app> |
||
|
|
06fbd5af03 |
fix(flutter): background graphic visibility (#10699) df9e89998b
* fix(flutter): ensure graphic undergoes update after backgrounding * docs(flutter): update CHANGELOG Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
693a7a6366 |
chore(flutter): update layout example (#10694) cf7006283c
Co-authored-by: Lance Snider <lance@lancesnider.com> |
||
|
|
6da3205de4 |
feat(flutter): add multitouch support (#10688) d5e74de08c
fix(vulkan): Correctly support Vulkan 1.0 on Android (#10679) 8e0fadf978 VkBootstrap will incorrecty error with `vulkan_version_1_1_unavailable` on Vulkan 1.0 systems that do not have the vkEnumerateInstanceVersion function, even when we specifically said that it was fine to fall back to 1.0. To work around this, we will detect that error and then try again to create the Vulkan instance, specifically requesting version 1.0. Additionally fix a "function must return" error when building in MSVC on Windows, and update LOG_ERROR to be LOG_ERROR_LINE to make it clear that it writes lines (and update its use of fprintf to match what the android logging does) chore: Rename draw_clockwise_* shaders to draw_clockwise_atomic_* (#10689) 7e676124de The interlock mode these shaders implement is clockwiseAtomic. Let's be more specific with the naming so we can support other clockwise modes. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
bc2f8e8d53 |
chore: publish 0.14.0-dev.9 (#10691) 2f8251e8b9
Feature: add support for multitouch (#9581) 12764e9a3b add support for multitouch feature: add toggle to make scroll constraint not interactive (#10680) 0b069a9936 * feature: add toggle to make scroll constraint not interactive chore: improve iteration of data bound list (#10625) 8385ec62ed improve iteration of data bound list Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
48e6a77fc1 |
refactor(flutter)!: scaling with dpr on Rive Renderer (#10645) 1f5e950a28
* refactor!(flutter): scaling with dpr on Rive Renderer * refactor(flutter)!: render object texture creation and paint * chore(editor): fix dragon login mouse follow * docs(flutter): update CHANGELOG * feat(flutter): apply transform scaling on RivePanel * chore(flutter): remove repaint boundary to fix goldens data bind artboards rcp file (#10214) c542b9b7ac * make file ref counted * migrate File to refcnt * add bindable artboard class to keep file reference * feat(unity): support rcp file and BindableArtboard class (#10228) * refactor(apple): use updated file bindable artboard apis (#10229) * update command queue to support bindable artboards * use bindable artboards on command queue * self manage view model instances in js runtime * change remaining viewModelInstanceRuntimes to rcp * refactor(apple): update view model instances to use rcp (#10298) * refactor(unity): support rcp ViewModelInstanceRuntime (#10309) * rebase fix * deprecate getArtboard in favor of getBindableArtboard * fix merge * remove unused lambda capture * fix rive binding * feat(Android): RCP File, VMI, and add bindable artboards (#10456) * refactor: C++ refactors - Import from long (incorrect) -> jlong - Header clang-tidy fix - Use reinterpret_cast instead of C-style cast - Break out some variables instead of long one liners - Use auto - Remove unused env and thisObj # Conflicts: # packages/runtime_android/kotlin/src/main/cpp/src/helpers/general.cpp * docs: Improve documentation on the File class * feat: Support bindable artboard type and RCP VMIs # Conflicts: # packages/runtime_android/kotlin/src/androidTest/java/app/rive/runtime/kotlin/core/RiveDataBindingTest.kt * feat: Support RCP files * refactor: Change from +1/-1 ref to just release * fix: Moved to the more appropriate null pointer for GetStringUTFChars * replace unref with release test: Add an android_gms_vulkan run to browserstack (#10669) f7613dbf35 Vulkan is ready to stabilize. Let's get it on our nightly runs. Also disable "atomic" mode on Android unless requested explicitly. Barriers tend to be expensive on Android and MSAA is usually cheap; let's stabilize MSAA first. fix(vk): Properly preserve render targets when using MSAA (#10630) 5df1a42463 * fix(vk): Properly preserve render targets when using MSAA Unfortunately, Vulkan does not provide a mechanism to initialize our (transient) MSAA texture with the contents of the (non-MSAA) renderTarget texture at the beginning of a render pass. To work around this limitation while supporting LoadAction::preserveRenderTarget, we literally draw the previous render target contents into the framebuffer at the beginning of the pass. * Fix one more barrier fix(vk, d3d12): Properly apply draw batch barriers on pipeline failures (#10667) 5efb71a88a If a pipeline failed to acquire for a draw batch that required barriers of any kind, we were skipping the barriers as well as attempting to draw. Now the code will apply the barriers and only skip drawing. chore: add pointer exit support (#10595) d999d6a22c * add pointer exit support scripting: color and string view model property (#10663) 3acbdfcba7 Description Adds support for passing a string and color vm property to the scripting engine. Adds support for defining color and string as inputs. feat: Integrate glfw into the premake build (#10656) 653c8c6040 Build GLFW with premake instead of requiring the user to call out into a custom script thatbuses their cmake. feat(scripting): split code panels (#10655) 9d8b49152e * feature(scripting): command palette * feature: adding split pane saving * chore: update to latest luau * fix: pixel correct scrollbars * feature: reload scroll position of script pane * feature: module titles on panes * chore: merging command palettes * fix: cleanup * chore: refactor searchbar tests * fix: failing test * chore: cleanup * chore: cleanup * chore: cleanup unused commented code * feature: hover for command palette items * chore: cleanup mocks Fix MSVC toolchain path_fiddle builds (#10661) 0f0d7c5f81 Our MSVC builds are building with C++latest (instead of C++17), and what that means is that filesystem::path::u8string returns a std::u8string instead of std::string (see https://en.cppreference.com/w/cpp/filesystem/path/string.html), causing a compilation failure for the shader hotload rebuild command. This change adds back in the reinterpret_cast to a char pointer (but still stores the temp string correctly). Add loop option to GM (#10649) 0121fd0174 * add loopCount * add static * Update gmmain.cpp * Change while to for Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
b6becf197e |
feat(flutter): add AdvanceRequest to force advance/draw updates (#10558) 5466e81cc8
feat: add AdvanceRequest Fix dangling pointer in pathfiddle (#10654) 439848a8d9 Fix dangling pointer feat: Web/android testing tweaks and features (#10621) 8cd4d40440 And add a "webserverandroid" target to deploy_tests.py that sets up reverse port forwarding over ADB so we don't have to rely on the network. fix(vulkan): get MSAA working on systems without ClipDistance support (#10624) d1c02a29aa Referencing ClipDistance (via gl_ClipDistance) in a SPIR-V shader, even if it is in a specialization branch that is not taken, is a validation error on systems that don't support ClipDistance. To get around this, there are now noclipdistance variations of the shaders that use it, and they (along with the MSAA shaders that never use ClipDistance) all define `DISABLE_CLIP_RECT_FOR_VULKAN_MSAA`, which ensures that it never tries to compile it in except where it matters. fix: path_fiddle now shuts down without crashing on Vulkan (#10631) 4d3770866f The order of destroying the vulkan device and destroying all of the assets in the riv data was backwards - a loaded riv scene needs to be fully destructed before the Vulkan fiddle context can be, otherwise you'll get validation failures on fiddle context destruction (Because there are still buffers held by things in the artboards) or, if validation is off, crashes when trying to destroy the buffers using a now-defunct vulkan context. Use markHostTransformDirty instead of markHostingLayoutDirty when appropriate (#10632) af3f673d77 Address a couple of issues: When an artboard has a host, at the time the artboard has a layout marked dirty, we mark the hosting layout dirty (if it is a LayoutNodeProvider such as a NestedArtboardLayout or ArtboardComponentList). In cases where the host is not a LayoutNodeProvider (ie, NestedArtboardLeaf) we should also mark the host's transform dirty so it can redraw itself using the Artboard's updated size. This surfaced recently when we started using the artboard's hugged size with NestedArtboardLeaf mode. In Artboard xChanged/yChanged we should mark the host's transform dirty rather than marking layout dirty (because we don't want to recompute layout at that time). feature: make override properties bindable (#10627) 540fab92b6 fix(webgpu): Fix Y orientation on GL zero and nonzero FBOs (#10623) 454b0d2db1 Add `--core` command-line option to path_fiddle (#10619) ec8b00c206 This also improves its parameter validation. fix: link rml and then rive for rml cli (#10620) 48b39fe42e (fix): Artboard list item hit order (#10618) f95ef8fdc5 Since Artboard list items are rendered with z index increasing as the item index increases (ie, later children will sit above earlier children), when doing hit testing, we need to traverse the items in reverse order in order to capture the property z ordering. This is only important when items have overlap. Add asynchronous shader and pipeline creation to Vulkan renderer (#10591) 3b6e2b6bc4 This gets the Vulkan runtime running with the async pipeline manager. This required moving a bunch of the internal render context impl classes up to the header, which made the header a bit unwieldy so they got moved out to their own files. Additionally, this has some changes to the async pipeline manager: - Vulkan's pipelines have additional information that the other renders' do not, so PipelineProps is now a property of the pipeline type so that it can have its own pipeline type - Similarly, Vulkan uses a 64-bit index for its pipeline key (so that it can use 32 bits of it as the standard shader key) so that had to be generalized as well - Moved the vertex shader manager functionality into the pipeline manager because every pipeline should share vertex shaders - Generalized it so that vulkan can also use it to share other things. This includes fragment shaders which are now managed as shared like vertex shaders were, because on Vulkan multiple pipelines can share the same fragment shader. - Changed the std::maps to std::unordered_map because the lookup speed should be better (it's a hash map vs. a binary tree) chore: Add start/end/offset properties to List follow path (#10606) b2aed6839d Adds distinct start, end and offset properties for List's follow path as requested by Creative team, to behave similarly to Trim paths. This also fixes an issue where modifying strength wouldn't modify its rotation accordingly. fix(UAT): listener with triggers work correctly (#10614) c42858eb74 feature(scripting): artboard:advance should return boolean (#10582) 665b84f01d Add silvers for follow path (previously rive_flutter goldens) (#10611) 67f20bfc31 Noticed that the old rive_flutter goldens were removed. With some updates to follow path coming with List follow path, I wanted to make sure those old goldens were captured as silvers prior to the new changes landing. We may want to go back and covert the other goldens in the future. Exclude items from scroll snap if hidden (#10602) 0704ed0f7e When items contained in a scroll constraint's layout are scrolled with snapping enabled, we exclude the hidden items from the snap list so they will not be settled on when the user swipes. chore: compare previous list to new list (#10604) 9072781123 * compare previous list to new list feature: prioritize viewmodel direction from flag (#10514) 4d8e0a9719 * prioritize viewmodel direction from flag feat(webgpu): Wagyu 39 (#10603) 7ac418480c feat(wgpu): Add a wgpu backend to the test suite (#10586) 48bb6538bd fix: Vulkan validation on desktop (#10600) 7220599bb1 Don't build the Vulkan instance until after we've enabled validation. Add profiler Tag macro (#10593) 859d6283c9 Update profiler_macros.h Some vulkan testing fixes (#10597) 21af6591da - deploy_tests on windows should use `where` which is built in (vs `which` which is not) - vk bootstrap now displays shaderClipDistance, which was missing from the printing of available features - vkcore and vksrgb backends now do the correct thing - added vkmsaacore backend (which currently fails due to a validation error) fix: target to source converter (#10584) 9366e9acea * feature: add support for color interpolation in converter * fix: target to source with different types with converter applied Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
1b323fec22 |
chore(flutter): publish 0.14.0-dev.8 (#10590) b5106d68af
Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
bc1b5794f7 |
chore(flutter): release 0.14.0-dev.7 (#10578) 32dc890302
* chore(flutter): release 0.14.0-dev.7 * chore: hotfix rive_native hash fix(webgpu): Revert the pls2 workaround for PowerVR 1.10 (#10585) fa6ac73d94 This workaround came with an unacceptable performance cost. Let's revert while we work out a better solution. fix(gl): Apply ANGLE workarounds in WebGL as well (#10581) 1931264636 feature: add support for color interpolation in converter (#10545) b0f6516eec * feature: add support for color interpolation in converter Fix D3D warning (#10580) a3e22e1322 * Always set sampler even if no texture * Add scope block to sampler setting * remove empty line Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
b2e6c044de |
chore(rive_native): release v0.0.10 (#10576) d542dbee56
* chore(rive_native): release v0.0.10 * chore(rive_native): bump release * docs: grammar CHANGELOG * chore: update hash.txt with new hashes feature: scripting prevent infinite exec (#10570) 3afebf3d4f * feature: working on fullscreen code * feature(scripting): prevent infinite execution * fix: missing method for ScriptingTest context fix(gl): Only do memory barrier workarounds on Mali (#10575) 8494dda792 fix(gl): Only do memory barrier workarouns on Mali We introduced a spurious memory barrier per flush in order to work around corruption on Mali-G78. But ironically, this barrier introduced corruption on Adreno 610. Add some logic to only do the barrier on Mali. Co-authored-by: Gordon <pggordonhayes@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
72c64a849f |
feat(flutter): expose component local bounds (#10571) 8165c5c216
Fix endcap flickering bug (#10547) 1421e05aaa * Detect close to zero or zero length segments and move to the next * Change method to fix paths with duplicate points * Added const back * clang format fix(gl): Re-enable pls on ARM (#10569) 8f9cdd5cec PLS is quite stable at this point on ARM. Let's aim for a more gradual transition to our end goal of an all-MSAA GL. 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. 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.) 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 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. 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. 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 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 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 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. More profiling markers to runtime (#10549) e58f44d5ec 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 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 fix(gl): Reinstate the pls2 workaround for PowerVR drivers < 1.13 (#10524) dd4dd9f326 feature: add support for different random modes (#10538) dab3b5994d * feature: add support for different random modes 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. 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 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 WebGPU: Added way to pass WGPUCommandEncoder to RenderContextWebGPUImpl::flush() function (#10530) b5a50b8118 * WebGPU: Added way to pass WGPUCommandEncoder to RenderContextWebGPUImpl::flush() function * chrisfixes fix: Update image texture usages for wagyu mipmap generation (#10529) 65829bc47a * Add src usage as generateMipMaps blits * ifdef wagyu 38 (#10528) f03e236489 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. 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. restore skipping data bind values (#10516) 049120501f 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. 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. fix: Tag RIVE in NSLogs (#10510) ce87aac5e0 fix: revert skipping collapsed data bound properties (#10507) fba405c288 * fix: revert skipping collapsed data bound properties 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 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 Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
ce00421de5 |
feat(flutter): add shared texture through rive panel (#10451) 7359e8b824
* feat(flutter): add shared texture through rive panel * feat: updates to rive panel * chore: revert pub path change * docs: update api level docs * feat: expose drawOrder 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. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
38f40c8309 |
feat(flutter): resart ticker on pointer event (#10479) f7f795e530
* feat(flutter): resart ticker on pointer event * docs(flutter): update CHANGELOG * Update packages/rive_flutter/lib/src/painters/widget_controller.dart skip collapsed objects from running data bound values (#10476) 7868b2bb71 chore: do not run data bound properties from collapsed objects 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. chore: add collapse and solo test (#10471) c903296458 * chore: add collapse and solo test 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. 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 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 feature: add auto generated state machine on artboard initialization (#10420) 6c147cb33f * feature: add auto generated state machine on artboard initialization 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. feature: adding scripted list property (#10457) 5c83e3cd4a * feature: adding scripted list property * fix: missed file 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. feat: Update goldens and player to deploy in the browser (#10453) 827077b899 Set up http and websocket servers in deploy_tests.py that allow us to communicate with the remote wasm app similarly to how we communicate with android & ios devices. Add a "-w" target to check_golds.sh that kicks tests off in the default browser. Update our renderer premake vulkan version to 1.4.321 (plus another build fix) (#10452) c26e82adc9 * Update our renderer premake vulkan version to 1.4.321 (and also add a few missing RIVE_UNREACHABLEs) Was getting build errors trying to build Vulkan relating to the vk memory allocator header noting a mismatch between the vulkan sdk being reported and the #defines in the headers, and Chris mentioned that we could just upgrade it to be 1.4 now. Additionally, I got a couple errors in two functions that didn't return in the "default" case, which needed RIVE_UNREACHABLE() at the end like the other similar functions had. * Rebase the pixel6 GL and Vulkan goldens Scripted artboard inputs (#10449) 4a7bec6316 * feature: working on artboard inputs * feature: artboard inputs * feature: artboard input * feature: artboards controlled by scripts * chore: bump to latest luau * feature: show only valid artboards * chore: adding a test for scripted artboards * fix: dart test * chore: fix tests * chore: adding missed coin.riv * chore: fix copy ellision warnings add support for property multiplier on vertices (#10436) 500cb42240 add support for property multiplier Improve handling of Yoga exceptions in editor (#10438) b39218b476 Prevent Yoga related crashes in editor and expose whether a Yoga node is in an error state so we can provide a warning to the user. Nnnnn skip properties from recording to journal (#10437) 036b51345e * fix: add non recording propeties to json defintion feat: add support to format numbers with commas (#10445) cf47b03e54 * feat: add support to format numbers with commas Don't perform shape AABB hit tests when walking up parent tree (#10444) d8beb0c4ea This PR skips parent shape AABB tests when hittesting components. There was an issue following recent updates to walk up parent tree when performing hit tests which would prevent objects nested inside shapes from being hit due to trying to AABB test the parent shapes in cases where the shape had no path or the path did not overlap with the listening component. chore: unwrap rive::File for rive_native (#10442) 1fa625f5c9 * chore: unwrap rive::File for rive_native * chore: fix wasm binding feature: making rive::File rcp (#10439) 213f07ec13 * feature: making rive::File rcp * fixes * fix: recorder Add background draw shader loading to GL, D3D11, and D3D12 (#10388) c681049169 This adds AsyncPipelineStateManager to the render code, which handles the background processing of draw shader creation (not, at the moment, other shader types...there's no reason those couldn't be added as well, but this seemed the biggest target). If a given shader has not been compiled yet, we will fall back on an ubershader version with all features enabled the ubershader version will be compiled synchronously if it does not exist yet For the D3Ds, this is done with a background thread that compiles the shaders. GL, however, does not seem to play nice with background threading shader creation. But what it does have is the KHR_parallel_shader_compile extension, which basically lets the driver create threads in the background and thread the shader compilation. The shader manager, in this case, needs to poll the completion state every time the shader is requested and potentially push the compilation along to the next stage (i.e. once linkProgram has completed, then we can do the rest of our setup) If KHR_parallel_shader_compile is not supported (for instance, with WebGL on Firefox) then shader compilation will just happen synchronously (I could not find a clear way to thread the GL shader creation, but I would happily add it as a fallback if there is a way) This change also updates our GLAD loader to version 2.0.8 (from 0.1.36!), which had some API changes. Add shaders to SLN for renderer (#10435) 5188bbb7b1 * Add shaders to SLN for renderer * Clang format Add headers to premake lua files (#10434) b7038e078d * Add headers to premake lua files feat(webgpu): Add support for the webgpu2 API (#10423) f27cb54942 Also update wagyu extensions. Artboard List items follow path (#10417) 68a608cfad Adds support for list items to be rendered on a path when a Follow Path constraint is applied to the Artboard list. Currently, the items will be evenly spaced on the path between 0 and Distance (which is set on the Follow path constraint). For example, with Distance set to 100%, items will be spaced between the start and end of the path. With Distance set to 50%, items will be spaced between the start and half the distance (length) of the path. feat: Bump clang-format to v19 (#10429) 270034cbcd feature: add support for list based paths (#10409) fb374dcad4 * feature: add support for list based paths fix: skip pad conversion if text is empty (#10418) b00368b1c4 feat(unreal android): Get build settings and goldens to build for unreal (#10413) 625123dbae * updated build script to look for android sdk unreal expects * proper platform settings for unreal android * made check golds work with unreal android Runtime profiler base (#10391) 4171e09f80 * Add profiling macros and optick profiler * Update premake5_optick.lua * Added more profiling markers * Remove microprofiler option for now as not implemented * Added more markers ro rendering code * Update Optick build premake only for windows builds * More build file changes for optick with windows * Change how optick is built on windows * Update premake5_v2.lua * Update build files to use with_optick option * Added ScopeName macro to appease ASAN * Push to rekick jobs * Delete ProfilerMacros.h * Create profiler_macros.h * Update path_fiddle.cpp * Update fiddle_context.hpp * Update for rename of header * More header changes * Update fiddle_context.hpp * Update profiler_macros.h * Update for clang format * Update fiddle_context.hpp * Update profiler_macros.h * Update profiler_macros.h * Changed premake values on Chris' comments * Removed multiple define fro RIVE_OPTICK and now in rive_build_config.lua * Added Optick URL and Version to rive_build_config feature: hydrogen search improvements (#10412) f6d5d55b26 * feature: command+g/shift+command+g to find next/prev * feature: add command+d to select word occurences * fix: warning * chore: cleanup feature: add support for trigger properties from scripted viewmodels (#10399) ec342c1e4d * feature: add support for trigger properties from scripted viewmodels * fix: memory usage test * feature: adding trigger as an input * chore: fix warnings * feature: allow calling trigger fire() from scripts feat(gl): Start using the EXT_shader_pixel_local_storage2 API (#10410) b16a5e5d70 This avoids a fullscreen draw to initialize PLS (when the v2 extension available), and also works around an issue of corruption on PowerVR Rogue GE8300. Respect hug with all nested artboard and artboard list types (#10403) 7f3ed82d57 A customer requested feature, previously when using node or leaf type nested artboards, we would always render using the fixed artboard size (even if the artboard was set to hug). This modifies the behavior so that if the Artboard is set to hug, we respect that. This also applies to the newly implemented artboard lists when not in layout mode. fix(webgpu): Make sure PLS resolve triangles don't get culled (#10397) ef5760d69c feature: ability to unload/unregister a module (#10395) 9e2f6211d7 * feature: ability to unload/unregister a module * feature: complete implementation into rive_native Add support for non-layout constrained Artboard Lists (#10384) 520e01a0f2 This PR adds support for Artboard List items that can be positioned directly using DataBinding by binding to the x & y property values of the Artboard itself. Currently, the behavior is that if the artboard list is a child of a layout, it will apply layout rules, but if its a child of a group or solo, it will allow control of its position through binding. feat: add to number converter (#10390) 4d835a3637 add to number converter Feature: print statements + console (#10375) 81ddf4d6ee fix: use word joiner instead of line separator for breaks (#10381) cd13ab364d * fix: use word joiner instead of line separator for breaks * fix: whitespace detection bug make value bindable for rounded numbers (#10379) 891f1f5d81 make value bindable fix: trigger adds dirt to listeners only when it is not reset (#10377) 760472b069 fix: Always use WGPUWagyuShaderLanguage_GLSLRAW on Wagyu/GLES (#10372) 0cc0b7e63c Rive shaders tend to be long and prone to vendor bugs in the compiler. Always send down the raw Rive GLSL sources when running on Wagyu/GLES, which have various workarounds for known issues and are tested regularly. feature: add support for vertical alignment on text with ellipsis (#10365) 33ec7249cd add support for vertical alignment on text with ellipsis Co-authored-by: Gordon <pggordonhayes@gmail.com> Co-authored-by: hernan <hernan@rive.app> |
||
|
|
d8d2bf2fc9 |
chore(rive_flutter): release 0.14.0-dev.6 (#10364) afc58acd82
* chore(rive_native): remove unneeded files for pub publish * chore(rive_flutter): release 014.0-dev.6 Nnnnn add datatypes to viewmodel instances (#10357) 3b0e14f50f * feature: add data types to instance runtime values * fix: validate type when returned from cache Fix race condition in Metal background shader compiler (#10355) 92de3f0a1a * Fix race condition in Metal background shader compiler Setting an atomic variable outside of a std::condition_variable's corresponding mutex and then notifying the condition_variable has a subtle race condition, and the ordering of operations looks like this: Thread A: acquire mutex Thread A: check m_shouldQuit // it's false Thread B: m_shouldQuit = true Thread B: m_workAddedCondition.notify_all() // nothing is currently waiting on it so this does nothing Thread A: m_workAddedCondition.wait() // now it's waiting, having just missed the above notification Now thread A will wait forever because no more notifies to the condition_variable are coming and, in the case of this code, the call to m_compilerThread.join() will also wait forever (since the thread will never quit), so shutting down the renderer will never finish. Instead, m_shouldQuit should only be set to true while in the mutex (because the check of its value and the subsequent .wait call also happen within the mutex, so this prevents them interleaving). This change fixes this. * Minor formatting adjustment to make the github workflow tests re-run feat(RiveRenderer): Gamma Space Conversion (#10361) a61202f1c4 * Added conversion from gamma to linear space for situations where we can't control what our render target format is * comment update Guard against percent margins on top level artboards (#10356) aef45767df We need to prevent percent margin from being set on Artboards because percent margin relies on the layout parent's dimensions. Since an Artboard has no parent, it results in an error within Yoga and a crash. Feature: scripted data inputs (#10339) 8693175cee * chore: reworking inputs and properties * chore: syncing rive_native fixes * feature: adding script input parameters * feature: adding listeners * chore: missed files * feature: add/remove listeners * chore: updating to latest luau * chore: fix tests & colliding names * fix: missing import * chore: fix warnings * feature: guard against change during iteration * chore: fix boolean warning * fix: handle error reports from builtin types make more constraint values bindable (#10351) 9674376769 feature: add support for custom enum properties (#10345) 21b8ce84f4 * feature: add enum custom property support fix: Work around a bug in the Mali T720 compiler (#10340) 59aa55b5d0 fix: treat artboard as layout for hit testing inheritance (#10341) 583274d7b9 * fix: treat artboard as layout for hit testing inheritance feature: add support for firing triggers on state transitions (#10329) cc34f96631 * feature: add support for fiiring triggers on state transitions add support to data bind solos by index and name (#10337) 64f828c9a2 Support for Triggers in Custom property groups (#10322) 9af6af0361 Adds support for Triggers in Custom Property Groups. This will allow triggers to be keyframed, which can also be bound to ViewModel triggers. Currently an event has to be fired on the timeline in order to fire a ViewModel trigger via a listener. Update unit test build/run scripts to use build_rive.sh (#10320) 4bd8c63b93 * Update unit test scripts to use build_rive.sh The unit test test.bat and test.sh were doing their own ad-hoc building instead of using build_rive. This updates test.sh to call build_rive.sh for the build. This script could probably be pared down further but I did not want to break any of the existing command line arguments that people are probably using. Additionally, test.bat did not have up-to-date build flags in it, so now it does a similar Windows development environment setup to build_rive.bat and then calls directly into test.sh, so it won't get out of sync with the main script anymore. * Additional test.sh changes - There was a block of code that I could have removed but didn't (made redundant by the call to build_rive) - Add build_rive's parent directory to the path before calling it (will fix the test failing on Linux) - Removed the `sh` before build_rive.sh as it does not need to be shell invoked. * The pr_unit_tests.yaml execution for Mac needed to do a clean furing the asan build because it had already done a build without asan before, the change to build_rive means that we now catch the premake parameter change (adding asan), and so clean needs to happen for that build to be correct. * For now, move the build_rive.sh call into the two branches that previously had the build calls (linux, for instance, does not build, which seems incorrect given the github workflow is trying to run it. * Adding a note to test.sh to describe why the build_rive script is called in the way it is (vs. the obvious way) * Additional unit test script fixes (unifying windows build further, and some warnings) - Add the ability to specify a toolset on the command line (i.e. "--toolset=msc") that will get passed along to build_rive (thus making the 'clang' toolset in the windows build only a default) - Update the unit_test_windows and unit_test_windows_msvc entries in the github unit test workflows to call test.bat now (which required combining the build/run steps, but this matches all the other configurations) - Also added some additional parameter validation, mainly warnings on ignored/unsupported parameters Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
df684394c6 |
fix(rive_native): incorrect key forwarding to child widgets (#10314) 4c4a564f0f
* fix(rive_native): incorrect key forwarding to child widgets * docs: update CHANGELOG fix nested events conflicting with parent events (#10326) 51f1f66e31 add support for view model trigger based listeners (#10323) e7ef71b568 add advanced phase to render loop (#10318) af18705be2 * add reset phase to render loop support setting bindable artboard from data bind (#10317) 559f237078 Prevent pointer events when interacting with scroll view (#10251) 40592c7963 Currently, when items are inside a scroll view, when the scroll view is dragged and released, the item's click event will still trigger its listener if the same item is hovered. This adds a way to disable pointer events. In this implementation, when a scroll drag begins, we set the GestureClickPhase to disabled which prevents clicks from being captured. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
f912fb8ce2 |
fix(rive_native): add missing pointer exit events (#10303) 5d09b68e12
fix: WebGPU housekeeping (#10313) 210c1fd176 Updating premake introduced a couple issues. Fix them and add a windows webgpu builder to CI. Also move wagyu extension wrangling down into the core webgpu renderer so individual clients don't have to think about it. chore: Update rive_native to use build_rive.sh (#10290) 5d511c6c4c We just had to update premake5, so now is a good time to finish consolidating around build_rive.sh. feature: ViewModel scripted definitions (#10301) 5678d967c7 * feature: system generated code * working on input viewmodels/enums * missed files * fix: autocomplete with old solver * fix: report types in autocomplete * add property path solver * chore: adding nested artboard databind test * feature: use property solver for scripted inputs * chore: cleanup * chore: fix analysis warnings * chore: missed file * chore: fixing warnings * fix test chore: Update audio_preview_generator to use build_rive.sh (#10285) fba1987016 chore: Update audio_preview_generator to use build_rive.sh Let's keep our premake setup & building all in one place. Also update peon_audio_worker Dockerfile. Co-authored-by: Gordon <pggordonhayes@gmail.com> |
||
|
|
25df3e0b0b |
chore(rive_flutter): release 0.14.0-dev.5 (#10292) bc0ea0478d
* chore(rive_flutter): release 0.14.0-dev.5 * chore: update CHANGELOG build: Fix premake5 build on macOS Sequoia (#10263) b4298b861b It looks like the premake5 "v5.0.0-beta3" tag isn't compatible with Sequoia 15.4.1. Bump our tag to v5.0.0-beta7 and update the deprecated features we had been using. Also fix the script to rebuild if the premake5 binary doesn't exist. Before it only checked if the parent "premake-core" directory existed, so if a build had failed previously, build_rive.sh would fail forever without ever attempting to build premake5 again. fix(apple): copy symbolic traits when using core text fallback (#10260) f9b4941afd feature: script inputs (#10267) 3d15aeda55 * feature: detection of implemented type arguments * fixing highlight of type union * feature: custom properties * feature: working on scripted properties refactor * feature: working on inputs and outputs * chore: working on crash * fix: fixes crash issue with luau * feat: working on inputs * chore: allow using old solver * chore: missed json file * chore: missing files & cleanup * chore: missed sriv file * chore: fixing unused var * chore: fix read not supported with old solver, and core collision * fix: use different script update flag build: Clone dependencies with git instead of downloading a zip (#10271) a2e64c0505 It was a cool idea to download the repos as a zip, so that premake didn't have to rely on any external dependencies, but github was frequently giving us a successful download of an empty zip file. This was causing daily flakes on CI. Instead, just invoke 'git clone --depth=1 --branch ...' from premake. This should hopefully be more reliable, and it seems safe enough to depend on git being installed in the environment we're on. Also: * Update the dependencies that were using raw branch SHAs to point to official tags. 'git clone --branch' requires an official tag, and this will be more stable anyway. * Rename the dependency directories to "owner_project_tag" rather than a hash. Sometimes we need to poke around in those directories to debug issues, and it's easier to figure out what's what with descriptive names. Fix silver test (#10272) 45e1b18c68 An improperly setup unit test using silvers was causing ASAN to throw an error. feat: add support for computed root transform values (#10257) 375455bd73 * feat: add support for computed root transform values library: support databinding images, list, list index, and artboards (#10252) fc868b380b Description We can already publish view model images, lists, list indices, artboards. Now we just need to handle them on the host file client side, which is what this PR does. Details The main part of this PR is that it changes the runtime_exporter. I've bit the bullet and sorted the file assets instead of using recursion. I've always wanted to export them iteratively instead of recursively but now I'm forced to add a 'preprocess' stage to exporting, so there's finally a good reason to do it. About preprocessing. Imagine databinding Artboards. Any library file needs to be able to bind to any host/library Artboard. This means, the library file needs to export a vm instance whose value can be any library's Artboard, without necessarily needing to have that library in an asset. In preprocessing, we first calculate all the Artboards' indices that should exist in runtime (without writing them). Then at write time, the vm instance value can be accurately mapped to any Artboard's ID. Same idea goes for fileAsset indices in preprocessing. Tho honestly, we probably just need to preprocess the host's file assets, since the UI only allows you to bind to the host's assets. Same idea for lists in preprocessing. At write time, an instance's list property value need to refer to any view model+instance from any file, regardless on if it depends on that file as a LibraryAsset. Demo: https://2dimensions.slack.com/archives/C07M7DQL4F2/p1753414266031969 add support to clear data bound artboard by setting the value to null (#10254) a5a679a966 Co-authored-by: Gordon <pggordonhayes@gmail.com> |