A JavaScript API for drawing unconventional text effects on the web using WebGL and GLSL shaders.
Blotter is a JavaScript API that allows developers and designers to apply advanced, unconventional text effects on the web using WebGL and GLSL shaders. It solves the limitation of CSS by enabling animated, shader‑based typography for graphic text elements like titles and headings, rendering them efficiently in canvas.
Frontend developers and web designers looking to create visually striking, animated text effects for headings, logos, or graphic typography without writing low‑level GLSL code.
Blotter offers an accessible, performance‑optimized way to leverage WebGL shaders for text effects, with a pre‑built library of materials and an API that abstracts complex rendering, making it ideal for creative web projects.
A JavaScript API for drawing unconventional text effects on the web.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a simple API and growing library of configurable materials that abstract GLSL shader complexity, allowing non-experts to apply advanced text effects without coding shaders from scratch.
Uses texture atlasing to batch draw calls in a single WebGL context, improving performance when multiple texts share the same effect, as detailed in the atlasing explanation.
Leverages requestAnimationFrame to sync with browser refresh rate and pause in inactive tabs, enhancing performance and battery life, per the animation loop section.
Supports custom fonts via @font-face, enabling designers to maintain branding while applying effects, mentioned in the styling properties.
Renders text to canvas elements, making it impossible for users to select or copy text, a limitation explicitly admitted in the 'What Blotter Isn't' section.
Requires Three.js and Underscore.js, adding to bundle size, and while a custom build of Three.js is used, it can complicate setups if other versions are already in use.
Not suitable for body text or lengthy content, restricting its use to titles and headings, as stated in the README, which narrows its applicability.