Skip to content

shards-lang/rive-renderer

 
 

Repository files navigation

Rive Renderer

The Rive Renderer is a vector and raster graphics renderer custom-built for Rive content, for animation, and for runtime.

This repository contains the renderer code and an example for how to interface with it directly. The code within this repository does not contain a Rive runtime. It contains the best in class concrete implementation of Rive's rendering abstraction layer, which we call the Rive Renderer.

Clone this repo

Make sure to clone this repo with submodules!

git clone --recurse-submodules git@github.com:rive-app/rive-renderer.git

Build GLFW

cd submodules/rive-cpp/skia/dependencies
./make_glfw.sh

Install Premake5

Grab the binary from the premake5 GitHub releases: https://github.com/premake/premake-core/releases/ or you can build your own for Apple Silicon:

git clone --depth 1 --branch master https://github.com/premake/premake-core.git
cd premake-core
make -f Bootstrap.mak osx PLATFORM=ARM
# binaries will be in bin/release/* put them in your path

Install Python PLY

python3 -m pip install ply

Call Premake & Build

PREMAKE_PATH="$(pwd)/submodules/rive-cpp/build" premake5 gmake2 --with_rive_text --config=release --out=out/release
cd out/release
make -j20
# run path_fiddle
./path_fiddle [/path/to/my.riv]

Build and serve for WebGL2

PREMAKE_PATH="$(pwd)/submodules/rive-cpp/build" premake5 gmake2 --with_rive_text --config=release --arch=wasm --out=out/wasm_release
cd out/wasm_release
# Ensure your emsdk_env is configured.
make -j20 path_fiddle
# serve to http://localhost:5555/
python3 -m http.server 5555

Helpful keys

  • h/H: add/subtract copies to the left and right (only when a .riv is provided)
  • j/J: add/subtract copies below (only when a .riv is provided)
  • k/K: add/subtract copies above (only when a .riv is provided)
  • p: pause runtime (for benchmarking the renderer in isolation)
  • a: toggle "atomic" mode

About

Downstream repo for Rive renderer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 67.2%
  • C 11.9%
  • GLSL 10.8%
  • Objective-C++ 4.5%
  • Python 2.1%
  • Lua 1.1%
  • Other 2.4%