Flat Surface Shader is a lightweight JavaScript rendering library for creating illuminated low-poly triangle surfaces. It models scenes with meshes, materials, lights, geometry, and renderers. Lighting is calculated with a Lambertian reflectance model using triangle normals, centroids, ambient color, and diffuse color. The same scene can be rendered through WebGL, Canvas 2D, or SVG backends. Developers can construct planes, deform vertices, move lights, and animate scenes to produce dynamic faceted visuals. Its architecture was influenced by three.js while remaining much smaller and more specialized. The project is especially useful for decorative backgrounds, generative graphics, and learning basic 3D lighting concepts.
Features
- WebGL rendering
- Canvas 2D rendering
- SVG rendering
- Lambertian triangle lighting
- Scene, mesh, material, and light abstractions
- Animated low-poly surface effects