2.1.1 • Published 11 months ago
bananagl v2.1.1
banana.gl 🍌
banana.gl is a small, low-level WebGL library designed as an alternative to three.js for developers who seek a more hands-on approach without diving into the complexities of bare WebGL. Honestly, it's just a fun project for me after using three.js for a while.
Installation
To install banana.gl, run the following command in your project's root directory:
npm install bananagl
Roadmap
The following list is a rough roadmap of what I want to achieve with banana.gl. It's not a promise, but rather a list of things I want to implement:
Core
- Lightweight and low-level API
- Window management - split canvas views with individual cameras and controls
- Scene
- Shader compilation
- Per-model uniforms
- Camera (switchable between perspective and orthographic)
- Mouse controls (map-like)
- Keyboard Shortcuts
- Resource Disposal (could be better though)
- Transparency
- Selection Management
- Textures
- View frustum culling
- Shadows
Data
- Basic buffer - WebGLBuffer
- Element buffer/Indexed geometry
- Atttributes
- Instanced attributes
Picking
- Built-in BVH for triangular data (worker-based)
- Built-in BVH for line data?
- Built-in BVH for point data?
- Ray-based picking for triangular data
- Range-based picking for triangular data
- Texture-based picking
Render Pass
- Strategy minimizing GPU program switches
- Per-model uniforms updated only when needed
- Indexed triangle mode
- Triangle mode
- Instancing mode
- Indexed Line Mode
- Line mode
Nice to have
- Post-processing pipeline
- Optimized for scenes with funky coordinates (e.g. too large or too small)