28 Aug 2007

Nebula3 August SDK

Here's the Nebula3 "August SDK". I'm trying to do monthly releases from now on, whether big features are actually ready or not.

Download here.

Keep in mind that this is massive work in progress etc...etc... For instance, if you don't have a SM3.0 graphics card you will very likely hit an assertion when starting the test viewer, there's no code in the application classes which checks the hardware config for compability yet, also some of the executables may hit asserts.

Some of the new stuff:
  • the rendering system is now up and running in a very early state (no lighting, occlusion culling, etc...)
  • FrameShaders (comes with a very simple example frameshader)
  • integrated http-server with some debugging pages
  • (very limited) support for loading Nebula2 resources
  • asynchronous resource loading (the small white cube you see for the first few frames is the placeholder resource which is shown while the actual object is still loading in the background)
  • new input subsystem with support for keyboard, mouse and gamepads (tested with Xbox360 gamepads)
  • minidump-generation when an assert or error is triggered
After installation, go to the start menue and start one of the Test Viewer entries. When it's up and running (should be a tank in front of a green background and a little red box), run "Connect Web Browser" from the start menue. This should start your default web browser, connected to the Nebula3 application, displaying the "main debug page".

The little red cube is the bounding box of the tank. As you can see it doesn't fit, and the tank disappears as soon as the cube is outside the view volume. That's a bug with the Nebula2 legacy resource loaders, the bounding box of the Model isn't updated from the loaded data. But at least it demonstrates that the view volume culling works, he...

The next big feature is probably dynamic lights and shadows. But I don't think this will fit into September. Since lighting is the probably the most important part of a rendering engine, I'll take my time to do it right.


PS: The executables are linked against the April 2007 DirectX SDK. You may have to install a matching runtime for the executables to start (not sure whether MS finally fixed the D3DX DLL hell). Or... just recompile everything with the DX SDK you have on you machine...


larry said...

Its always good to open your blog and find a download.
Would you recommend starting an opengl render device with n3's current status, I want to use it to learn opengl.

Unknown said...

Yea graphics uhmmmm

Kinda makes a gameengine a bit more fun :-)

Think this is the release Ill try experimenting with, thanks!!

Unknown said...

@larry: I didn't have a really close look at OpenGL for a while, but it should be possible. For the Shader-Stuff I would recommend nVidia's CgFX as this implements the same concepts as D3D Effects.

Joe Woynillowicz said...

Our company actually has plans on building an OpenGL/CgFX renderer to allow playable builds before writing for LibGCM (which we may not need to do with our game).

Although I won't be starting on the GL rendersystem until roughly Q1-08, I will definitely submit it to the open source community once it is completed.

Chook said...

Thanks! How do you guys compile this? Foundation project requires idlc.exe, and idlc project requires foundation. I moved original idlc.exe to another folder and changed the path to it in nidl.rules - only this way I could compile everything. 8-)

Unknown said...

Oops, yep, that idlc-thing is kind of a chicken-egg-problem. The easiest way is to simply write-protect the idlc-executable. That way it won't be overwritten during the build process... It would actually be better to separate the idlc into its own VStudio project and not include this into the normal build process...

Unknown said...

I'm looking for core functionality for my project and I think Nebula3 is pretty good for this.
I need only core functionality of Nebula3 (in the future maybe graphics and sound too).
Since my project have to work on Linux system I've ported Nebula2 build system (ask me for sources if you interesting in it). It works ok but only for Win. Now I'm updating system for generating makefile and going to add Linux support to the core of Nebula3 (just port it from Nebula2 :) ).
I'm not sure about final core system I'll choose for my project but for now I'll try Nebula3 one.