This tutorial explains how to create complex 3D shapes inside volumetric shaders. Signed Distance Functions (often referred as Fields) are mathematical tools used to describe geometrical shapes such as sphere, boxes and tori. Compared to traditional 3D models made out of triangles, signed distance functions provide virtually infinite resolution, and are amenable to geometric manipulation. The following animation, from formulanimation tutorial :: making a snail, shows how a snail can be created using simpler shapes:
You can find here all the other posts in this series:
This is the first part of a Unity tutorial dedicated to Volumetric Rendering, raymarching and signed distance fields. These techniques allow us to overcome the biggest limitation of modern 3D engines, which only let us render the outer shell of an object. Volumetric rendering enables the creation of realistic materials that interact with light in a complex way, such as fog, smoke, water and glass. Beautifully crafted effects such as NMZ‘s Plasma Globe (below) would simply be impossible without volumetric rendering.
These techniques are not complicated, but require a lot of steps in order to replicate the aforementioned effects. This tutorial has got you covered.
- Part 1: Volumetric Rendering | An introduction on what rendering volume means, and how it can be done in Unity;
- Part 2: Raymarching | Focuses on the the implementation of distance-aided raymarching, the de-fact standard technique to render volumes;
- Part 3: Surface Shading | A comprehensive guide on how to shade volumes realistically;
- Part 4: Signed Distance Functions | An in depth discussion on the mathematical tools that allow us to generate and combine arbitrary volumes;
- Part 5: Ambient Occlusion | How to implement realistic and efficient ambient occlusion in your volumes;
- Part 6: Hard and Soft Shadows | How to add real shadows to your volumes;
- Part 7: Volume Raycasting | A variant of raymarching that can render semitransparent surfaces such as fog and smoke.
This first part will provide a general introduction to volumetric rendering, and end with a simple shader that will be the base of all our future iterations:
A full Unity package will be available soon. You may want to consider subscribing to the mailing list to stay updated.