- Display
- Input Handling
- File Formats
- GUI
- Rendering
- Resource Management
- Scene
- Scripting
- Transformations
- Configurable display modes
- Anti-aliasing
- Refresh rate
- Resolution
- Vsync
- Windowed vs. full screen
- Multi split-screen
- Switching between windowed and full screen
- Keyboard
- Mouse (LMB, MMB and RMB are supported)
- Fonts
- .FONT (Sprite Font) [MAGE Dedicated Format]
- Models, Meshes and Materials
- .MDL (Model) [MAGE Dedicated Format]
- .MSH (Mesh) [MAGE Dedicated Format]
- .MTL (Material) [MAGE Customized Format]
- .OBJ (Wavefront OBJ)
- Texture
- .BMP, .DIB (Windows Bitmap Format)
- .DDS (DirectDraw Surface) [preferred]
- .GIF (Graphics Interchange Format 89a)
- .HDP, .WDP, .JXR (HD Photo, Windows Media Photo, JPEG-XR)
- .ICO (Icon Format)
- .JPG, .JPEG, .JPE (Joint Photographic Experts Group)
- .PNG (Portable Network Graphics)
- .TIF, .TIFF (Tagged Image File Format)
- Properties
- .VAR (Variable Script) [MAGE Dedicated Format]
- ImGui integration
- AA (for HDR, normal and depth buffer)
- No AA
- FXAA (using Max3 tone mapping)
- MSAA (using Max3 tone mapping)
- SSAA (using Max3 tone mapping)
- AO
- voxel cone tracing (not integrated)
- BRDFs (single BRDF/camera)
- Lambertian
- Cook-Torrance, Frostbite:
- D component: Beckmann, Ward-Duer, Blinn-Phong, Trowbridge-Reitz/GGX/GTR2, Berry/GTR1
- G|V component: Implicit, Ward, Neumann, Ashikhmin-Premoze, Kelemann, Cook Torrance, (Correlated) GGX, Smith GGX, Smith Schlick-GGX, Smith Beckmann, Smith Schlick-Beckmann
- F component: None, Schlick, Cook-Torrance
- Color spaces
- All separate colors from material files are expressed in sRGB color space.
- All separate colors from color pickers (i.e. ImGui) are expressed in sRGB color space.
- All separate textures (incl. fonts) are expressed in linear or sRGB color space.
- All internally stored separate colors are expressed in linear color space (for both C++ and HLSL). Exceptions: All internally stored separate colors of ImGui are expressed in sRGB color space. All internally stored separate colors of the voxelization are expressed in LogLuv color space.
- All color calculations (inc. filtering and blending) are performed in linear color space (for both C++ and HLSL).
- Final outputted colors are expressed in a custom gamma encoded color space (i.e. brightness adjustment).
- Culling
- Non-hierarchical light and object culling
- Depth buffer
- Standard and Reversed Z-depth
- 32bit float for depth buffer
- 16bit unorm|32bit float for shadow (cube) maps
- (Temporal) Dithering
- Lighting
- Optional light interaction for materials (i.e. HDR emissive/black body or not)
- Single pass for all lights (incl. shadow mapping)
- Physically-based and smooth angular attenuation for point lights (i.e. omni lights and spotlights)
- Physically-based and smooth distance attenuation for point lights (i.e. omni lights and spotlights)
- Exponential fog with custom density (avoids popping artifacts)
- HDR
- Direct and indirect illumination (voxel cone tracing)
- Reflections (voxel cone tracing)
- Normal Mapping
- Tangent-space (without relying on precomputed tangents and bitangents)
Object-space(not supported any more)
- Post-processing
- Depth-of-field
- Tone Mapping
- AA resolving (SSAA, MSAA, FXAA): Max3, Reinhard
- Back buffer: None, ACES Filmic, Max3, Reinhard, Uncharted
- Render Layers (multiple render layers/camera)
- Bounding volumes
- Wireframes
- Render Modes (single render mode/camera)
- Forward
- Deferred
- False Color, Voxel Grid, Solid, etc.
- Shadow Mapping
- Optional occluding behavior for models
- Support for both opaque and transparent models
- Depth and slope scaled biasing
- PCF filtering
- Directional lights (shadow maps), omni lights (shadow cube maps) and spotlights (shadow maps)
- Sky Domes
- Non-uniform stretching in looking direction
- Sprites
- Fonts, images, ImGui
- Transparency
Alpha-to-Coverage(not integrated any more)- Single layer Alpha Blending
- Fonts
- Models
- Shaders: Vertex, Domain, Hull, Geometry, Pixel, Compute
- Textures
- Camera
- Orthographic
- Perspective
- Light
- Ambient
- Directional (with or without shadow mapping)
- Omni (with or without shadow cube mapping)
- Spot (with or without shadow mapping)
- Model
- Non-emissive
- Emissive (direct illumination supported using VCT)
- Sprite
- Image
- Text
- Custom scripts by overriding
mage::BehaviorScript
- Standard scripts
- Scene hierarchies
- Normal transformations
- Sprite transformations
- Texture transformations
We use the following coordinate frames:
- (Supersampled) Display
- (Supersampled) Viewport (camera dependent)
- Box
- Tangent (generic tangent space)
- Object
- World
- Camera (>0)
- Light (>0)
- Projection
- NDC (NDC z = non-linear depth)
- Shading (generic space; e.g., World, Object, Camera, Light, ...)
- View (generic space; e.g., Object, Camera, Light, ...)
- UV
- UVW
Copyright © 2016-2025 Matthias Moulin. All Rights Reserved.