Future Is Bright: Phase 2 Released

We’re excited to announce that Future Is Bright Phase 2, aka Technology.ShadowMap, is now enabled on desktop platforms (Windows and macOS using DX11, Metal, Vulkan) for all developers to use. Windows 10 Store and Xbox support coming next week. Huge thanks to the team who made this happen! It was a long road, but we have finally made it. Kudos to @zeuxcg, @Qiblox, @ConvexRumbler, @Homeomorph, @NeoBuilder101, @vrtblox you are fantastic!

What’s new?

We have added shadow map support to the lighting voxel engine! Now every single object in the scene can cast shadows. Currently, only the Sun and Moon can cast shadows; we can’t do shadows from the local lights (yet) due to some internal voxel lighting limitations, but we will do this for the Future Is Bright Phase 3.

How do I use it?

There are several new options available:

New lighting technology: ShadowMap
image1

Shadow Softness property which allows you to specify how blurry the shadows are
image3

And you can now control if a part casts shadows by using the new CastShadow property. This property also affects voxel shadows.
image4

How does this work?

Shadow mapping is a common way to do shadows for games. Our task is for each pixel on the screen to determine if this pixel is visible from the light perspective or not; in other words, we have to solve the visibility problem. To solve this visibility problem, we can render the scene from the light’s point of view into an offscreen texture (shadow map). For each pixel of this texture, we will store distance from the light to the nearest shadow caster.
Then for each pixel on the screen, we can compare the current distance to the light source with the distance that we saved in shadow-map. If current pixel distance is greater than stored distance than this pixel are in shadow otherwise pixel is lit.
Of course, this description is oversimplified, and there are tons of different details, tricks, and optimizations to make it fast. But I hope you get the point, for the shadow-maps we should render the scene at least twice; the first time to generate shadow-map itself and the second time to render a scene.
That is why from a performance perspective it is crucial to render as few objects as possible. Here are some performance tips:

  • We will never draw objects to the shadow map with CastShadow property disabled; this is an excellent way to save some performance. For example, if your game has lots of grass meshes, you probably want to disable shadow casting for them.
  • We will try not to re-render static objects. If your object is not moving this will save some performance
  • Unfortunately, when then sun direction changes we have to invalidate our cached shadow maps. The less frequently sun moves, the better for performance. Try to do not change the time of day frequently; you may want to consider moving sun in short bursts and waiting between these, like some games (Skyrim) do.

What’s next?

We’re already working hard on phase 2 for the mobile platforms iOS, and Vulkan powered Android devices. We’re working even harder on phase 2.5 which will introduce more realistic physically based specular highlights from the materials and image-based lighting.

We also hope to implement even more performance optimizations for lower end desktop systems to make shadows work better everywhere.

At this time we don’t plan to implement shadow map support for OpenGL or Direct3D 9 systems. If you use OpenGL in Studio intentionally, please switch to Automatic or Vulkan/Metal depending on the platform.

We’re super excited, and we are looking forward to seeing how your games will look like with this new awesome feature!

Known bugs

We have a couple of known issues that will be fixed soon; we’ll update this post when fixes go live:

  • Decals on parts with CastShadows=False still cast shadows Fixed some time in May 2019
  • On mobile, ShadowMap reverts to Legacy instead of Voxel Fixed on 5/15/2019
372 Likes

This is amazing! More customization for shadow Map!

  • More customization property’s for shadow map
  • Windows 10 store Xbox support coming soon

Wow! never thought it can get any better!

I can’t wait until mobile support comes out!
This is revolutionizing ROBLOX next level

38 Likes

This is a big step towards highly realistic roblox gameplay. Seeing this really makes me excited for whats to come! I really hope that we get to see some new post-processing options next to this. Kudos to the Roblox Engineers for pushing limits!

26 Likes

This is a huge contribution to the realism and improvement of graphics in Roblox games. Good job!

18 Likes

Can’t wait to see how games will utilize this!

16 Likes

:clap: thank :clap: you :clap: for :clap: this :clap: blessing :clap:
we’re starting to look like unity folks, now all we have to do is wait for phase 3, foilage, and procedural skies, and you probably wouldn’t even be able to tell it was roblox anymore. :sunglasses:

37 Likes

Exciting to see how games are gonna use this

7 Likes

This looks great, can’t wait to see what developers can use this lighting technology with to create picturesque games!

8 Likes

Finally this will give us a chance to get a better looking game. Might I also point out how there should be actual reflectance other than the sky box showing more and more.

12 Likes

We’ve been messing around with ShadowMap lighting all week. Super excited for this!

some eyecandy:

80 Likes

That map in the OP is absolutely fantastic and it didn’t look like a typical Roblox map when I only had a quick glance at it. I really need to start learning how to build, right now.

12 Likes

That actually looks really beautiful with all the lighting. Good job dude

8 Likes

I love the realism it applies to my builds despite it only being phase 2!

131 Likes

The future it’s not bright, is shadowy, but is too realistic :joy:

16 Likes

This is a very big step for Roblox transitioning into a wider known game engine and for it to solidify itself.

While during the studio beta there was minimal lag when shadowmap was enabled. However there is some noise when the shadow passes around 0.1 in smoothness. Not sure if that was just me.

However issues aside I’m very happy that phase 2 is finally released to be fully used in games. Continue the great work Roblox!

9 Likes

This is always something I wanted to see on Roblox, and I’m glad that it’s finally here. In my opinion, lighting realism is one of the coolest and most elevating things Roblox can have. Great job to all the hard working people behind it :+1:.

I can’t wait for the final stage of Future Is Bright

8 Likes

Super excited about the release! Now, games aimed at realism, including one I am working on, can seem even more realistic with the improved lighting and shadows! The team that made this happen did an excellent job! :clap:

7 Likes

Looks really good from what I used when it was in testing or whatever it was just on studio side.

I can’t wait till other light sources can be used in the same way as the sun. Roblox keeps getting better :+1:

5 Likes

Can’t wait till this is used in more games! The future is very bright.

5 Likes

Absolutely stunning aesthetic, and I’m glad to see its going to be used in the games I play every day! Keep on working hard, Roblox!

7 Likes