Muli3D is a platform-independent software rendering library, which implements features of current-generation graphics cards. Clean code and functionality, which exceeds features of current hardware in specific areas, make Muli3D well suited for prototyping and research of new effects.
Muli3D is written in C/C++. The SDK, which is available for download, comes with documented source-code, an application framework and several samples which present different aspects of Muli3D.
Here are some key features of "Muli3D":
· 16/32bit color-output
· Wireframe and solid fill rendering
· Sub-pixel accuracy
· Vertex- and pixel shaders - Vertex shaders transform vertices to projection-space and set up registers for the pixel shader. Pixel shaders calculate a pixel's color and (optionally) its depth.
· Depth-correct interpolation of shader registers
· Support for triangle-lists, strips and fans
· Rendering of primitives through indexing into a vertex buffer
· 16-bit and 32-bit index buffer formats
· Multiple vertex data streams
· Three triangle-subdivision modes - Simply, smooth (simplified implementation of ATI's TruForm) and adaptive (base for displacement-mapping).
· Homogenous clipping
· Backface culling
· Floating point textures depth- and framebuffers - Muli3D supports floating point textures, which can serve as input for shaders or output as depth- or framebuffer.
· Standard 2d textures, cubemaps and volume textures
· Point-sampling, bilinear and trilinear filtering supported
· Wrap and clamp texture addressing modes
· Texture sampling in vertex- and pixelshaders
· No internal limits on texture dimensions - supported formats are single float up to four floats.
· Rendering to cubemap faces - they can be treated as standard 2d textures and therefore may be used as frame- or depthbuffers.
· Rendertargets are directly presented - no rendering to a backbuffer is necessary!
· Comprehensive math-library - with support for vectors, planes, quaternions and matrices.
What's New in This Release:
· Cleaned up project workspace.
· Depthbounding allows the restriction of drawing operations to a specified depth range.
· Fixed typo CMuli3DVertexFormat::iGetNumVertexElement[e]s().
· Added copy-constructors to math-classes.
· Other minor changes which resulted in negligible performance increase.