c73dfce15112fb1f30087730f263771e5fb74dca
[sixth-3d.git] / doc / index.html
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 <head>
6     <!-- 2016-08-03 Wed 23:15 -->
7     <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
8     <meta name="viewport" content="width=device-width, initial-scale=1"/>
9     <title>Sixth 3D - 3D engine</title>
10     <meta name="generator" content="Org-mode"/>
11     <meta name="author" content="Svjatoslav Agejenko"/>
12     <style type="text/css">
13         <!-- /*--><![CDATA[/*><!--*/
14         .title {
15             text-align: center;
16             margin-bottom: .2em;
17         }
18
19         .subtitle {
20             text-align: center;
21             font-size: medium;
22             font-weight: bold;
23             margin-top: 0;
24         }
25
26         .todo {
27             font-family: monospace;
28             color: red;
29         }
30
31         .done {
32             font-family: monospace;
33             color: green;
34         }
35
36         .priority {
37             font-family: monospace;
38             color: orange;
39         }
40
41         .tag {
42             background-color: #eee;
43             font-family: monospace;
44             padding: 2px;
45             font-size: 80%;
46             font-weight: normal;
47         }
48
49         .timestamp {
50             color: #bebebe;
51         }
52
53         .timestamp-kwd {
54             color: #5f9ea0;
55         }
56
57         .org-right {
58             margin-left: auto;
59             margin-right: 0px;
60             text-align: right;
61         }
62
63         .org-left {
64             margin-left: 0px;
65             margin-right: auto;
66             text-align: left;
67         }
68
69         .org-center {
70             margin-left: auto;
71             margin-right: auto;
72             text-align: center;
73         }
74
75         .underline {
76             text-decoration: underline;
77         }
78
79         #postamble p, #preamble p {
80             font-size: 90%;
81             margin: .2em;
82         }
83
84         p.verse {
85             margin-left: 3%;
86         }
87
88         pre {
89             border: 1px solid #ccc;
90             box-shadow: 3px 3px 3px #eee;
91             padding: 8pt;
92             font-family: monospace;
93             overflow: auto;
94             margin: 1.2em;
95         }
96
97         pre.src {
98             position: relative;
99             overflow: visible;
100             padding-top: 1.2em;
101         }
102
103         pre.src:before {
104             display: none;
105             position: absolute;
106             background-color: white;
107             top: -10px;
108             right: 10px;
109             padding: 3px;
110             border: 1px solid black;
111         }
112
113         pre.src:hover:before {
114             display: inline;
115         }
116
117         pre.src-sh:before {
118             content: 'sh';
119         }
120
121         pre.src-bash:before {
122             content: 'sh';
123         }
124
125         pre.src-emacs-lisp:before {
126             content: 'Emacs Lisp';
127         }
128
129         pre.src-R:before {
130             content: 'R';
131         }
132
133         pre.src-perl:before {
134             content: 'Perl';
135         }
136
137         pre.src-java:before {
138             content: 'Java';
139         }
140
141         pre.src-sql:before {
142             content: 'SQL';
143         }
144
145         table {
146             border-collapse: collapse;
147         }
148
149         caption.t-above {
150             caption-side: top;
151         }
152
153         caption.t-bottom {
154             caption-side: bottom;
155         }
156
157         td, th {
158             vertical-align: top;
159         }
160
161         th.org-right {
162             text-align: center;
163         }
164
165         th.org-left {
166             text-align: center;
167         }
168
169         th.org-center {
170             text-align: center;
171         }
172
173         td.org-right {
174             text-align: right;
175         }
176
177         td.org-left {
178             text-align: left;
179         }
180
181         td.org-center {
182             text-align: center;
183         }
184
185         dt {
186             font-weight: bold;
187         }
188
189         .footpara {
190             display: inline;
191         }
192
193         .footdef {
194             margin-bottom: 1em;
195         }
196
197         .figure {
198             padding: 1em;
199         }
200
201         .figure p {
202             text-align: center;
203         }
204
205         .inlinetask {
206             padding: 10px;
207             border: 2px solid gray;
208             margin: 10px;
209             background: #ffffcc;
210         }
211
212         #org-div-home-and-up {
213             text-align: right;
214             font-size: 70%;
215             white-space: nowrap;
216         }
217
218         textarea {
219             overflow-x: auto;
220         }
221
222         .linenr {
223             font-size: smaller
224         }
225
226         .code-highlighted {
227             background-color: #ffff00;
228         }
229
230         .org-info-js_info-navigation {
231             border-style: none;
232         }
233
234         #org-info-js_console-label {
235             font-size: 10px;
236             font-weight: bold;
237             white-space: nowrap;
238         }
239
240         .org-info-js_search-highlight {
241             background-color: #ffff00;
242             color: #000000;
243             font-weight: bold;
244         }
245
246         /*]]>*/
247         -->
248     </style>
249     <link rel="stylesheet" type="text/css" href="http://thomasf.github.io/solarized-css/solarized-dark.min.css"/>
250     <script type="text/javascript">
251         /*
252          @licstart  The following is the entire license notice for the
253          JavaScript code in this tag.
254
255          Copyright (C) 2012-2013 Free Software Foundation, Inc.
256
257          The JavaScript code in this tag is free software: you can
258          redistribute it and/or modify it under the terms of the GNU
259          General Public License (GNU GPL) as published by the Free Software
260          Foundation, either version 3 of the License, or (at your option)
261          any later version.  The code is distributed WITHOUT ANY WARRANTY;
262          without even the implied warranty of MERCHANTABILITY or FITNESS
263          FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
264
265          As additional permission under GNU GPL version 3 section 7, you
266          may distribute non-source (e.g., minimized or compacted) forms of
267          that code without the copy of the GNU GPL normally required by
268          section 4, provided you include this license notice and a URL
269          through which recipients can access the Corresponding Source.
270
271
272          @licend  The above is the entire license notice
273          for the JavaScript code in this tag.
274          */
275         <!--/*--><![CDATA[/*><!--*/
276         function CodeHighlightOn(elem, id) {
277             var target = document.getElementById(id);
278             if (null != target) {
279                 elem.cacheClassElem = elem.className;
280                 elem.cacheClassTarget = target.className;
281                 target.className = "code-highlighted";
282                 elem.className = "code-highlighted";
283             }
284         }
285         function CodeHighlightOff(elem, id) {
286             var target = document.getElementById(id);
287             if (elem.cacheClassElem)
288                 elem.className = elem.cacheClassElem;
289             if (elem.cacheClassTarget)
290                 target.className = elem.cacheClassTarget;
291         }
292         /*]]>*///-->
293     </script>
294 </head>
295 <body>
296 <div id="content">
297     <h1 class="title">Sixth 3D - 3D engine</h1>
298     <div id="table-of-contents">
299         <h2>Table of Contents</h2>
300         <div id="text-table-of-contents">
301             <ul>
302                 <li><a href="#orgheadline1">1. Project description</a></li>
303                 <li><a href="#orgheadline2">2. Software development</a></li>
304             </ul>
305         </div>
306     </div>
307     <hr/>
308     <ul class="org-ul">
309         <li>This is a subproject of <a href="http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html">Sixth</a></li>
310
311         <li><a href="http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz">download latest
312             snapshot</a></li>
313
314         <li>This program is free software; you can redistribute it and/or modify it under
315             the terms of version 3 of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
316                 License</a> or later as
317             published by the Free Software Foundation.
318         </li>
319
320         <li>Program author:
321             <ul class="org-ul">
322                 <li>Svjatoslav Agejenko</li>
323                 <li>Homepage: <a href="http://svjatoslav.eu/">http://svjatoslav.eu/</a></li>
324                 <li>Email: <a href="mailto://svjatoslav@svjatoslav.eu/">mailto://svjatoslav@svjatoslav.eu/</a></li>
325             </ul>
326         </li>
327
328         <li><a href="http://svjatoslav.eu/programs.jsp">other applications hosted at svjatoslav.eu</a></li>
329     </ul>
330
331
332     <ul class="org-ul">
333         <li>In software, pure Java realtime 3D rendering engine. With the final goal of
334             becoming a platform for buildng 3D user interfaces.
335         </li>
336     </ul>
337
338     <div id="outline-container-orgheadline1" class="outline-2">
339         <h2 id="orgheadline1"><span class="section-number-2">1</span> Project description</h2>
340         <div class="outline-text-2" id="text-1">
341             <p>
342                 System is implemented in Java because:
343             </p>
344             <ul class="org-ul">
345                 <li>It scales well to handle great complexity.</li>
346                 <li>It is easy to refactor and experiment with.</li>
347                 <li>It is fast enough thanks to Java virtual machine just-in-time compiler.</li>
348                 <li>Easy to run on various hardware platforms and operating systems.</li>
349             </ul>
350
351             <p>
352                 3D rendering is done in software, 100% pure Java on CPU. At least for now.
353                 Modern CPU cores count keeps growing and therefore rendering by CPU is not as
354                 expensive as it used to be for the old single core systems.
355             </p>
356
357             <p>
358                 CPU rendering performance is already good enough to implement usable 3D UI at
359                 sufficient detail level, resolution and frame rate.
360             </p>
361
362             <p>
363                 Pure Java also means easy portability and installation. No need to deal with
364                 platform specific dependencies.
365             </p>
366
367             <p>
368                 Also CPU rendering allows to easily test different rendering algorithms and
369                 retains complete control of every rendered pixel.
370             </p>
371         </div>
372     </div>
373
374
375     <div id="outline-container-orgheadline2" class="outline-2">
376         <h2 id="orgheadline2"><span class="section-number-2">2</span> Software development</h2>
377         <div class="outline-text-2" id="text-2">
378             <p>
379                 Instructions to embed Sixth-3D in your project as a library. Maven *pom.xml*
380                 file snippet:
381             </p>
382             <div class="org-src-container">
383
384 <pre class="src src-xml">&lt;<span style="color: #bc6ec5; font-weight: bold;">dependencies</span>&gt;
385     ...
386     &lt;<span style="color: #bc6ec5; font-weight: bold;">dependency</span>&gt;
387         &lt;<span style="color: #bc6ec5; font-weight: bold;">groupId</span>&gt;eu.svjatoslav&lt;/<span
388             style="color: #bc6ec5; font-weight: bold;">groupId</span>&gt;
389         &lt;<span style="color: #bc6ec5; font-weight: bold;">artifactId</span>&gt;sixth-3d&lt;/<span
390             style="color: #bc6ec5; font-weight: bold;">artifactId</span>&gt;
391         &lt;<span style="color: #bc6ec5; font-weight: bold;">version</span>&gt;1.0&lt;/<span
392             style="color: #bc6ec5; font-weight: bold;">version</span>&gt;
393     &lt;/<span style="color: #bc6ec5; font-weight: bold;">dependency</span>&gt;
394     ...
395 &lt;/<span style="color: #bc6ec5; font-weight: bold;">dependencies</span>&gt;
396
397 &lt;<span style="color: #bc6ec5; font-weight: bold;">repositories</span>&gt;
398     ...
399     &lt;<span style="color: #bc6ec5; font-weight: bold;">repository</span>&gt;
400         &lt;<span style="color: #bc6ec5; font-weight: bold;">id</span>&gt;svjatoslav.eu&lt;/<span
401             style="color: #bc6ec5; font-weight: bold;">id</span>&gt;
402         &lt;<span style="color: #bc6ec5; font-weight: bold;">name</span>&gt;Svjatoslav repository&lt;/<span
403             style="color: #bc6ec5; font-weight: bold;">name</span>&gt;
404         &lt;<span style="color: #bc6ec5; font-weight: bold;">url</span>&gt;http://www2.svjatoslav.eu/maven/&lt;/<span
405             style="color: #bc6ec5; font-weight: bold;">url</span>&gt;
406     &lt;/<span style="color: #bc6ec5; font-weight: bold;">repository</span>&gt;
407     ...
408 &lt;/<span style="color: #bc6ec5; font-weight: bold;">repositories</span>&gt;
409 </pre>
410             </div>
411
412             <p>
413                 <a href="http://www2.svjatoslav.eu/projects/sixth/codegraphs/">Auto-generated graphs for parts of
414                     Sixth-3D code/architecture</a> using <a
415                     href="http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html">this tool</a>
416             </p>
417         </div>
418     </div>
419 </div>
420 <div id="postamble" class="status">
421     <p class="author">Author: Svjatoslav Agejenko</p>
422     <p class="date">Created: 2016-08-03 Wed 23:15</p>
423     <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
424 </div>
425 </body>
426 </html>