Axiom Features - Axiom : A 3D Rendering Engine in C#

Axiom Features

From Axiom

Jump to: navigation, search



  • 100% C# codebase built targeting the .Net Framework 2.0
  • Design and architecture based on OGRE (Object-Oriented Graphics Rendering Engine).
  • Flexible design allows for Axiom to be integrated into other projects for use as the rendering “middleware”.
  • 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 extending core functionality at runtime.


  • The core engine has no platform specific code. Platforms specific details are handled via PlatformManager plugins.
  • 100% fully support on Windows platforms that support the .Net framework.
  • Full support is in the works for Posix based platforms such as Linux and OsX. Axiom has been successfully compiled and run so far on Fedora Core 2 and Gentoo using Mono for the runtime.
  • Project file generation via DotNetPreBuild eliminates the need for manually managing build environments for various platforms.
  • NAnt build system eliminates the need to use an IDE for build environment.
  • SDL platform manager included for GL context management and input on Linux.


  • Extensible Hierarchical Scene Graph
  • Extensible render system support via plugins. Current implementations include Tao for OpenGL, and Managed DirectX.
  • Virtual hardware vertex/index buffer interface, allowing for transparent access to either software or hardware geometry buffers.
  • Basic keyboard and mouse input using Managed DirectInput on Windows and SDL on Linux
  • Particle systems, extendable via plugins for defining new Emitters and Affectors and definable through Ogre particle scripts.
  • 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. 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.
  • Vertex/Fragment programs. Full support for low level shaders written in assembler, as well as all current high level shader language implementations (Cg/DirectX HLSL/GLSL)

Support profiles at present are: o DirectX 8 - vp_1_1, ps_1_1 - ps_1_4 o DirectX 9 - vp_2_0, ps_2_0 o OpenGL - arbvp1, arbfp1, fp20 (GeForce3/4 Register and Texture Combiners supported via nvparse), vp30/fp30 (GeForceFX).

  • Spherical Environment mapping.
  • Easy to use Render to Texture functionality.
  • Several robust shadow implementations. Included are Additive Stencil (i.e. Doom III), Modulative Stencil, and Texture based shadows. Stencial shadows are only support for models that are closed manifold.
  • Octree scene manager plugin which includes a basic heightmap loading scene manager.
  • 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.
  • Fast Mesh loader support the Ogre .mesh file formats 1.10 and 1.20, now including pre generated LOD levels based on the entity's distance from the camera. Exporters for various 3D Modeling programs, including Milkshape and 3ds Max can be downloaded from the Ogre downloads page here.
  • Dynamic lighting.
  • Key frame animation support. Currently allows animations to be assigned to nodes in the scene graph, allowing objects to move along predefined spline paths.
  • Comprehensive C# Math Library, with support for Quaternions, as well as various sizes of Matrices, and Vectors. Operator overloads and methods are provided. Math code has been ported over from C++ and has been hand optimized to perform as best as the CLR will allow.
  • 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.
  • 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.
  • Automatic resource management, for maintaining memory quotas. Supports flexible archive implementation, including folder structures and .zip files using SharpZipLib.
  • Extendable controller support, allowing a wide variety of automated effects at runtime. Built in examples will include sin wave driven light flashing, rotating objects about an axis, and texture scrolling.
  • Font bitmap support using the Ogre .fontdef format for loading bitmaps based and dynamically generated font bitmaps.
  • 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.

External Links Entry for Axiom - The entry in's comprehensive 3D engine database describing Axiom's features (some may be included that are not list here as well) and including reviews of the engine. Please post a review here to provide feedback and increase visibility for the engine.

Powered by MediaWiki GNU Free Documentation License 1.2