This project is read-only.

Xen feature overview

There are two major parts to the xen project, the core Xen library and Xen.Ex extensions library.
This is a list of the major features of Xen/Xen.Ex.

jump to: Xen.Ex, Feature Roadmap


  • Complete replacement of the XNA Effect system (read more)
    • Edit/Compile time type checking and validation
    • CustomTool based, generates code at compile time and after edits
    • Automatic binding from semantics
    • Simple application wide global shader constants
    • No worrying about shader world / view / projection matrices
  • Simple Vertex/Index buffers (read more)
    • No worrying about VertexDeclarations, Streams etc
    • Shader system makes sure vertex shader input matches the vertex buffer
    • Classes for simpler hardware instancing (stream frequency) with Xbox emulation
    • Easy dynamic data - change the source data and call 'SetDirty()'
    • No worrying about ContentLost situation
  • Lightweight implementation classes and interfaces
    • IDraw, IUpdate, ICullable, IContentOwner...
    • No heavy interfaces or abstract classes to implement
  • Draw and Update state encapsulated within state objects
    • Provides access patterns to features based on context
    • Most applications will never need to directly access the GraphicsDevice
  • Efficient render state management (read more)
    • Majority of RenderState stored in 16 bytes (the size of a Vector4)
    • Eliminates redundant state changes on the GraphicsDevice
    • Push/Pop/edit render state - very fast and efficient storage
  • Simpler render targets (read more)
    • Manages XNA’s render targets and depth buffers
  • Simple 2D/3D Camera system
    • Efficient system for on screen culling
    • No worrying about view / projection matrices
  • Stack based World matrix
    • Push/Pop, PushMultiply/PushTranslate, Replace
    • Similar to OpenGL matrix stack
  • Interface for content load/unload, for handling device resets
  • Task based threading system
    • Efficient wait system using 'work stealing'
  • Update logic system for objects implementing IUpdate
    • Objects specify update frequency at will
    • Large range of update frequencies, from 60hz to 1hz and once per frame
    • Optional asynchronous updates to automatically update multiple objects on multiple threads
  • Input management
    • Keeps input consistent for the entire logic frame
    • 'Virtualised' gamepad with button remapping
    • Keyboard/Mouse can be emulated as a gamepad


  • Extended camera support
  • Powerful MaterialShader
    • Similar to BasicEffect, using shader model 2.0
    • Supports up to 10 lights (6 per vertex, 4 per pixel or 2 per pixel with specular)
    • Lights can be directional or point lights, stored in a LightCollection
    • Each light can have it's own lighting equation (constant, linear and quadratic terms)
    • Texture and Normal mapping supported
    • Animation skinning with support for up to 71 bones
  • Model importer with animation support
    • Lossy/lossless Animation compression (default is ~10:1)
    • Threaded animation blending
    • High performance animation on the Xbox 360
  • Transform structure (Decomposed matrix)
    • Compressed transform stream readers/writers
    • Used to store compressed animations, ideal for compressing network data
  • Image filters
    • Exact blur and down-sample
  • Geometry primitives
  • 2D Graphics primitives
    • Sprites and text regions (with text formatting such as justification)
  • On screen overlay displaying many statistics for the frame (read more)

Feature Roadmap:

With Xen 1.4 now released, the focus will be any bugs that crop up, tweaks to problems where users have trouble with the API and on future extensions for Xen.Ex.

Most of my time working on xen is currently being put into supporting users, testing, bug fixing and adding low-cost features where I can.

Currently, the feature most likely to appear in future versions of Xen.Ex is a deferred rendering system.
An experimental version of this system is working. This includes basic shadow mapping for point and spot lights.
However for easier integration, additions to the material system will probably be required.

Likely other changes include:
Direct manipulation of animation bones

Possible other changes include:
Render state masking
Extended ICullPrimitive (Possible inclusion of other primative types)

Long range experiments:
Multithreaded rendering (Xen is designed with this in mind)
Xbox360 optimizations (Manual tiling is a possibility)
Physics, or at least the basic building blocks of physics (If this were ever released, it would not be a part of Xen/Xen.Ex)

[Home] [Current Release] [Documentation] [Screenshots]

Last edited Nov 26, 2008 at 11:07 AM by StatusUnknown, version 32


No comments yet.