Skip to content

ondras/fastiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fastiles

Library for rendering colorized bitmap fonts. Very fast, suitable for applications where the whole scene needs frequent redrawing. Open source, released under the terms of the MIT license.

Features

  • Handles bitmap fonts of square and non-square aspect ratios
  • Supports up to 65536 glyphs
  • Updates are batched via requestAnimationFrame
  • Color palettes (foreground and background) up to 256 colors
  • Written in TypeScript

Speed

  • WebGL (WebGL 2, to be precise)
  • No per-render memory allocations
  • Only one GL draw call for the whole scene
  • Minimized JS data transfer (data set only for Provoking vertices)
  • Thousands of tiles rendered at 60 fps

Palettes

Glyphs rendered via fastiles are using indexed colors. Foreground and background are specified as indices to a current palette. A palette can hold up to 256 colors. There are several predefined palettes and you can create your own. Modifying palette values and switching palettes is very fast.

Show me the code

import { Scene, Palette } from "./fastiles/fastiles.js";

let options = {
	tileCount: [80, 25],     // tiles
	tileSize: [12, 12],
	font: ...                // image or canvas
}
let scene = new Scene(options)
document.body.appendChild(scene.node)


// basic drawing
scene.draw(
	[0, 0], // position
	64,     // glyph index
	1,      // foreground color index
	0       // background color index
)


// palette change
let newPalette = Palette.xterm256()
scene.palette = newPalette


// adjusting existing palette
newPalette.set(1, "orange")