The Axiom 3D Rendering Engine is a fully object oriented 3D graphics engine using C# and the .Net platform. Axiom 3D aims to be an easy to use, flexible, extendable, and powerful engine that allows for rapid development of games and other graphical applications. By using the .Net framework as the target platform, developers can focus more on core functionality and logic, rather than dealing with the complexities of languages like C++.
The core of Axiom is a port of the very popular OGRE graphics engine, which was chosen based on its clean object-oriented design, powerful features, and flexibilty. The original port was carried out by Leedgitar, the project founder.
C# codebase built using Visual Studio .NET 2008/2010 running on .Net Framework 2.0 and 4.0.
Game agnostic design, allowing the flexibility for use in a variety of game genres.
Strict adherence to the best practices of .NET framework naming standards and methodologies (i.e. Use of properties instead of GetX()/SetX()). Usage of .NET framework class library wherever possible. No Hungarian notation, other than the "I" prefix for interfaces. Microsoft .NET Coding Guidelines
Flexible plugin architecture for dynamically loading plugin functionality at runtime.
Runs under Mono/Linux
Basic keyboard and mouse input using Managed DirectInput or SDL
Comprehensive C# Math Library, with support for Quaternions, as well as various sizes of Matrices, and Vectors. Operator overloads are implemented as well (not CLS compliant yet however). Math code has been ported over from C++ and has been hand optimized to perform as best as the CLR will allow.
Automatic resource management, for maintaining memory quotas. Supports flexible archive implementation, including folder structures and .zip files using SharpZipLib.
Built in logging support via a log writer that implements TraceListener. All messages are written using Trace.Write.
Support for a variety of image formats, including .png, .jpg, .gif, .tga, with dynamic MipMap generation. .dds files are supported for 2D, Volume, and Cubic textures in both DirextX AND OpenGL via DevIL.
1D, 2D, Cubic, and Volume textures.
Vertex, Pixel, High Level:
Vertex/Fragment programs, including Cg and HLSL high level plugins, as well as support for loading ASM shaders
Vertex/Fragment programs are also fully configurable in the material files, and allow for parameters that instruct the engine to track various states and supply them automatically to the program parameters, such as worldviewproj_matrix, light_position_object_space, camera_position_object_space, etc.
Support profiles at present are: * DirectX 8 - vp_1_1, ps_1_1 - ps_1_4 * DirectX 9 - vp_2_0, ps_2_0 * OpenGL - arbvp1, arbfp1, fp20 (GeForce3/4 Register and Texture Combiners supported via nvparse), vp30/fp30 (GeForceFX).
General, BSP, Octrees, LOD:
Extensible Hierarchical Scene Graph
Octree scene manager plugin which includes a basic heightmap loading scene manager
Keyframe Animation, Skeletal Animation:
Skeletal animation with an Ogre .skeleton file loader. Features include multiple bone assignments per vertex, smooth frame rate scaled blending, and multiple animations can be blended together to allow for seamless animation transitions.
Pose animation allowing for facial animations and more.
Allows animations to be assigned to nodes in the scene graph, allowing objects to move along predefined spline paths.
Mesh Loading, Skinning, Progressive:
Fast Mesh loader support the Ogre .mesh file formats 1.10 and 1.20, now including pre generated LOD levels based on the entitie's distance from the camera.
Exporters for various 3D Modeling programs, including Milkshape and 3dx Max can be downloaded from the Ogre downloads page
Particle systems, extendable via plugins for defining new Emitters and Affectors and definable through Ogre particle scripts.
Support for skyboxes via cubic textures, and sky planes.
2d billboard support, with built in pooling to reduce runtime overhead. Supports sprites, and is also used for the particle system.
Post-process compositor effects for HDR, Bloom, Motion Blur etc.
Fixed-function, Render-to-Texture, Fonts, GUI:
Extensible render system support, via plugins. Current implementations include Tao for OpenGL, and Managed DirectX 9, Xna is under development.
Virtual hardware vertex/index buffer interface, allowing for faster rendering of primitives by placing geometry data in video AGP memory, eliminating the need for keeping it in application memory and copying it over every frame.
Support for Ogre .material files, allowing the flexibility for controlling fixed function render state on a per object basis, in addition to specifying texture blending and texture effects such as scrolling and rotating.
Smart rendering pipeline, with sorting designed to reduce render state changes as much as possible. Transparent objects are also sorted to allow blending into the scene correctly.
Font bitmap support using the Ogre .fontdef format for loading bitmaps based and dynamically generated font bitmaps.