C# Voxel Engine

Course Project ~ Game Engine Architecture

I participated in the development of this basic game engine in a team of 4 people. The game engine counts on a gameobject system that supports rasterized meshes instancing, an audio manager system, and CPU raytraced objects (cubes, spheres, and octrees).

I was personally in charge of building the hybrid renderer (rasterization + raytracing), the implementation of octrees, and the post-processing pipeline.


Project Overview

This page is a Work In Progress

These gifs show how the engine runs in real time. Each of these displays a specific feature:

  • 1. This shows how the raytraced objects (octree) can overlap with the rasterized ones (RGB cubes). This works thanks to how I implemented a custom depth texture for raytraced objects, which I then merge with the one automatically generated for the rasterized objects. Raytraced objects are rendered into their own texture and then merged with the final frame buffer as a post-process effect.
  • 2. Here I display how quickly octrees are generated (7 levels deep).
  • 3. Rendering the Octrees on the CPU is quite expensive, since they are intended to be used on non-runtime environments. For this reason, when the camera is moving I undersample its render texture, which creates the smearing effect. This allows the user to move around the scene without losing responsiveness due to low framerates.