An extensible 2D renderer for the web.
JavaScript GLSL Other
Failed to load latest commit information.
.github add documents and templates Aug 6, 2016
benchmarks rewrite for ECS Aug 17, 2016
docs outline for Getting Started guide; #20 Sep 9, 2016
.travis.yml add documents and templates Aug 6, 2016

Fae - 2D WebGL Renderer

Warning: In heavy development, API subject to break before v1.0.0 is released.

Build Status Dependency Status
Sauce Test Status

Get Involved:

Website: Coming Soon
Docs/Guides: Documentation
Contribute: How to Contribute
Support: How to Support


Fae is meant to be a highly modular ecosystem of modules. The primary target use-case for Fae is to be easily intregrable into larger application frameworks. However, the plugin library for Fae enables it to be useful to end users as well when used as a standalone framework.

Fae contains some code that is originally based on pixi.js. However, Fae takes a different approach to rendering and modularity than pixi. Some notable differences in philosophy are:

  • Fae is focused on WebGL
  • Fae uses a flat entity structure with z-ordering instead of a heirarchal scene tree
  • Fae uses an assemblage-heavy Entity-Component-System (ECS) approach to composing objects

and a few other core design differences that result in a familiar but slightly different API.



Pre-built versions of the library are hosted on Amazon S3. These are "full builds" meaning they include all the official, open-source, plugins.

Each build of Fae includes these files:

  • fae.js - Development build. Unminified and includes debug asserts and other checks that negatively affect performance.
  • - Development source-map file that maps compiled fae.js file back into source code.
  • fae.min.js - Production build. Minified and all debugging code is stripped out for maximum performance.

Below is information on how to download each build type.

Stable Release

You can download the builds for any particular release at:<version>/fae.js<version>/<version>/fae.min.js

Replace <version> with the version of the library you want. For example, to get v1.0.0:

Unstable Builds

You can download the builds for any particular branch or git-sha at:<branch-or-git-sha>/fae.js<branch-or-git-sha>/<branch-or-git-sha>/fae.min.js

Replace <branch-or-git-sha> with a branch name (like master) to get the latest successful build of that branch or with the git-sha of a particular commit (like 1e532f70822f262452fb85b3669102bb05b443eb).

For example:

Note that only builds that succeed will have files on S3. If the build fails there will be no built files, so not every git-sha in the history may work.


Developing Fae takes a lot of time and effort. The multiple services and servers that run for the Fae project cost a non-trivial amount of money. If you want to help support the continued development of Fae, please consider making a donation.

There are a couple ways you can have an impact:

  • A monthly contribution via Patreon (Coming Soon).
  • A donation via PayPal: PayPal

All donations go right back into the Fae community in the form of server hosting, and development time.


Issues are tagged with labels to help give a good view of the current state of the project.

For example, to see what plugins need to be made you can look at the New Plugin label.

Guides/Tutorials to write:

  • Intro to the ECS architecture Fae uses
  • General Performance Guidelines
    • How batching happens and how you can take advantage of it.
    • How to write efficient systems.
    • Using renderPriority and renderGroupHint to make batching better.
    • Batching the addition of entities (skipping sort in addEntity).
  • Rendering looks weird on my old XYZ Mobile Device
    • Description of the options that may fix issues on old mobile
    • Shader precision, batch sizes, multi-texture sizes, VAO usage, etc.


The Contributing Guide contains the full details on how to contribute changes to the project.

Main points:

  • Report bugs on GitHub Issues and include a code sample.
  • Pull Requests should be made against master.
  • Before contributing read the Code of Conduct.