- General
- Modern C++14 code
- Clean layered design
- Modular & plugin based
- Fully documented
- Platforms: Windows, Linux, macOS
- Renderer
- Vulkan, DX11 and OpenGL 4.5 render backends
- Multi-threaded rendering
- Node based compositor
- Modern high fidelity graphics
- Fast hybrid tiled deferred / clustered forward renderer
- Physically based shading
- Area light sources
- Reflection probes with geometry proxies
- Indirect illumination via irradiance maps
- Screen space reflections
- HDR rendering
- Automatic eye adaptation
- Tonemapping with adjustable curve
- White balance
- Color grading
- Gamma correct rendering
- MSAA (both forward and deferred)
- Shadows
- Percentage closer shadows
- Cascaded shadow maps
- Deferred decals
- Post processing effects
- Screen space ambient occlusion (SSAO)
- Gaussian depth-of-field
- Bokeh depth-of-field
- Bloom
- Lens flare
- Fast approximate anti-aliasing (FXAA)
- Film grain
- Chromatic aberration
- Temporal anti-aliasing (TAA)
- Extensive material & shader system
- Custom high level shading language (BSL)
- Unified shader code for all render backends
- HLSL-based with high level extensions
- Complete material definitions in a single file
- High level concepts like mixins and overloads
- Low level shader parsing and reflection for HLSL and GLSL
- Shader bytecode caching
- Custom high level shading language (BSL)
- Low-level rendering API
- Fully featured, backend agnostic wrapper for Vulkan/DX/OpenGL
- Full support for all SM5 features, including:
- Geometry, tesselation and compute shaders
- Instanced rendering
- Texture arrays and GPU buffers
- Unordered access textures and buffers
- Designed to support the next generation of render backends (i.e. Vulkan), including features:
- Pipeline state objects
- Command lists
- GPU queues (async compute and upload)
- Explicit multi-GPU support
- Fully extensible
- Plugin based render backends
- Plugin based renderer
- Support for renderer extensions
- Asset pipeline
- Built-in support for third party formats:
- FBX, OBJ, DAE meshes
- PNG, PSD, BMP, JPG, etc. images
- OTF, TTF fonts
- OGG, FLAC, WAV, MP3 sounds
- HLSL, GLSL shaders
- Asynchronous resource loading
- Asynchronous resource import
- Resource compression
- Extensible importer system
- Built-in support for third party formats:
- GUI system
- All common GUI controls
- Text
- Image
- Button
- Input box
- Drop down
- Slider
- Checkbox
- Scroll area
- And support for custom controls
- Unicode text rendering and input
- Easy to use layout based system
- Fully skinnable
- Automatic batching for fast rendering
- Supports texture atlases
- Supports arbitrary 3D transformations
- Localization support (string tables)
- All common GUI controls
- Animation
- Skeletal animation with skinning
- 1D and 2D animation blending
- Additive animation support
- Animation events
- Root bone animation
- Animation sockets for animating in-game objects
- Post-processing hooks for IK support
- Blend shape animation
- Multi-threaded and GPU accelerated
- Skeletal animation with skinning
- Input
- Mouse/keyboard/gamepad support
- Provides both raw and OS input
- Virtual input with built-in key mapping
- Virtual axes for analog input devices
- Physics
- Implemented using NVIDIA PhysX
- Multi-threaded for best performance
- Abstract plugin interface extensible for other physics implementations (e.g. Havok, Bullet)
- Supported features
- Colliders (Box, Sphere, Capsule, Mesh)
- Triggers
- Rigidbody
- Character controller
- Joints (Fixed, Distance, Hinge, Spherical, Slider, D6)
- Scene queries
- Collision filtering
- Discrete or continuous collision detection
- Particles
- Dual system
- Multi-threaded CPU simulation
- Hardware accelerated GPU simulation
- Distribution based properties
- Constant
- Random range
- Curve
- Random curve range
- In-depth emission rules
- Primitive emitters
- Box, Sphere, Cone, Rectangle, Circle, Line
- With customizable properties and emission modes
- Static mesh emitter
- Animated (skinned) mesh emitter
- Continous or burst emission
- Variety of tweakable initial particle properties
- Primitive emitters
- Customizable CPU evolver design
- Modify particle properties over their lifetime
- Variety of built-in evolvers provided
- Extensible design to create your own
- Particle collisions
- World collisions with physics objects
- Plane collisions with user defined planes
- Depth buffer based GPU-only collisions
- Texture animation
- Particle sorting
- Billboard or 3D particles
- Soft particle rendering
- Vector field import and simulation
- Dual system
- Scripting
- C# 7.0
- Separate high level engine API
- Integrated runtime for maximum performance
- Full access to .NET framework
- Integration with Visual Studio, MonoDevelop
- Automatic serialization
- Works with custom components, resources or arbitrary types
- Save/load data with no additional code
- Handles complex types (e.g. array, list, dictionary) and references
- Fast and small memory footprint
- Audio
- 3D sounds (panning, attenuation, doppler effect) and 2D sounds (music, narration)
- On-the-fly streaming and decompression
- Multi-channel support up to 7.1 sound
- Multiple listener support for split-screen
- Multiple backends
- OpenAL
- FMOD
- Extensible to others
- Other
- CPU & GPU profiler
- Advanced run-time type information for C++ code
- Iterate over class fields, safely cast objects, clone objects, detect base types
- Find references to specific objects (e.g. all resources used in a scene)
- Serialize/deserialize with no additional code and with automatic versioning
- Generate diffs
- Vector (SIMD) instruction API
- Compiles transparently to all popular instruction sets
- SSE4.1, AVX, AVX2, AVX512 NEON, NEONv2 and others
- Utility library
- Math
- File system
- Events
- Thread pool
- Task scheduler
- Logging
- Debug drawing
- Crash reporting
- Unit testing
- Custom memory allocators