X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=doc%2Findex.org;h=538063d8cb65ac65ac2219cc9a575dbbe103e920;hb=d82cdc5afc9432b8a439f296750755b07198a134;hp=c214637c8710ad69d88fe9117a598d1b3a863314;hpb=ef06f8e7a2c413a53da0d25f353b5743d298b1eb;p=sixth-3d.git diff --git a/doc/index.org b/doc/index.org index c214637..538063d 100644 --- a/doc/index.org +++ b/doc/index.org @@ -1,41 +1,42 @@ #+TITLE: Sixth 3D - 3D engine ------ -- This is a subproject of [[http://www3.svjatoslav.eu/projects/sixth/][Sixth]] - -- Clone GIT repository using commanad: - : git clone http://www2.svjatoslav.eu/git/sixth-3d.git - -- [[http://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]] +* (document settings) :noexport: +** use dark style for TWBS-HTML exporter +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: -+ 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 - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. +* General +- This program is free software: released under Creative Commons Zero + (CC0) license - Program author: - Svjatoslav Agejenko - - Homepage: http://svjatoslav.eu + - Homepage: https://svjatoslav.eu - Email: mailto://svjatoslav@svjatoslav.eu -- [[http://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]] +- [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]] -* (document settings) :noexport: -** use dark style for TWBS-HTML exporter -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: " -#+HTML_HEAD: +** Source code +- [[https://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]] + +- [[https://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=summary][Browse Git repository online]] + +- 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: [[http://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos of current 3D engine capabilities]] ++ See: [[https://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos of current 3D engine capabilities]] [[id:d03013e5-931b-40ca-bc4b-e4b3f23b9a4e][In software]], [[id:a11f7150-1b25-4ca4-a3c3-8c8bd1352bd4][pure Java]] realtime 3D rendering engine. With the final goal of becoming a platform for buildng 3D user interfaces and -interactive data visualization for [[http://www3.svjatoslav.eu/projects/sixth/][project Sixth]]. +interactive data visualization for [[https://www3.svjatoslav.eu/projects/sixth/][project Sixth]]. Sixth 3D can be also used as standalone [[id:08f71987-90af-40dc-bb65-bac87db9e652][3D engine in your project]]. @@ -80,12 +81,15 @@ pixel. - As a result it is easy to run on various hardware platforms and operating systems. -* TODO API documentation -Documentation currently missing for the lack of time. +* 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. So far best resource is to download and explore source code for: -+ 3D engine ([[http://www3.svjatoslav.eu/projects/sixth-3d/graphs/][generated code graphs]] (generated using [[http://www3.svjatoslav.eu/projects/javainspect/][JavaInspect]])) -+ For API usage examples, see [[http://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos]] ++ 3D engine ([[https://www3.svjatoslav.eu/projects/sixth-3d/graphs/][generated code graphs]] (generated using [[https://www3.svjatoslav.eu/projects/javainspect/][JavaInspect]])) ++ For API usage examples, see [[https://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos]] * Instructions to embed Sixth-3D in your project :PROPERTIES: :ID: 08f71987-90af-40dc-bb65-bac87db9e652 @@ -97,7 +101,7 @@ Maven *pom.xml* file snippet: eu.svjatoslav sixth-3d - 1.1 + 1.2 ... @@ -113,8 +117,11 @@ Maven *pom.xml* file snippet: #+END_SRC -For API usage examples, see [[http://www3.svjatoslav.eu/projects/sixth-3d-demos/][demos]]. +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. @@ -125,30 +132,29 @@ For API usage examples, see [[http://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.