X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=doc%2Findex.org;h=31765217f9ee05375c29ea87300efd1fce8066d5;hb=9fd4e404b77be4193d14e6cc799b3f42e24d4486;hp=b164b18351be795157a6cba27c686ca2c4eb1d68;hpb=84d9d8e0f410351bf7938a33472452b799a8dc59;p=sixth-3d.git diff --git a/doc/index.org b/doc/index.org index b164b18..3176521 100644 --- a/doc/index.org +++ b/doc/index.org @@ -11,7 +11,7 @@ #+HTML_HEAD: * General -- This is a subproject of [[https://www3.svjatoslav.eu/projects/sixth/][Sixth]] +- This is a subproject of parent project: [[https://www3.svjatoslav.eu/projects/sixth/][Sixth]]. - This program is free software: you can redistribute it and/or modify it under the terms of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public License]] as @@ -33,8 +33,6 @@ - Clone Git repository using command: : git clone https://www2.svjatoslav.eu/git/sixth-3d.git -- See [[https://www3.svjatoslav.eu/projects/sixth-3d/apidocs/][JavaDoc]]. - * Project description + See: [[https://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos of current 3D engine capabilities]] @@ -86,8 +84,6 @@ pixel. operating systems. * API documentation -- See [[https://www3.svjatoslav.eu/projects/sixth-3d/apidocs/][JavaDoc]]. - Note: due to a lack of time, there is still big room for improvement on documentation. @@ -123,6 +119,9 @@ Maven *pom.xml* file snippet: 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. @@ -133,30 +132,29 @@ For API usage examples, see [[https://www3.svjatoslav.eu/projects/sixth-3d-demos + 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. -+ 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. ++ 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. ++ 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: + + Such information allows further optimizations: - + Dynamic geometry simplification: - + Dynamically detect and replace invisible objects from the - scene with simplified bounding box. + + Dynamic geometry simplification: + + Dynamically detect and replace invisible objects from the + scene with simplified bounding box. - + Dynamically replace boudnig box with actual object once it - becomes visible. + + Dynamically replace boudnig box with actual object once it + becomes visible. - + Dynamically unload unused textures from RAM. + + Dynamically unload unused textures from RAM.