• Stars
    star
    643
  • Rank 70,000 (Top 2 %)
  • Language
    C++
  • License
    MIT License
  • Created over 1 year ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Low-level C++ Rive runtime and renderer

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 [email protected]: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