Sébastien Morris

sebw.morris@gmail.com

Back

DirectX11 Render Engine for Voxel worlds

Direct3D11 engine for rendering and simulating voxel worlds. (In development)

A personal project I explored how to render 3D worlds using Direct3D11. This engine focuses on Voxel worlds, using a Minecraft like model as a template. Allowing to visualise and test the use of various rendering and simulation features. This project was created from a base application capable of simply opening and running a Direct3D11 window.

This project is currently in development

Technical features:

Base Rendering Pipeline:

  • Input Assembler creation and setup. With custom vertex layout options (Position, Position and UV, ...)
  • Custom vertex and pixel shaders
  • Buffer handing (Vertex, Index, Constant). With a a generic class type utility functions for vertex buffers for the different vertex layouts and constant buffers for the different matrices (Model, View, Projection). 
  • Render target creation and setup
  • Handling of opaque and transparent passes with Blending and Stencil depth
  • UV and texture handling

Voxel Engine:

  •  Camera class handling view and projection matrices (Use of constant buffer). The matrices are used to apply movement.
  •  Block data utility class for getting block type data and texture UV coordinates.
  •  Functions for creating a single face and for creating a cube with world and UV coordinates, and face orientation. 
  •  Chunk batching of cubes. Use of culling to avoid instancing faces hidden inside the chunk (Transparency handled) 
  •  World generation for handling of multiple chunks

Future improvements:

  • Noise and height map based terrain generation for visualising and simulating larger scale worlds
  • Physics and collision simulation
  • Terraforming (Adding/Removing blocks)
  • Normal mapping
  • Lighting (Diffuse, ambient, specular), with handling of different types of lights (Directional, spot, ...)
  • Physically Based Rendering
  • Reflections and refractions (water, glass, ...)
  • Shadow casting (Shadow and depth maps)

Motivations:

This project was originally started in a rendering programming class, in which I established the base of the render engine and Minecraft like simulation. I am continuing this project because I wanted to take it further by adding more features. Allowing for higher quality and more advanced rendering, with different types of lighting, shadows, physically based rendering, reflections and refractions.

    C++, Dierct3D11

    As this project is still in development all images and videos are still work in progresses