+<div id="outline-container-sec-5" class="outline-2">
+<h2 id="sec-5"><span class="section-number-2">5</span> <span class="label label-primary TODO">TODO</span> features to add</h2>
+<div class="outline-text-2" id="text-5">
+<ul class="org-ul">
+<li>read this as example, and apply improvements/fixes where applicable:
+<a href="http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html">http://blog.rogach.org/2015/08/how-to-create-your-own-simple-3d-render.html</a>
+</li>
+
+<li>Partial region/frame repaint: when only one small object changed on
+the scene, it would be faster to re-render that specific area.
+</li>
+
+<li>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.
+</li>
+
+<li>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.
+</li>
+
+<li>Render only visible polygons.
+<ul class="org-ul">
+<li>This would significantly reduce RAM <-> CPU traffic.
+</li>
+
+<li>General algorithm description:
+<ul class="org-ul">
+<li>For each horizontal scanline:
+<ul class="org-ul">
+<li>sort polygon edges from left to right
+</li>
+<li>while iterating and drawing pixels over screen X axis (left to
+right) track next appearing/disappearing polygons.
+<ul class="org-ul">
+<li>For each polygon edge update Z sorted active polygons list.
+</li>
+<li>Only draw pixel from the top-most polygon.
+<ul class="org-ul">
+<li>Only if polygon area is transparent/half-transparent add
+colors from the polygons below.
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+
+<li>As a bonus, this would allow to track which polygons are really
+visible in the final scene for each frame.
+
+<ul class="org-ul">
+<li>Such information allows further optimizations:
+
+<ul class="org-ul">
+<li>Dynamic geometry simplification:
+<ul class="org-ul">
+<li>Dynamically detect and replace invisible objects from the
+scene with simplified bounding box.
+</li>
+
+<li>Dynamically replace boudnig box with actual object once it
+becomes visible.
+</li>
+</ul>
+</li>
+
+<li>Dynamically unload unused textures from RAM.
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>