Releases: leikareipa/retro-ngon
Releases · leikareipa/retro-ngon
1.0
Changelog
- Numerous changes to the API (see the API reference for details)
- Some new render samples
0.4
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
- You now need to manually pass
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
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 APImatrix
,lerp
,throw
,material
, andassert
are no longer exposed in the API (matrix
might be re-added in the future)version.isProd
is nowversion.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.scaling
→transform.scale
transform.translation
→transform.translate
transform.rotation
→transform.rotate
- Tweaked a few render samples
- Internal code refactoring
- JS module source files are now suffixed
.mjs
instead of.js
0.2.0
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 nowRngon.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
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
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
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
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
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
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)