Skip to content

Releases: leikareipa/retro-ngon

1.0

18 Dec 17:09
Compare
Choose a tag to compare

Changelog

  • Numerous changes to the API (see the API reference for details)
  • Some new render samples

0.4

26 Aug 23:58
Compare
Choose a tag to compare
0.4 Pre-release
Pre-release

Changelog

  • Non-perspective-correct interpolation now corrects for perspective only along the Y axis, rather than none at all
    • This produces less severe texture warping, but still some of it, which may be the aesthetic you're looking for
    • About 10% faster than full correction, whereas the old method was slower than full correction
  • Points and lines now have optimized raster paths
    • Wireframe rendering without depth buffering is 25% faster
  • Point and line rasterizers now (or for now) ignore the fragment buffer
  • Can now build a module-format distributable, in addition to the global variant
  • Vertex shaders now receive the render state object as an argument
  • Pixel shaders now receive only the render state object as an argument
    • You now need to manually pass useFragmentBuffer: true in the render options if a pixel shader intends to access the fragment buffer
  • Rngon.color now has convenience aliases for CSS color names (e.g. Rngon.color.hotpink)
  • matrix is now exposed in the public API
  • Tweaked the presentation of various render samples, and added a texture-painting sample
  • The first mip level of a texture is now a direct reference to the base texture data
  • Refactored the API reference manual
  • Refactoring of source code

0.3

22 Aug 02:50
Compare
Choose a tag to compare
0.3 Pre-release
Pre-release

Changelog

  • Implemented a new unit tester
    • Unit tests no longer run against the public API, so internal units can be tested
  • Backface culling now works with object rotation
  • Polygon normals are now always transformed into world space regardless of vertex shading mode
  • Polygons are now single-sided by default (backfaces are culled)
  • End-user documentation was split into multiple files
  • Cleaned up the Rngon public API
    • matrix, lerp, throw, material, and assert are no longer exposed in the API (matrix might be re-added in the future)
    • version.isProd is now version.isProductionBuild
    • version no longer includes .patch
    • Certain internal utility functions (like Ngon.perspective_divide) are no longer visible publically
  • Verbified the property names of Mesh.transform
    • transform.scalingtransform.scale
    • transform.translationtransform.translate
    • transform.rotationtransform.rotate
  • Tweaked a few render samples
  • Internal code refactoring
  • JS module source files are now suffixed .mjs instead of .js

0.2.0

19 Aug 08:04
Compare
Choose a tag to compare
0.2.0 Pre-release
Pre-release

Changelog

  • Improved render performance in Google Chrome
    • +40% to wireframe rendering
    • +10~20% to fixed-pipeline rasterization
  • Improved the interface of Rngon.light
  • Trimmed the Rngon API by removing some unnecessary properties
  • Rngon.matrix44 is now Rngon.matrix
  • Some refactoring of source file names
  • Small improvements and streamlining of the HTML of render samples
  • Deprecated lookup table-based sin/cos functions for built-in Math sin/cos
    • Reduced production distributable size by about 30%

0.1.0

13 Aug 04:07
Compare
Choose a tag to compare
0.1.0 Pre-release
Pre-release

First post-beta release.

Changelog

Various changes since the previous release a year ago, too many to list. The API was fairly heavily modified, and render performance has in some cases doubled.

beta.5

11 Aug 16:15
Compare
Choose a tag to compare
beta.5 Pre-release
Pre-release

Changelog:

  • Changed license from GPLv3 to MIT
    • You should always check the source file(s) for any deviating licensing notes - for example, some of the asset files of the render samples may fall under different terms
  • Improved performance (by 100+% in some cases)
  • Added new render paths that are taken under certain conditions and which result in higher render performance
    • E.g. for affine-textured polygons when no alpha operations or shaders are specified
    • Will be documented at a later time
    • You can find the code for the render paths - with descriptions of their conditions - in /js/retro-ngon/base-modules/rasterize/
  • API changes in the 'options' object passed to render():
    • Render modules now live under a 'modules' sub-object
    • The 'Function' suffix of the 'pixelShaderFunction' and 'vertexShaderFunction' properties was removed
  • Added context shaders (they expose the renderer's underlying CanvasRenderingContext2D)
  • Added raster shaders (experimental; allow you to override or enhance the rasterization of transformed polygons without replacing the entire rasterizer module)
    • The difference to pixel shaders is that pixel shaders are applied to the rasterized image whereas raster shaders are the code that produces the image in the first place
  • Added experimental support for paletted rendering
  • Various small improvements to the point, line, and polygon rasterizers
  • Some reorganization of the source code directory structure
  • Added an overridable 'surfaceWipe' render module (for customizing the way the screen is cleared at the beginning of each render tick)
  • Added ability to pass target canvas to render() as an Element object
  • Added some render samples
  • Tweaked the render benchmarks a bunch
  • The render samples no longer depend on PHP
  • Removed Phong shading
  • Replaced the Bash build script with webpack

beta.4

04 Oct 13:21
Compare
Choose a tag to compare
beta.4 Pre-release
Pre-release

Changelog:

  • Added ability to render into an off-screen pixel buffer
  • Added threaded async rendering using Web Workers
  • Added texture mipmapping
  • Implemented proper point and line rendering
  • Fixed freeze if render width or height was <= 0
  • Gouraud shading no longer ignores all but the last of the scene's light sources
  • Added an index page for render samples
  • Added more render samples
  • Added some lightmapping tools (work in progress)
  • Added the Rngon.version property

beta.3

23 Jun 00:02
Compare
Choose a tag to compare
beta.3 Pre-release
Pre-release

Changelog:

  • Added vertex shaders
  • Added Gouraud shading
  • Added performance benchmarks (with FPS graphs)
  • Pixel shaders now receive the camera's world position as an input parameter
  • Added a few new pixel shader samples
  • All render samples now use texture atlases, for improved loading times
  • Points (1-gons) now render properly
  • Made a few performance tweaks

beta.2

13 Jun 18:57
Compare
Choose a tag to compare
beta.2 Pre-release
Pre-release

Changelog:

  • Added pixel shaders
  • Added partial polygon transparency via stippling
  • Added lights and flat shading
  • Added render option 'allowTransform' to disable vertex transformation
  • Added some more render samples
  • Overall render performance is down by about 10-20%

beta.1

18 Dec 23:07
Compare
Choose a tag to compare
beta.1 Pre-release
Pre-release

First beta release.

Changelog:

  • Added clamp and repeat as UV wrapping modes (n-gon material property)
  • Fixed black border at right and bottom of rendered image
  • Don't call window.alert() for anything by default
  • Removed perftest 2 (not useful enough; will be replaced with another, similar test at some point)