-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<!doctype html>
+<html lang="en">
<head>
- <!-- 2016-08-03 Wed 23:15 -->
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>Sixth 3D - 3D engine</title>
- <meta name="generator" content="Org-mode"/>
- <meta name="author" content="Svjatoslav Agejenko"/>
- <style type="text/css">
- <!-- /*--><![CDATA[/*><!--*/
- .title {
- text-align: center;
- margin-bottom: .2em;
- }
-
- .subtitle {
- text-align: center;
- font-size: medium;
- font-weight: bold;
- margin-top: 0;
- }
-
- .todo {
- font-family: monospace;
- color: red;
- }
-
- .done {
- font-family: monospace;
- color: green;
- }
-
- .priority {
- font-family: monospace;
- color: orange;
- }
-
- .tag {
- background-color: #eee;
- font-family: monospace;
- padding: 2px;
- font-size: 80%;
- font-weight: normal;
- }
-
- .timestamp {
- color: #bebebe;
- }
-
- .timestamp-kwd {
- color: #5f9ea0;
- }
-
- .org-right {
- margin-left: auto;
- margin-right: 0px;
- text-align: right;
- }
-
- .org-left {
- margin-left: 0px;
- margin-right: auto;
- text-align: left;
- }
-
- .org-center {
- margin-left: auto;
- margin-right: auto;
- text-align: center;
- }
-
- .underline {
- text-decoration: underline;
- }
-
- #postamble p, #preamble p {
- font-size: 90%;
- margin: .2em;
- }
-
- p.verse {
- margin-left: 3%;
- }
-
- pre {
- border: 1px solid #ccc;
- box-shadow: 3px 3px 3px #eee;
- padding: 8pt;
- font-family: monospace;
- overflow: auto;
- margin: 1.2em;
- }
-
- pre.src {
- position: relative;
- overflow: visible;
- padding-top: 1.2em;
- }
-
- pre.src:before {
- display: none;
- position: absolute;
- background-color: white;
- top: -10px;
- right: 10px;
- padding: 3px;
- border: 1px solid black;
- }
-
- pre.src:hover:before {
- display: inline;
- }
-
- pre.src-sh:before {
- content: 'sh';
- }
-
- pre.src-bash:before {
- content: 'sh';
- }
-
- pre.src-emacs-lisp:before {
- content: 'Emacs Lisp';
- }
-
- pre.src-R:before {
- content: 'R';
- }
-
- pre.src-perl:before {
- content: 'Perl';
- }
-
- pre.src-java:before {
- content: 'Java';
- }
-
- pre.src-sql:before {
- content: 'SQL';
- }
-
- table {
- border-collapse: collapse;
- }
-
- caption.t-above {
- caption-side: top;
- }
-
- caption.t-bottom {
- caption-side: bottom;
- }
-
- td, th {
- vertical-align: top;
- }
-
- th.org-right {
- text-align: center;
- }
-
- th.org-left {
- text-align: center;
- }
-
- th.org-center {
- text-align: center;
- }
-
- td.org-right {
- text-align: right;
- }
-
- td.org-left {
- text-align: left;
- }
-
- td.org-center {
- text-align: center;
- }
-
- dt {
- font-weight: bold;
- }
-
- .footpara {
- display: inline;
- }
-
- .footdef {
- margin-bottom: 1em;
- }
-
- .figure {
- padding: 1em;
- }
-
- .figure p {
- text-align: center;
- }
-
- .inlinetask {
- padding: 10px;
- border: 2px solid gray;
- margin: 10px;
- background: #ffffcc;
- }
-
- #org-div-home-and-up {
- text-align: right;
- font-size: 70%;
- white-space: nowrap;
- }
-
- textarea {
- overflow-x: auto;
- }
-
- .linenr {
- font-size: smaller
- }
-
- .code-highlighted {
- background-color: #ffff00;
- }
-
- .org-info-js_info-navigation {
- border-style: none;
- }
-
- #org-info-js_console-label {
- font-size: 10px;
- font-weight: bold;
- white-space: nowrap;
- }
-
- .org-info-js_search-highlight {
- background-color: #ffff00;
- color: #000000;
- font-weight: bold;
- }
-
- /*]]>*/
- -->
- </style>
- <link rel="stylesheet" type="text/css" href="http://thomasf.github.io/solarized-css/solarized-dark.min.css"/>
- <script type="text/javascript">
- /*
- @licstart The following is the entire license notice for the
- JavaScript code in this tag.
-
- Copyright (C) 2012-2013 Free Software Foundation, Inc.
-
- The JavaScript code in this tag is free software: you can
- redistribute it and/or modify it under the terms of the GNU
- General Public License (GNU GPL) as published by the Free Software
- Foundation, either version 3 of the License, or (at your option)
- any later version. The code is distributed WITHOUT ANY WARRANTY;
- without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
-
- As additional permission under GNU GPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
-
- @licend The above is the entire license notice
- for the JavaScript code in this tag.
- */
- <!--/*--><![CDATA[/*><!--*/
- function CodeHighlightOn(elem, id) {
- var target = document.getElementById(id);
- if (null != target) {
- elem.cacheClassElem = elem.className;
- elem.cacheClassTarget = target.className;
- target.className = "code-highlighted";
- elem.className = "code-highlighted";
- }
- }
- function CodeHighlightOff(elem, id) {
- var target = document.getElementById(id);
- if (elem.cacheClassElem)
- elem.className = elem.cacheClassElem;
- if (elem.cacheClassTarget)
- target.className = elem.cacheClassTarget;
- }
- /*]]>*///-->
- </script>
+<title>Sixth 3D - 3D engine</title>
+<!-- 2020-01-29 K 21:30 -->
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="generator" content="Org-mode">
+<meta name="author" content="Svjatoslav Agejenko">
+<link href="https://bootswatch.com/3/darkly/bootstrap.min.css" rel="stylesheet">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
+<style type="text/css">
+footer {background-color: #111 !important;}
+pre {background-color: #111; color: #ccc;}
+</style>
+<style type="text/css">
+/* org mode styles on top of twbs */
+
+html {
+ position: relative;
+ min-height: 100%;
+}
+
+body {
+ font-size: 18px;
+ margin-bottom: 105px;
+}
+
+footer {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ height: 101px;
+ background-color: #f5f5f5;
+}
+
+footer > div {
+ padding: 10px;
+}
+
+footer p {
+ margin: 0 0 5px;
+ text-align: center;
+ font-size: 16px;
+}
+
+#table-of-contents {
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+
+blockquote p {
+ font-size: 18px;
+}
+
+pre {
+ font-size: 16px;
+}
+
+.footpara {
+ display: inline-block;
+}
+
+figcaption {
+ font-size: 16px;
+ color: #666;
+ font-style: italic;
+ padding-bottom: 15px;
+}
+
+/* from twbs docs */
+
+.bs-docs-sidebar.affix {
+ position: static;
+}
+@media (min-width: 768px) {
+ .bs-docs-sidebar {
+ padding-left: 20px;
+ }
+}
+
+/* All levels of nav */
+.bs-docs-sidebar .nav > li > a {
+ display: block;
+ padding: 4px 20px;
+ font-size: 14px;
+ font-weight: 500;
+ color: #999;
+}
+.bs-docs-sidebar .nav > li > a:hover,
+.bs-docs-sidebar .nav > li > a:focus {
+ padding-left: 19px;
+ color: #A1283B;
+ text-decoration: none;
+ background-color: transparent;
+ border-left: 1px solid #A1283B;
+}
+.bs-docs-sidebar .nav > .active > a,
+.bs-docs-sidebar .nav > .active:hover > a,
+.bs-docs-sidebar .nav > .active:focus > a {
+ padding-left: 18px;
+ font-weight: bold;
+ color: #A1283B;
+ background-color: transparent;
+ border-left: 2px solid #A1283B;
+}
+
+/* Nav: second level (shown on .active) */
+.bs-docs-sidebar .nav .nav {
+ display: none; /* Hide by default, but at >768px, show it */
+ padding-bottom: 10px;
+}
+.bs-docs-sidebar .nav .nav > li > a {
+ padding-top: 1px;
+ padding-bottom: 1px;
+ padding-left: 30px;
+ font-size: 12px;
+ font-weight: normal;
+}
+.bs-docs-sidebar .nav .nav > li > a:hover,
+.bs-docs-sidebar .nav .nav > li > a:focus {
+ padding-left: 29px;
+}
+.bs-docs-sidebar .nav .nav > .active > a,
+.bs-docs-sidebar .nav .nav > .active:hover > a,
+.bs-docs-sidebar .nav .nav > .active:focus > a {
+ padding-left: 28px;
+ font-weight: 500;
+}
+
+/* Nav: third level (shown on .active) */
+.bs-docs-sidebar .nav .nav .nav {
+ padding-bottom: 10px;
+}
+.bs-docs-sidebar .nav .nav .nav > li > a {
+ padding-top: 1px;
+ padding-bottom: 1px;
+ padding-left: 40px;
+ font-size: 12px;
+ font-weight: normal;
+}
+.bs-docs-sidebar .nav .nav .nav > li > a:hover,
+.bs-docs-sidebar .nav .nav .nav > li > a:focus {
+ padding-left: 39px;
+}
+.bs-docs-sidebar .nav .nav .nav > .active > a,
+.bs-docs-sidebar .nav .nav .nav > .active:hover > a,
+.bs-docs-sidebar .nav .nav .nav > .active:focus > a {
+ padding-left: 38px;
+ font-weight: 500;
+}
+
+/* Show and affix the side nav when space allows it */
+@media (min-width: 992px) {
+ .bs-docs-sidebar .nav > .active > ul {
+ display: block;
+ }
+ /* Widen the fixed sidebar */
+ .bs-docs-sidebar.affix,
+ .bs-docs-sidebar.affix-bottom {
+ width: 213px;
+ }
+ .bs-docs-sidebar.affix {
+ position: fixed; /* Undo the static from mobile first approach */
+ top: 20px;
+ }
+ .bs-docs-sidebar.affix-bottom {
+ position: absolute; /* Undo the static from mobile first approach */
+ }
+ .bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
+ margin-top: 0;
+ margin-bottom: 0
+ }
+}
+@media (min-width: 1200px) {
+ /* Widen the fixed sidebar again */
+ .bs-docs-sidebar.affix-bottom,
+ .bs-docs-sidebar.affix {
+ width: 263px;
+ }
+}
+</style>
+<script type="text/javascript">
+$(function() {
+ 'use strict';
+
+ $('.bs-docs-sidebar li').first().addClass('active');
+
+ $(document.body).scrollspy({target: '.bs-docs-sidebar'});
+
+ $('.bs-docs-sidebar').affix();
+});
+</script>
</head>
<body>
-<div id="content">
- <h1 class="title">Sixth 3D - 3D engine</h1>
- <div id="table-of-contents">
- <h2>Table of Contents</h2>
- <div id="text-table-of-contents">
- <ul>
- <li><a href="#orgheadline1">1. Project description</a></li>
- <li><a href="#orgheadline2">2. Software development</a></li>
- </ul>
- </div>
- </div>
- <hr/>
- <ul class="org-ul">
- <li>This is a subproject of <a href="http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html">Sixth</a></li>
-
- <li><a href="http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz">download latest
- snapshot</a></li>
-
- <li>This program is free software; you can redistribute it and/or modify it under
- the terms of version 3 of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
- License</a> or later as
- published by the Free Software Foundation.
- </li>
-
- <li>Program author:
- <ul class="org-ul">
- <li>Svjatoslav Agejenko</li>
- <li>Homepage: <a href="http://svjatoslav.eu/">http://svjatoslav.eu/</a></li>
- <li>Email: <a href="mailto://svjatoslav@svjatoslav.eu/">mailto://svjatoslav@svjatoslav.eu/</a></li>
- </ul>
- </li>
-
- <li><a href="http://svjatoslav.eu/programs.jsp">other applications hosted at svjatoslav.eu</a></li>
- </ul>
-
-
- <ul class="org-ul">
- <li>In software, pure Java realtime 3D rendering engine. With the final goal of
- becoming a platform for buildng 3D user interfaces.
- </li>
- </ul>
-
- <div id="outline-container-orgheadline1" class="outline-2">
- <h2 id="orgheadline1"><span class="section-number-2">1</span> Project description</h2>
- <div class="outline-text-2" id="text-1">
- <p>
- System is implemented in Java because:
- </p>
- <ul class="org-ul">
- <li>It scales well to handle great complexity.</li>
- <li>It is easy to refactor and experiment with.</li>
- <li>It is fast enough thanks to Java virtual machine just-in-time compiler.</li>
- <li>Easy to run on various hardware platforms and operating systems.</li>
- </ul>
-
- <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.
- </p>
-
- <p>
- Also CPU rendering allows to easily test different rendering algorithms and
- retains complete control of every rendered pixel.
- </p>
- </div>
- </div>
-
-
- <div id="outline-container-orgheadline2" class="outline-2">
- <h2 id="orgheadline2"><span class="section-number-2">2</span> Software development</h2>
- <div class="outline-text-2" id="text-2">
- <p>
- Instructions to embed Sixth-3D in your project as a library. Maven *pom.xml*
- file snippet:
- </p>
- <div class="org-src-container">
-
-<pre class="src src-xml"><<span style="color: #bc6ec5; font-weight: bold;">dependencies</span>>
+<div id="content" class="container">
+<div class="row"><div class="col-md-9"><h1 class="title">Sixth 3D - 3D engine</h1>
+
+<div id="outline-container-sec-1" class="outline-2">
+<h2 id="sec-1"><span class="section-number-2">1</span> General</h2>
+<div class="outline-text-2" id="text-1">
+<ul class="org-ul">
+<li>This is a subproject of parent project: <a href="https://www3.svjatoslav.eu/projects/sixth/">Sixth</a>.
+</li>
+
+<li>This program is free software: you can redistribute it and/or modify
+it under the terms of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License</a> as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+</li>
+
+<li>Program author:
+<ul class="org-ul">
+<li>Svjatoslav Agejenko
+</li>
+<li>Homepage: <a href="https://svjatoslav.eu">https://svjatoslav.eu</a>
+</li>
+<li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">mailto://svjatoslav@svjatoslav.eu</a>
+</li>
+</ul>
+</li>
+
+<li><a href="https://www.svjatoslav.eu/projects/">Other software projects hosted at svjatoslav.eu</a>
+</li>
+</ul>
+</div>
+
+<div id="outline-container-sec-1-1" class="outline-3">
+<h3 id="sec-1-1"><span class="section-number-3">1.1</span> Source code</h3>
+<div class="outline-text-3" id="text-1-1">
+<ul class="org-ul">
+<li><a href="https://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
+</li>
+
+<li><a href="https://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=summary">Browse Git repository online</a>
+</li>
+
+<li>Clone Git repository using command:
+<pre class="example">
+git clone https://www2.svjatoslav.eu/git/sixth-3d.git
+
+</pre>
+</li>
+
+<li>See <a href="https://www3.svjatoslav.eu/projects/sixth-3d/apidocs/">JavaDoc</a>.
+</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> Project description</h2>
+<div class="outline-text-2" id="text-2">
+<ul class="org-ul">
+<li>See: <a href="https://www3.svjatoslav.eu/projects/sixth-3d-demos/">demos of current 3D engine capabilities</a>
+</li>
+</ul>
+
+<p>
+<a href="#sec-2-1">In software</a>, <a href="#sec-2-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="https://www3.svjatoslav.eu/projects/sixth/">project Sixth</a>.
+</p>
+
+<p>
+Sixth 3D can be also used as standalone <a href="#sec-4">3D engine in your project</a>.
+</p>
+</div>
+
+<div id="outline-container-sec-2-1" class="outline-3">
+<h3 id="sec-2-1"><a id="ID-d03013e5-931b-40ca-bc4b-e4b3f23b9a4e" name="ID-d03013e5-931b-40ca-bc4b-e4b3f23b9a4e"></a><span class="section-number-3">2.1</span> Justification for software rendering</h3>
+<div class="outline-text-3" id="text-2-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>
+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-2-2" class="outline-3">
+<h3 id="sec-2-2"><a id="ID-a11f7150-1b25-4ca4-a3c3-8c8bd1352bd4" name="ID-a11f7150-1b25-4ca4-a3c3-8c8bd1352bd4"></a><span class="section-number-3">2.2</span> Justification for Java</h3>
+<div class="outline-text-3" id="text-2-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
+going for GPU offered brute-force rendering approach).
+</li>
+</ul>
+</li>
+
+<li>No limitations imposed by:
+<ul class="org-ul">
+<li>requirement for decent GPU
+</li>
+<li>GPU missing features
+</li>
+<li>GPU missing/incomplete/buggy drivers
+</li>
+<li>OpenGL specification
+</li>
+</ul>
+</li>
+
+<li>It is fast enough thanks to:
+<ul class="org-ul">
+<li>Java virtual machine just-in-time compiler.
+</li>
+<li>Growing CPU cores count.
+</li>
+</ul>
+</li>
+
+<li>As a result it is easy to run on various hardware platforms and
+operating systems.
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+<div id="outline-container-sec-3" class="outline-2">
+<h2 id="sec-3"><span class="section-number-2">3</span> API documentation</h2>
+<div class="outline-text-2" id="text-3">
+<ul class="org-ul">
+<li>See <a href="https://www3.svjatoslav.eu/projects/sixth-3d/apidocs/">JavaDoc</a>.
+</li>
+</ul>
+
+<p>
+Note: due to a lack of time, there is still big room for improvement
+on documentation.
+</p>
+
+<p>
+So far best resource is to download and explore source code for:
+</p>
+<ul class="org-ul">
+<li>3D engine (<a href="https://www3.svjatoslav.eu/projects/sixth-3d/graphs/">generated code graphs</a> (generated using <a href="https://www3.svjatoslav.eu/projects/javainspect/">JavaInspect</a>))
+</li>
+<li>For API usage examples, see <a href="https://www3.svjatoslav.eu/projects/sixth-3d-demos/">demos</a>
+</li>
+</ul>
+</div>
+</div>
+<div id="outline-container-sec-4" class="outline-2">
+<h2 id="sec-4"><a id="ID-08f71987-90af-40dc-bb65-bac87db9e652" name="ID-08f71987-90af-40dc-bb65-bac87db9e652"></a><span class="section-number-2">4</span> Instructions to embed Sixth-3D in your project</h2>
+<div class="outline-text-2" id="text-4">
+<p>
+Maven *pom.xml* file snippet:
+</p>
+<div class="org-src-container">
+
+<pre class="src src-xml"><<span style="color: #A6E22E;">dependencies</span>>
...
- <<span style="color: #bc6ec5; font-weight: bold;">dependency</span>>
- <<span style="color: #bc6ec5; font-weight: bold;">groupId</span>>eu.svjatoslav</<span
- style="color: #bc6ec5; font-weight: bold;">groupId</span>>
- <<span style="color: #bc6ec5; font-weight: bold;">artifactId</span>>sixth-3d</<span
- style="color: #bc6ec5; font-weight: bold;">artifactId</span>>
- <<span style="color: #bc6ec5; font-weight: bold;">version</span>>1.0</<span
- style="color: #bc6ec5; font-weight: bold;">version</span>>
- </<span style="color: #bc6ec5; font-weight: bold;">dependency</span>>
+ <<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.1</<span style="color: #A6E22E;">version</span>>
+ </<span style="color: #A6E22E;">dependency</span>>
...
-</<span style="color: #bc6ec5; font-weight: bold;">dependencies</span>>
+</<span style="color: #A6E22E;">dependencies</span>>
-<<span style="color: #bc6ec5; font-weight: bold;">repositories</span>>
+<<span style="color: #A6E22E;">repositories</span>>
...
- <<span style="color: #bc6ec5; font-weight: bold;">repository</span>>
- <<span style="color: #bc6ec5; font-weight: bold;">id</span>>svjatoslav.eu</<span
- style="color: #bc6ec5; font-weight: bold;">id</span>>
- <<span style="color: #bc6ec5; font-weight: bold;">name</span>>Svjatoslav repository</<span
- style="color: #bc6ec5; font-weight: bold;">name</span>>
- <<span style="color: #bc6ec5; font-weight: bold;">url</span>>http://www2.svjatoslav.eu/maven/</<span
- style="color: #bc6ec5; font-weight: bold;">url</span>>
- </<span style="color: #bc6ec5; font-weight: bold;">repository</span>>
+ <<span style="color: #A6E22E;">repository</span>>
+ <<span style="color: #A6E22E;">id</span>>svjatoslav.eu</<span style="color: #A6E22E;">id</span>>
+ <<span style="color: #A6E22E;">name</span>>Svjatoslav repository</<span style="color: #A6E22E;">name</span>>
+ <<span style="color: #A6E22E;">url</span>>http://www2.svjatoslav.eu/maven/</<span style="color: #A6E22E;">url</span>>
+ </<span style="color: #A6E22E;">repository</span>>
...
-</<span style="color: #bc6ec5; font-weight: bold;">repositories</span>>
+</<span style="color: #A6E22E;">repositories</span>>
</pre>
- </div>
-
- <p>
- <a href="http://www2.svjatoslav.eu/projects/sixth/codegraphs/">Auto-generated graphs for parts of
- Sixth-3D code/architecture</a> using <a
- href="http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html">this tool</a>
- </p>
- </div>
- </div>
</div>
-<div id="postamble" class="status">
- <p class="author">Author: Svjatoslav Agejenko</p>
- <p class="date">Created: 2016-08-03 Wed 23:15</p>
- <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
+
+<p>
+For API usage examples, see <a href="https://www3.svjatoslav.eu/projects/sixth-3d-demos/">demos</a>.
+</p>
+</div>
+</div>
+<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>
+</ul>
+</div>
+<div id="outline-container-sec-5-1" class="outline-3">
+<h3 id="sec-5-1"><span class="section-number-3">5.1</span> Render only visible polygons</h3>
+<div class="outline-text-3" id="text-5-1">
+<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>
+</div>
+</div>
+</div>
+</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. General</a>
+<ul class="nav">
+<li><a href="#sec-1-1">1.1. Source code</a></li>
+</ul>
+</li>
+<li><a href="#sec-2">2. Project description</a>
+<ul class="nav">
+<li><a href="#sec-2-1">2.1. Justification for software rendering</a></li>
+<li><a href="#sec-2-2">2.2. Justification for Java</a></li>
+</ul>
+</li>
+<li><a href="#sec-3">3. API documentation</a></li>
+<li><a href="#sec-4">4. Instructions to embed Sixth-3D in your project</a></li>
+<li><a href="#sec-5">5. features to add</a>
+<ul class="nav">
+<li><a href="#sec-5-1">5.1. Render only visible polygons</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</nav>
+</div></div></div>
+<footer id="postamble" class="">
+<div><p class="author">Author: Svjatoslav Agejenko</p>
+<p class="date">Created: 2020-01-29 K 21:30</p>
+<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 26.1 (<a href="http://orgmode.org">Org-mode</a> 9.1.9)</p>
</div>
+</footer>
</body>
</html>