d9d4b8b702
Original commit:
|
||
---|---|---|
.. | ||
.github | ||
build-utilities | ||
docs | ||
examples | ||
lib | ||
script | ||
.gitignore | ||
.rustfmt.toml | ||
Cargo.toml | ||
LICENSE | ||
README.md |
BaseGL
BaseGL is a blazing fast 2D vector rendering engine with a rich set of primitives and a GUI component library. It is able to display millions of shapes 60 frames per second in a web browser on a modern laptop hardware.
This repository is a work in progress of BaseGL 2.0. Please refer to BaseGL 1.0 repository for more information: https://github.com/luna/basegl-old.
Development
The Rust toolchain
This project uses several features available only in the nightly Rust toolchain. To setup the toolchain, please use the the Rust toolchain installer:
rustup toolchain install nightly-2019-11-04 # Install the nightly channel.
rustup default nightly # Set it as the default one.
rustup component add clippy # Install the linter.
Building the sources
Please use the script/build.sh
script to build the project or the
script/watch.sh
script to run a file watch utility which will build the
project on every source change. The scripts are thin wrappers for
wasm-pack and accept the same command
line arguments.
In particular, you can provide them with --release
, --dev
, or --profile
flags to switch the compilation profile. If not option is provided, the scripts
default to the --release
profile.
Running examples
Please note that in order to run the examples you have to first build the
project. For best experience, it is recommended to use the scripts/watch.sh
in a second shell. In order to build the demo scenes, follow the steps below:
cd examples
npm install
npm run start
You can now navigate to http://localhost:8080 and play with the demo scenes!
Please note that npm run start
runs the Webpack Dev-Server in the production
mode. You can use the npm run start-dev
in order to enable the development
mode, however, as all sources are provided to Webpack in form of WASM binaries,
we haven't observed any differences between them in this project.
While Webpack provides handy utilities for development, like live-reloading on
sources change, it also adds some runtime overhead. In order to run the compiled
examples using a lightweight http-server (without live-reloading functionality),
please use the npm run prod-server
command.
Please remember to disable the cache in your browser during development!
Minimizing the WASM binary size.
After building the project you can use the scripts/minimize_wasm.sh
to optimize
the binary and compress it by using gzip
. After the script is complete, the
final size is printed to stdout. Please note that in order to run the script, the
Binaryen toolkit has to be installed
on your system.
Running tests
The sources use both unit tests and web test, which are run in a browser and
produce visual results. To run them, use the scripts/test.sh
script and follow
the output in the terminal.
Working with the source code
Formatting
Please note that this codebase does not use rustfmt
. Please read the following
documents to learn more about reasons behind this decision and the recommended
code style guide. Be sure to carefully read the documents before contributing to
this repository:
Linting
Please be sure to fix all errors reported by scripts/lint.sh
before creating a
pull request to this repository.