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:
- 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: - 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.
- 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):
- Open Source and License. This implementation is released under the liberal MIT License, so it is easy use it in your projects.