Skip to content

Winding 1.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 19:10
· 107 commits to main since this release
33a7210

Four limitations gone. Smoke sorted particle by particle, tilemaps that hold up zoomed out,
shadows from open surfaces, and text in the world's shaped scripts -- each shown wrong in 1.1.1
before it was fixed, none of it adding a dependency.

Added

  • Alpha particles are sorted. A blend: 'alpha' emitter's live particles are put far to near on
    the GPU every frame -- keyed by log depth, a counting sort, an indirect draw -- so dense smoke no
    longer shows a far particle over a near one, and dead slots are not drawn at all. About 0.2 ms
    for an emitter of a thousand on Iris Xe.
  • Tilemaps are mipmapped. Each tileset is copied with every tile alone in a cell, its edges
    stretched out, and mipped down to tiles two texels across, so a map zoomed far out is filtered
    instead of shimmering, and no tile takes in its neighbour.
  • Open surfaces cast shadows from either side. A mesh with an edge only one triangle uses --
    a plane, a roof of one sheet -- is drawn whole into shadow maps; closed meshes keep their
    back faces, and with them freedom from acne. Found at load, about 40 ms for Sponza.
  • Text in shaped scripts. Arabic, Hebrew, the Indic scripts, Thai and others are drawn a word
    at a time, shaped by the browser; Thai, Lao, Khmer and Burmese break between words though they
    have no spaces; a line that starts right-to-left runs right to left.

Fixed

  • A burst-only emitter that burst again lost the particles of the last burst while they had
    seconds to live: its ring held one burst, and a grown ring started its next births over the
    oldest live particle.
  • An emitter in the next scene drawn could take over another scene's particles, still alive,
    when the two emitters' nodes had the same number in their scenes.

npm install winding-engine