@notch has recently been posting on an engine he is developing. He claims that it is voxel-based and supports deformable terrain, with a render distance of almost 1000 000 voxels and real-time reflections, running at 99fps in WebGL. Even with heavy LOD reduction, such a thing sounds too good to be true. He has not published any source code as of now, so does anyone have an idea how this is done? Is it just many small optimizations or could this be a new approach to real time 3D?

EDIT: He also mentions a "signed density field". What does that mean exactly?

  • $\begingroup$ Notch deleted his old tweets, so we'll probably never know... $\endgroup$ – Tau Nov 24 '20 at 21:16
  • $\begingroup$ Deve Strawn has compiled a pretty good summary though. $\endgroup$ – Tau Nov 26 '20 at 22:23

Notch's engine most likely works using volume raymarching in a volume field. This means that you shoot rays that move a certain distance and check whether they are inside and object or not. Once they are, they return the position of the colission and some other data.

You can either advance rays by a set amount per step until you hit something or refine the final collision position by doing a binary search along the last walked ray segment once you hit something. Both of these aproaches have the problem that they can overshoot, missing small geometry, or take a large amount of steps to traverse empty space where there is no geometry to hit.

Binary search can add precision and reduce overshoots somewhat but comes at an extra runtime cost for doing a binary search per ray.

Signed distance fields are essentially 3d arrays tell you how far away from any surface you are. This allows you to do raymarching with ray step sizes equal to that number and being sure that you wont overshoot, as well as stepping through large empty spaces quite quickly. This greatly enhances performance and reduces overshoots from a regular step size or binary search based approach.

This last technique trades off runtime speed for precompute time and extra memory. So it is not always adequate for rendering exteriors or large scenes. Its memory usage an runtime speed can be further improved by using a hierachical data structure that gets re built every so often with more detail and data density near the camera and less further away from it.

EDIT: Oh it seems i misread density for distance

I really have no idea what a signed density field is. I've never heardthe term before. A quick goolge search throws results that talk about signed distance fields. I would guess it was either a mistake to write that, some obscure tech or something that Notch made up himself.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.