Upcoming v1.0.0 Changes
Kami is now breaking into small and composable modules that will be published separately to NPM. Most new work is under the stackgl ecosystem. However, some higher-level 2D game abstractions may be eventually built on top of these modules under the kami namespace.
kami
Kami is a fast and lightweight WebGL sprite rendering framework.
It is ideal for tinkering with WebGL, building your game engine on top of, or writing applications that require low-level control over vertex data, textures, and so forth.
This library is still in development.
Docs
Usage
Here is an example using Node style requires and browserify:
//require the necessary classes from the 'kami' modulevar AssetManager = AssetManager;var SpriteBatch = SpriteBatch; var WebGLContext = WebGLContext; var width = 256;var height = 256; //create our webGL context..//this will manage viewport and context loss/restorevar context = width height; //add the GL canvas to the DOMdocumentbody; //Create a new batcher for 2D spritesvar batch = context; //Create a new texture. This will load the URL asynchronouslyvar tex0 = context "img/mysprite.png"; //kami aliases some Texture GLenums for conveniencetex0; //Start our render loop; { ; var gl = contextgl; //clear the GL canvas glclearglCOLOR_BUFFER_BIT; //start the batch... batch; //draw the texture at (75, 75) with a size of 100x100 batch; //draw it some other places batch; batch; //flush sprites to GPU batch;}
demos
The demos are hosted in another package, see here: https://github.com/mattdesl/kami-demos
Using without Node
If you aren't using Node and require()
statements, you can grab the UMD build at build/kami.js
.
Most of the code looks exactly the same, except all of Kami's objects are exported onto a global kami
namespace. The dependencies are also exported on the namespace, for convenience. See here:
Road Map / TODOs
- WebGL2 utils: compressed textures (done, see kami-demos), texture arrays, float textures, instanced draws, etc.
- Cube maps and other Texture utils
- clean up asset loading and kami-assets
- MRTs for FrameBuffer utility (WebGL2)
- SpriteBatch should use matrices (projeciton/transform)
- SpriteBatch needs rotation