Since the last 'image of the day' of Muli3D in April the library has
undergone a lot of changes - new features have been added, performance
has been optimized and new sample-applications are available:
Muli3D is a platform-independent software-rendering library, which is
available from SourceForge under the
LGPL license. It reimplements a typical graphic-card's pipeline in
software including support for vertex- and pixel shaders,
render-to-texture operations and texture sampling.
Some of its features in detail:
- Muli3D supports three triangle-subdivision modes: Simple-subdivision
splits triangles recursivly a user-defined number of times.
Smooth-subdivison (see screenshot in the upper right corner) is a
simplified implementation of ATI's TruForm: Triangles are recursively
subdivided and their vertices are slightly offset to generate a
smoother-silhouette. The adaptive-subdivision mode splits triangles
until the screen-space area of a single triangle falls below a
user-defined threshold. All modes have one thing in common: For each
newly generated vertex the vertex-shader is called, which allows the
implementation of displacement mapping (see large screenshot) through
texture-sampling in vertex-shaders.
- Muli3D's textures are completely floating-point-based with formats
ranging from single float up to 4 floats per texel. Standard filtering
modes (nearest, bilinear, trilinear for mipmapping) are supported and
texture addressing allows wrapping and clamping.
Textures are used in a very versatile fashion: A texture can serve as
standard input to vertex- and pixel shaders for sampling, but it can
also be used as the colorbuffer or the depthbuffer in a rendertarget.
Individual faces of cubemaps may be treated as normal 2d textures and
can therefore be used for input- and output operations during rendering,
For more details visit the Muli3D webpage at