luma.gl's provides efficient and easy-to-use WebGL2-based building blocks enabling high-performance GPU-based data visualizations and computations on your browser.
See Examples and Documentation. Change Log.
High Level Design Goals
- Focus on data visualization - While generic, luma.gl prioritizes features that enable efficient rendering of large data sets or that support improved visualization techniques. In practice this means that luma.gl is an early adopter of techniques like instanced rendering, WebGL2 and GPGPU techniques.
- Celebrate WebGL Simplify the use of WebGL but do not hide it from the programmer. Learn luma.gl and you learn WebGL.
- Simplification, not abstraction Provide an API that simplifies WebGL usage without hiding WebGL from the programmer. Abstractions are good but they should be built on top of luma.gl.
Secondary Design Goals:
- Focus on Shader Programming - Let's efficiently create, organize and debug shader code.
- Interoperability - No "magic" global state that gets in the way of interoperability. All components work with a standard
WebGLRenderingContext
and can used together with components from other frameworks (e.g. stackgl). - Debugging Built in support for debugging and profiling WebGL and GLSL haders.
- deck.gl builds 3D map visualization overlays on luma.gl.
luma.gl started out as a fork of PhiloGL however no effort has been made to maintain compatibility with PhiloGL-based applications.
npm install luma.gl --save
Luma.gl comes with 16 lessons, a number of examples, and a full set of reference documenation.
To run examples:
git clone [email protected]:uber/luma.gl.git
cd luma.gl
npm install
npm start
This builds the luma.gl bundle, starts a small local server, and opens a browser window on a welcome page, allowing you to run to all lessons and examples.
Use npm start
to run the test server, it will open a web page from which
you can access the examples and lessons, and automatically update when you
save modified source files.
Testing is performed on Travis CI and using a precommit hook. Local testing is supported on three environments
npm test
- runsnpm run test-headless
npm run test-browser
- Tests in your browser, may be helpful to quickly debug test case failures since it autoreloads on changes and gives you full access to your browser's debugger.
When adding new features, or modifying existing ones, carefully consider if unit testing can be provided.