RedBud Engine
RedBud is a real-time rendering and game engine I started working on many years ago. The project was started from scratch and is written entirely in C++. The graphics module provides a unified interface over Direct3D 12 and Vulkan 1.1 implementations, and is designed to work with the lower-level concepts exposed by these APIs. All of the rendering techniques below are fully supported for both backends, and it is straightforward to implement new capabilities that will run on both backends without the need for the implementer to worry about the underlying platform.
Skip past the feature list for screenshots.
Rendering
- Full Direct3D 12 support
- Full Vulkan 1.1 support
- Multi-threaded command list generation and submission
- Deferred rendering
- Forward rendering
- Shadow maps for directional, point, and spot lights
- Cascaded shadow maps for directional lights
- Multi-camera support (split-screen, etc.)
- Physically-based lighting model
- Specialized BRDF for cloth materials
- Real-time environment probe updates
- Real-time convolution of specular environment probes using the split-sum approximation
- Real-time spherical harmonic calculations for diffuse environment probes
- Approximated global illumination
- Area lights
- Atmosphere with multiple scattering
- Volumetric clouds with accurate shadows
- Crepuscular rays for directional lights
- Opaque and transparent geometry
- Screen-space separable subsurface scattering with transmittance
- Screen-space glossy reflections
- Screen-space ambient occlusion
- Depth of field with bokeh
- Motion blur
- Lens flare
- Chromatic abberation
- Vignette
- Film grain
- Bloom
- Tone mapping
- Fast approximate anti-aliasing (FXAA)
- Heightmap terrain
- Text rendering with TrueType font support
Animation
- Skinned models
- Track blending
Math
- Custom math library with vector, matrix, and quaternion types, as well as common functions for each
- Noise library with support for OpenSimplex noise and Worley noise
Physics
- Bullet Physics SDK integration
- Application-level callbacks for customizable, user-defined collision responses
- Mass aggregate system for particle physics
Sound
- 3D audio support
- Reverb
- Mixing of master track channels
- Multiple channels of simultaneously playing sound effects
Networking
- TCP/UDP packet sending and receiving
- Full support for building networked multiplayer games
General Features
- JSON scene, model, and material definitions
- Configuration file support for easy feature-toggling and setting adjustment
- Entity-component system for handling scene object creation, updating, and communication
- Customizable logging
- Model loading from various formats
- .DDS, .PNG, and .JPG texture support
- Keyboard and mouse input support
- Gamepad input support
- Thread pool implementation for running concurrent tasks
- Screenshot capture
Third-Party Libraries
Screenshots
Physically based shading for dielectrics and metals




Area Lights

Atmospheric scattering
Seamless ground-to-space transition.



Mars-like atmosphere.

Volumetric clouds and terrain



Subsurface scattering and transmittance




Depth of field with bokeh








Crepuscular rays and lens flare



Screen space glossy reflections with reflection probe fallback


Motion blur


Mixed deferred and forward rendering for transparent objects
