The Voxel Overhaul Project

What is this project?

Voxel lighting technology is obviously not too close to future lighting system. So I decided to make a custom lighting system built on top of voxel (or essentially overhauling it). I plan on turning Voxel into a performant version of future lighting.

This Project is split into phases, there are currently 3:

  • Phase 1: Dynamic Volumetric Lighting
  • Phase 2: Reflections
    -Phase 3: Particle Shadows

Why do I want to do this?

Well It’s because I thought, Voxel is a great lighting system for performance and multi-device support, but its not really on par with future. So I thought, Why not overhaul Voxel?

Phases:

Phase 1: Dynamic Volumetric Lighting

This allows volumetric lighting to be available on roblox! This system is seriously performant, The calculations update 15-24 FPS and depend completely weather the player is within a certain range from the lightsource. This makes it so that not all lightsources with this effect equipped arent always updated all over the map, This has been tested on a low end device and man did it work wonderfully, Here’s a video (the video has a terrible FPS because of roblox recorder):

Phase 2: Dynamic Reflections

Implementation of Dynamic Reflections especially for Voxel (A feature roblox doesnt even have). This is obviously planned to be focused on performance, meaning this is also going to be ranged based and has low quality and a normal (20-30) FPS.

This is currently being made and in testing, I dont have a video rn.

ALright after some testing, I realized a few things:

A low end device can handle 1 surface reflection with a quality of 65x65 with the only issue being significant yet temporary (like a split second) drops in Physics FPS. So its going ot be worse if its more than 1. So I devised a plan to not only make the FPS variable (constantly half or a quater of the player’s physics fps), I also going to make it 15x15 instead of 65x65 for low ends.

Phase 3: Undecided

still trying to figure out how to make voxel even more realistic.

Changes to the project:

I originally wanted to also make a custom shadow renderer, until i realized that Voxel already has them, so its useless.

The Thanks:

Please note that i didnt do this project without some help, So i’ll love to thank everyone who helped me with this project.

10 Likes

Could you describe the process on how you worked on your own lighting system?

1 Like

Will love to, but rn i dont really have enough time to explain the entire process, thats an entire post on its own.

The volumetrics you see are similar to raycasted beams that start off with a set length, and shorten to the raycast hit. This method here does something similar it seems, but one big downside is adding more features like ray bouncing. It adds up over time! There’s great ways to attack it, and this post is starting off strong!

You are 95% correct, great job. Here are a few things:

  1. Said set length is the range of the light ( I probs think you already know that).

  2. Yes, the size of the beam changes depending on the position of the raycast, Just imagine you trying to push through a soft pillow, thats how it works.

  3. Attachments were made and re-used (None of them are deleted and then instanced).

  4. There’s a set range and refresh rate to reduce lag.

However, I have to ask, What do you mean by ray bouncing?

Here’s a little secret:

It was initially a bunch of attachments forming a cube shape that you deform by walking throught them, it was a bit problematic so that got changed.

By ray bouncing, I mean taking objects the rays hit, and casting more rays that depend on the characteristics/color/reflectiveness/refractive properties!