So let me start by saying that we actually read things that you post Feedback is welcome, even if itâs negative (but please be polite and respectful of the work weâve done), but keep in mind that we may disagree with some of it and as a result not act on it.
Why did we introduce Compatibility if itâs so obviously different than Legacy and looks worse? Well, looking better was never the point of Compatbility. Let me walk you through the decisions weâve made and explain why we made them.
Roblox in the old days had very primitive lighting. Iâm sure some of you remember the days where there was just the sun with no shadows - I surely do because my first project was to build a dynamic lighting system. (stencil shadows donât count, ShadowMode: All was not available in-game as an official feature) The foundation of the lighting system is a rendering equation, and the one we used worked like this: it took the color of the part, took the lighting value computed using directional light, and multiplied the RGB values together. If lighting was 1 (which you could easily get by maxing out Ambient or Brightness), you got the exact same color you used - plain and simple.
Thing is, real world doesnât work like this. When we built the original Future Is Bright prototype, we very quickly realized that to get where we need to be in the future, which is âawesome visualsâ, we need to use a more realistic model of the real world lighting equation. This needs two foundational components:
- High Dynamic Range. This means intermediate values arenât clamped to 1, which is why you can get high contrast between lit and shadowed areas.
- Linear space lighting. This means all equations must be performed in a different space compared to sRGB that youâre used to seeing in color pickers et al - in this space, values correspond to amount of physically emitted light in a linear fashion. I donât want to go in too much detail about âwhyâ here, but thereâs a lot of good material on the web, in particular Linear-Space Lighting (i.e. Gamma) â Filmic Worlds (take a look at the image in the beginning - this shows that in the sRGB space youâre all used to, the color âin betweenâ 255 and 0 perceptually is not 128 - itâs 192! 192 maps to 0.5 in linear space, making the math correct.
Once you have to have high dynamic range, you also have to have a tone mapper - it remaps higher-than-1 values to 0âŚ1 range that can be displayed on conventional display panels. The process of making a tonemapper is on the intersection between art & science, but we had to make one - itâs a critical piece of the system.
And this is almost all there is to it about Voxel. We need HDR. We need linear-space lighting. We need a tone-mapper. Once you accept the fact that you need to model real-world optics, you just canât get away from these things. The only other component of Voxel is anisotropic occupancy - itâs an extension to our voxel grid that makes it so that thin parts donât let light through. (the current implementation is limited in that it still lets light leak through corners which is something we want to address in the future)
This is also where concerns about âvibrant colorsâ come in. Take a look at this picture from Unityâs docs:
Do colors in gamma space look more vibrant at Intensity 1? Uh, I guess. But thatâs not how the real world works. And higher intensity values result in really blown out images, which is bad when you start talking about HDR and modeling real-world lighting values.
This is why we made Voxel. ShadowMap is based on the exact same math. This is the foundation for our future improvements that add light shadows and more precise local lights as well (aka FIB v17).
We strongly believe this is how content should be built. We strongly believe content looks better within this new mathematical formulation. It seems like the majority of the community agrees - you can get much better quality with the new system.
Voxel isnât perfect. Thereâs some technical limitations wrt shadow fidelity, light leaking; thereâs also issues with specular highlights that fundamentally stem from the fact that when youâre modeling real world, but every single surface with a custom texture behaves like painted plastic, things donât look so good. We will be addressing these with future updates but even given these limitations, Voxel is a superior system.
Which brings us to the question of existing content. (and I need a break)