The Depth Engine is my latest project. I have been full time on it since the end of November, 2004. Previous to that I had many different parts of working engine code scattered about the place with which I used to make games. The Depth Engine is an attempt to standardize my code palette, develop a stable tool chain, decrease dependence on DirectX components, and hopefully learn more along the way (which I already have).
I plan to release DE to the public as a set of static libraries when Alpha is achieved. I'll then set up an alpha testing website using PHP and MySQL for bug tracking, etc. That's the plan.
DE uses C++ classes to provide an interface for the developer. To see a list of the classes and a brief description of them you should check out the DE Progress Page. A series of tools are being created for this engine which will allow, for example, drag and drop material (basic and shader) assignment of mesh and sub meshes. Exporters for 3DS Max and Milkshape have been created for DE's animated and static models file formats. Also a physics editor will help assign rigid body physics objects to models, create bounding types, as well as create ropes and cloth for easy import into the engine classes. The rendering engine currently only uses DirectX 9 however care has been made, during development, to support OpenGL at a later time. This includes doing all math calculations using a platform independent library.
The sound and input are based on DirectSound and DirectInput. I may switch the sound to a platform independent library later (any suggestions?). I have no plans to add network support in the alpha version.
Most recently I have been working on the DEFXShader class. The screenshot on my progress page shows a static model with a NPR shader applied. The engine automatically sends the two nearest lights and other stuff to the shader. You can see below how the HLSL FX shader receives the lights, etc.
// DELighting structs // ************************************************************struct sDEShaderLight{ int Type; bool Active; bool LightingActive; float4 Position; float4 Diffuse; float4 Specular; float4 Direction; float Attenuation; float Range; float Theta; float Phi; float Falloff;};struct sDEShaderAmbientLight{ bool Active; float4 Color;}; // Variables // ************************************************************// Sent by user texture ToonTexture;// Sent by parent DEFXShader Object sDEShaderLight DE1NALight; // Nearest Active LightsDEShaderLight DE2NALight; // Second Nearest Active LightsDEShaderAmbientLight DEAmbient; float4x4 DEWorldMatrix;float4x4 DEWorldViewProjMatrix;
Please feel free to make comments or suggestions about the DE.
Neil