+For API usage examples, see [[https://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos]].
+* TODO features to add
++ read this as example, and apply improvements/fixes where applicable:
+ http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html
+
++ Partial region/frame repaint: when only one small object changed on
+ the scene, it would be faster to re-render that specific area.
+
++ Once partial rendering works, in would be easy to add multi-core
+ rendering support. So that each core renders it's own region of the
+ screen.
+
++ Antialiazing. Would improve text readability. If antialiazing is too
+ expensive for every frame, it could be used only for last frame
+ before animations become still and waiting for user input starts.
+** Render only visible polygons
++ This would significantly reduce RAM <-> CPU traffic.
+
++ General algorithm description:
+ + For each horizontal scanline:
+ + sort polygon edges from left to right
+ + while iterating and drawing pixels over screen X axis (left to
+ right) track next appearing/disappearing polygons.
+ + For each polygon edge update Z sorted active polygons list.
+ + Only draw pixel from the top-most polygon.
+ + Only if polygon area is transparent/half-transparent add
+ colors from the polygons below.
+
++ As a bonus, this would allow to track which polygons are really
+ visible in the final scene for each frame.
+
+ + Such information allows further optimizations:
+
+ + Dynamic geometry simplification:
+ + Dynamically detect and replace invisible objects from the
+ scene with simplified bounding box.