File: TODO

package info (click to toggle)
3dwm 0.3.1-8
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,368 kB
  • ctags: 2,547
  • sloc: cpp: 11,981; sh: 7,850; ansic: 851; makefile: 287; yacc: 135; lex: 92
file content (118 lines) | stat: -rw-r--r-- 5,044 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
===========================================================================
TODO for 3Dwm -- http://www.3dwm.org

Copyright (c) 2000, 2001 Niklas Elmqvist. All rights reserved.

File created 2000-02-11 by Niklas Elmqvist <elm@3dwm.org>.

File History:
2001-08-28	Minor revision for 0.3.1.
2001-08-16	Minor revision for 0.3.0.
2001-06-10	Minor revision for version 0.2.4.
2001-05-02	Minor revision for version 0.2.3.
2001-04-01	Added server-side animation, particle systems, etc.
2000-11-03	Minor revision for version 0.2.2.
2000-09-20	Major revision for version 0.2.1.
2000-02-12	File created for 3Dwm version 0.1.

===========================================================================

The current incarnation of 3Dwm is merely a prototype of things to
come; there is a lot of things planned for the continued development
of the 3Dwm user environment. Here follows a rough outline of some of
the most important things that (probably) will need to be added to the
system in the future.

NOTE! Please, please understand that this is NOT a list on what's on
the plate for the core developers, this is a *wishlist* of some of the
functionality we would like to see being added to 3Dwm. In other
words, anything on this list is fair game for implementation by
anyone, so just say the word on the mailing list and then go ahead and
implement it!

 * CAVE rendering. Can we use CAVELib here, or do we have to use SGI
   Performer? VRCO, the makers of CAVELib (http://www.vrco.com), has
   promised a multi-threaded version of CAVELib, that will make things
   easier.

 * Font support. Both normal, scalable 2D fonts (TrueType with
   FreeType?) as well as 3D vector fonts. A good starting point would
   be GLTT at gltt.sourceforge.net.

 * 3D sound support. Possibly using the proposed OpenAL (Audio
   Library), but also with the capability to use specialized hardware
   (like the Lake sound system). This should be encapsulated in a
   module of its own.

 * Unicode support. Do we need this? 

 * Documentation. Hacking guidelines, client programmer manual.
 
 * Distributed garbage collection. Tricky issue, we should probably
   associate objects with the client that created them. When the
   client crashes, the objects can be reclaimed. Recommend we do this
   by having a POA for each client.

 * Define the event graph/event propagation scheme.
   Model/View/Controller.

 * View frustrum culling. This should be reasonably simple to
   implement once we have a working bounding volume hierarchy as part
   of the scene graph.

 * Level-of-detail rendering(?). At least static, dynamic may not be
   useful.

 * Big texture splitting moved to client code. The big texture support
   allows 3Dwm to use large textures on hardware that only supports
   256x256 textures (like the 3dfx Voodoo 3). However, this code
   breaks several interfaces in the server, and should be improved.
	
 * Static geometry (as opposed to procedural geometry) should be put
   inside OpenGL compiled vertex arrays (CVAs) for optimum
   performance.

 * Multitexturing support.

 * Optimization and refactoring. Large areas of the code have
   stagnated and need massive cleanup.

 * 3D widget kit.
	
 * Transparency. It would be useful to be able to define geometries to
   have transparent primitives.

 * Server-side animation system. We need this to cut down on network
   traffic so that the client doesn't have to animate stuff on its
   own, but can rather depend on the server to do it for them. What
   kind of an animation system do we use? Keyframe-based? Something
   even more advanced, like bones and inverse kinematics?

 * Particle systems. Very useful special F/X feature that could add
   more power to the display server. Needs to be very general so that
   it can be used for all kinds of particle systems. Keeping this on
   the server side is also good for keeping network traffic
   down. Should probably be turned into a plugin.

 * Plugin system. Need to define the plugin system, handler and plugin
   interface (which should be standardized and used to create a
   KitFactory). All non-essential parts of the system should be
   migrated into plugins to give more flexibility and
   configurability. Look into the possibilities of doing capability
   querying in clients to check the capabilities of the display server
   used.

 * Platform abstraction and platform implementations. We need support
   for as many different hardware platforms as possible (GGI, Win32,
   DirectFB, CAVELib, etc). 3Dwm is all about bridging different
   hardware platforms, like desktop machines, HMDs, and even CAVEs, so
   this is essential.

 * Rendering API abstraction. 3Dwm should support multiple rendering
   APIs, including OpenGL, OSMesa (for software emulation) and
   Direct3D in Win32 environments.

 * Client-side support libraries. We need support libraries for
   different programming languages. There is currently a C++ support
   library (Nobel++), but it would be useful to have support for Java,
   Python, C, etc, as well.