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

PBR Materials 1 PBR Materials 2
PBR Indirect Light 1 PBR Indirect Light 2

Area Lights

Area Lights 1

Atmospheric scattering

Seamless ground-to-space transition.

Ground to Space 1 Ground to Space 2 Ground to Space 3

Mars-like atmosphere.

Mars-like Atmosphere

Volumetric clouds and terrain

Volumetric Clouds Clouds With Earth Shadow
Cloudy Demo Scene

Subsurface scattering and transmittance

Subsurface Scattering 1 Subsurface Scattering 2
Transmittance 1 Transmittance 2

Depth of field with bokeh

DOF Focal Point 1 DOF Focal Point 2 DOF Focal Point 3
DOF Face 1 DOF Face 2
DOF Bokeh 1 DOF Bokeh 2 DOF Bokeh 3

Crepuscular rays and lens flare

Crepuscular Rays Lens Flare Lens Flare with Vignette and Film Grain

Screen space glossy reflections with reflection probe fallback

Smooth Surface Reflections Rough Surface Reflections

Motion blur

Subtle Nauseating

Mixed deferred and forward rendering for transparent objects

Transparent Objects