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 http://filmicworlds.com/blog/linear-space-lighting-i-e-gamma/ (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)