<html lang="en">
<head>
<title>Sixth 3D - 3D engine</title>
-<!-- 2017-07-07 Fri 13:11 -->
+<!-- 2017-07-29 Sat 13:57 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Org-mode">
<div id="outline-container-sec-1" class="outline-2">
<h2 id="sec-1"><span class="section-number-2">1</span> Project description</h2>
<div class="outline-text-2" id="text-1">
-<p>
-In-software, pure Java realtime 3D rendering engine. With the final
-goal of becoming a platform for buildng 3D user interfaces and
-interactive data visualization.
-</p>
-
<ul class="org-ul">
<li>See: <a href="http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html">demos of current 3D engine capabilities</a>
</li>
</ul>
+<p>
+<a href="#sec-1-1">In software</a>, <a href="#sec-1-2">pure Java</a> realtime 3D rendering engine. With the final
+goal of becoming a platform for buildng 3D user interfaces and
+interactive data visualization for <a href="http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html">project Sixth</a>.
+</p>
+
+<p>
+Sixth 3D can be also used as standalone <a href="#sec-3">3D engine in your project</a>.
+</p>
+</div>
+
+<div id="outline-container-sec-1-1" class="outline-3">
+<h3 id="sec-1-1"><a id="ID-d03013e5-931b-40ca-bc4b-e4b3f23b9a4e" name="ID-d03013e5-931b-40ca-bc4b-e4b3f23b9a4e"></a><span class="section-number-3">1.1</span> Justification for software rendering</h3>
+<div class="outline-text-3" id="text-1-1">
+<p>
+3D rendering is done in software, 100% pure Java on CPU. At least for
+now. Modern CPU cores count keeps growing and therefore rendering by
+CPU is not as expensive as it used to be for the old single core
+systems.
+</p>
+
+<p>
+CPU rendering performance is already good enough to implement usable
+3D UI at sufficient detail level, resolution and frame rate.
+</p>
<p>
-System is implemented in Java because:
+Also CPU rendering allows to freely test different rendering and
+optimization algorithms and retains complete control of every rendered
+pixel.
</p>
+</div>
+</div>
+<div id="outline-container-sec-1-2" class="outline-3">
+<h3 id="sec-1-2"><a id="ID-a11f7150-1b25-4ca4-a3c3-8c8bd1352bd4" name="ID-a11f7150-1b25-4ca4-a3c3-8c8bd1352bd4"></a><span class="section-number-3">1.2</span> Justification for Java</h3>
+<div class="outline-text-3" id="text-1-2">
<ul class="org-ul">
<li>It is easy to refactor and experiment with.
</li>
+<li>Easy portability and installation. No need to deal with platform
+specific dependencies.
+</li>
+
<li>It scales well to handle great complexity.
<ul class="org-ul">
<li>Allows to implement clever performance optimizations (instead of
operating systems.
</li>
</ul>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-2" class="outline-2">
+<h2 id="sec-2"><span class="section-number-2">2</span> <span class="label label-primary TODO">TODO</span> API documentation</h2>
+<div class="outline-text-2" id="text-2">
<p>
-3D rendering is done in software, 100% pure Java on CPU. At least for
-now. Modern CPU cores count keeps growing and therefore rendering by
-CPU is not as expensive as it used to be for the old single core
-systems.
-</p>
-
-<p>
-CPU rendering performance is already good enough to implement usable
-3D UI at sufficient detail level, resolution and frame rate.
-</p>
-
-<p>
-Pure Java also means easy portability and installation. No need to
-deal with platform specific dependencies.
+Documentation currently missing for the lack of time.
</p>
<p>
-Also CPU rendering allows to easily test different rendering
-algorithms and retains complete control of every rendered pixel.
+So far best resource is to download and explore source code for:
</p>
+<ul class="org-ul">
+<li>3D engine (<a href="codeGraph/index.html">generated code graph</a> (generated using <a href="http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html">this tool</a>))
+</li>
+<li>For API usage examples, see <a href="http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html">demos</a>.
+</li>
+</ul>
</div>
</div>
-
-
-<div id="outline-container-sec-2" class="outline-2">
-<h2 id="sec-2"><span class="section-number-2">2</span> Instructions to embed Sixth-3D in your project</h2>
-<div class="outline-text-2" id="text-2">
+<div id="outline-container-sec-3" class="outline-2">
+<h2 id="sec-3"><a id="ID-08f71987-90af-40dc-bb65-bac87db9e652" name="ID-08f71987-90af-40dc-bb65-bac87db9e652"></a><span class="section-number-2">3</span> Instructions to embed Sixth-3D in your project</h2>
+<div class="outline-text-2" id="text-3">
<p>
Maven *pom.xml* file snippet:
</p>
<<span style="color: #A6E22E;">dependency</span>>
<<span style="color: #A6E22E;">groupId</span>>eu.svjatoslav</<span style="color: #A6E22E;">groupId</span>>
<<span style="color: #A6E22E;">artifactId</span>>sixth-3d</<span style="color: #A6E22E;">artifactId</span>>
- <<span style="color: #A6E22E;">version</span>>1.0</<span style="color: #A6E22E;">version</span>>
+ <<span style="color: #A6E22E;">version</span>>1.1</<span style="color: #A6E22E;">version</span>>
</<span style="color: #A6E22E;">dependency</span>>
...
</<span style="color: #A6E22E;">dependencies</span>>
</div>
<p>
-See <a href="codeGraph/index.html">generated code graph</a> using <a href="http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html">this tool</a>.
+For API usage examples, see <a href="http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html">demos</a>.
</p>
</div>
</div>
-<div id="outline-container-sec-3" class="outline-2">
-<h2 id="sec-3"><span class="section-number-2">3</span> <span class="label label-primary TODO">TODO</span> features to add</h2>
-<div class="outline-text-2" id="text-3">
+<div id="outline-container-sec-4" class="outline-2">
+<h2 id="sec-4"><span class="section-number-2">4</span> <span class="label label-primary TODO">TODO</span> features to add</h2>
+<div class="outline-text-2" id="text-4">
<ul class="org-ul">
<li>Partial region/frame repaint: when only one small object changed on
the scene, it would be faster to re-render that specific area.
</div><div class="col-md-3"><nav id="table-of-contents">
<div id="text-table-of-contents" class="bs-docs-sidebar">
<ul class="nav">
-<li><a href="#sec-1">1. Project description</a></li>
-<li><a href="#sec-2">2. Instructions to embed Sixth-3D in your project</a></li>
-<li><a href="#sec-3">3. features to add</a></li>
+<li><a href="#sec-1">1. Project description</a>
+<ul class="nav">
+<li><a href="#sec-1-1">1.1. Justification for software rendering</a></li>
+<li><a href="#sec-1-2">1.2. Justification for Java</a></li>
+</ul>
+</li>
+<li><a href="#sec-2">2. API documentation</a></li>
+<li><a href="#sec-3">3. Instructions to embed Sixth-3D in your project</a></li>
+<li><a href="#sec-4">4. features to add</a></li>
</ul>
</div>
</nav>
</div></div></div>
<footer id="postamble" class="">
<div><p class="author">Author: Svjatoslav Agejenko</p>
-<p class="date">Created: 2017-07-07 Fri 13:11</p>
+<p class="date">Created: 2017-07-29 Sat 13:57</p>
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.1.1 (<a href="http://orgmode.org">Org-mode</a> 8.2.10)</p>
</div>
</footer>
#+HTML_HEAD: </style>
* Project description
-In-software, pure Java realtime 3D rendering engine. With the final
++ See: [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html][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.
+interactive data visualization for [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][project Sixth]].
-+ See: [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html][demos of current 3D engine capabilities]]
+Sixth 3D can be also used as standalone [[id:08f71987-90af-40dc-bb65-bac87db9e652][3D engine in your project]].
+** Justification for software rendering
+ :PROPERTIES:
+ :ID: d03013e5-931b-40ca-bc4b-e4b3f23b9a4e
+ :END:
+3D rendering is done in software, 100% pure Java on CPU. At least for
+now. Modern CPU cores count keeps growing and therefore rendering by
+CPU is not as expensive as it used to be for the old single core
+systems.
-System is implemented in Java because:
+CPU rendering performance is already good enough to implement usable
+3D UI at sufficient detail level, resolution and frame rate.
+
+Also CPU rendering allows to freely test different rendering and
+optimization algorithms and retains complete control of every rendered
+pixel.
+** Justification for Java
+ :PROPERTIES:
+ :ID: a11f7150-1b25-4ca4-a3c3-8c8bd1352bd4
+ :END:
- It is easy to refactor and experiment with.
+- Easy portability and installation. No need to deal with platform
+ specific dependencies.
+
- It scales well to handle great complexity.
- Allows to implement clever performance optimizations (instead of
going for GPU offered brute-force rendering approach).
- As a result it is easy to run on various hardware platforms and
operating systems.
-3D rendering is done in software, 100% pure Java on CPU. At least for
-now. Modern CPU cores count keeps growing and therefore rendering by
-CPU is not as expensive as it used to be for the old single core
-systems.
-
-CPU rendering performance is already good enough to implement usable
-3D UI at sufficient detail level, resolution and frame rate.
-
-Pure Java also means easy portability and installation. No need to
-deal with platform specific dependencies.
-
-Also CPU rendering allows to easily test different rendering
-algorithms and retains complete control of every rendered pixel.
-
+* TODO API documentation
+Documentation currently missing for the lack of time.
+So far best resource is to download and explore source code for:
++ 3D engine ([[file:codeGraph/index.html][generated code graph]] (generated using [[http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html][this tool]]))
++ For API usage examples, see [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html][demos]].
* Instructions to embed Sixth-3D in your project
+ :PROPERTIES:
+ :ID: 08f71987-90af-40dc-bb65-bac87db9e652
+ :END:
Maven *pom.xml* file snippet:
#+BEGIN_SRC xml
<dependencies>
<dependency>
<groupId>eu.svjatoslav</groupId>
<artifactId>sixth-3d</artifactId>
- <version>1.0</version>
+ <version>1.1</version>
</dependency>
...
</dependencies>
</repositories>
#+END_SRC
-See [[file:codeGraph/index.html][generated code graph]] using [[http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html][this tool]].
+For API usage examples, see [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d-demos/doc/index.html][demos]].
* TODO features to add
+ Partial region/frame repaint: when only one small object changed on
the scene, it would be faster to re-render that specific area.