/Generic-Raymarch-Unity

An experiment in distance field raymarching that interacts with standard mesh-based objects. Made in Unity.

Primary LanguageC#MIT LicenseMIT

Distance Field Raymarcher for Unity

This is an implementation of Distance Field Raymarching in the Unity game engine. It was created to be used as a reference implementation in future projects. For a comprehensive technical writeup about how Distance Field Raymarching works, see this article on my blog.

Below are a few of the major features of this implementation:

  1. Complete Implementation of Distance Field Raymarching. This repository demonstrates how to construct a fully working implementation of Distance Field Raymarching. Using this repository as a base, you can focus on implementation details instead of the more technical aspects of raymarching. Additionally, I include a number of useful Distance Field primitives (sphere, box, torus, cylinder, etc) and Combine Operations (Union, Intersection, Subtraction) - see DistanceFunc.cginc for details. Below is a gif of the included demo scene:
  2. Interaction with mesh-based Objects. This implementation takes Unity's depth buffer into account, so your raymarched objects can intersect and interact with traditional mesh-based objects.
  3. Heatmap-based Performance Testing. The system has support for heatmap-based performance testing using a color ramp. Below is an example of this output (red = many samples per pixel, blue = fewer samples):
  4. Open Source and License. This implementation is released under the liberal MIT License, so it is easy use it in your projects.