[ <-- back to index ]
xbase_03 3d engine (written in D programming language)
under development
21.04.2008: render system package overview
it looks like many other scenegraphs and it will work like many other SGs (fact!). but mine is written in D. i don't see any progress on ports of existing C/C++ projects or useful native D projects. there are some but too much 3rd party lib dependency abuse, you will need hours to get it running ... and they are all in development or became inactive. so i decided to write my own. of course i was inspired by some of them available on internet: ogre, irrlicht, id software sources and alot of own research..... today i'm getting really real, with full blown scene graph (-package diagram) :D

CURRENT VERSION DEVELOPMENT GOALS (v0.1)
- full OpenGL 1.5 support
- small, easy, extendable and of course, stable
- clear, readable code without fancies
- aiming for NO extenal dependencies (maybe Tango runtime)
- full featured scenegraph for realtime rendering
- materials
- shader support
- technique support
- textures (png)
- models
- animated mesh
- and all the hot stuff that we need....
- basic input handler: keyboard, mouse
- basic sound engine: music, static wav, multichannel
THINKING ABOUT MORE WORK
- Image processing
- Generic textures
- Demo Engine/Demo (Non Linear Animation) editor
- Softsynth
- Terrain renderer
- BSP/Octree
- md5, obj, 3ds model loaders
- generic optimization: dynamic lod, frustum culling
- particle system
- shadows
Sample startup code:
1: // The root object
2: Root root;
3:
4: // Our scene manager, currently only one
5: SceneManager sceneManager;
6:
7: // Our camera
8: Camera myCamera;
9:
10: // Interesting part:
11: // Our scene node, we can have many of them and they arrange in 3d space somehow (we don't need to know at this point)
12: SceneNode mySceneNode;
13: // The good old entity "object"... looks like MVC for 3d engines
14: Entity myEntity;
15:
16:
17: // Just to make it running ;)
18: void main() {
19:
20: // Creates the root object
21: root = new Root();
22:
23: // Registers the scene manager
24: sceneManager = root.createSceneManager("GenericSceneManager", "mySceneManager");
25:
26:
27: // Creates the scene node
28: mySceneNode = sceneManager.createSceneNode("myWorld");
29:
30: // Creates an entity
31: myEntity = sceneManager.createEntity("PlayerEntity", "Player 1");
32:
33: // Links Entity with SceneNode
34: mySceneNode.attachEntity(myEntity);
35:
36: // ---------> enter mainloop