Custom cube-maps for reflections independent of the skybox

As a Roblox developer, It’s too hard to add good reflections to graphically complex scenes.

Reflections have always been eye-candy in games, so when I started developing in Studio I got excited when i saw the ‘Reflectivity’ slider while having a Basepart selected. After tuning with it, I was a bit disappointed as the only thing that was reflected was the sky. Months later when I’m decorating a game, I felt like reflections would make the whole thing seem complete. But after a lot of searching I could not find a solution other than cloning the scene and flipping it around, which would double the parts in my game.

Standard reflections in Roblox are currently subpar and are outclassed by almost any high-budget game from the early 2000s. An example for this is Halo Combat Evolved (A game from 2001.), which handles reflections in the same way: Projecting the 6 sky textures onto the surface. This method works great when the player is outside, but it just doesn’t when inside.

A better solution would be to make standard reflections in Roblox use specular (cubemapped) reflections. An example of a game using this method is Half Life 2. A developer pre-plans a spot and 6 images are taken and stored in the map file. While running on a players’ machine. The engine will take textures from the closest cubemap point and uses them for reflection. For Roblox, these images would be generated in studio and would be streamed to the client during gameplay.

Example of specular reflections in Black Mesa.

Alternatively, Roblox can go a step further and use Screen Space reflections. A lot of modern games have this form of reflection in some way. Even Roblox already uses this for Terrain water reflections (At a low resolution.). This type of reflection is more performance hungry but can make scenes look a lot better. Adding this type of reflection to more parts would definitely do the trick.

Example of Screenspace reflections in Roblox.

39 Likes

I know this is a poor soloution but could you fake a skybox in the workspace & then make a bunch of static pre-rendered lighting “skyboxes” that swap out depending on where the player is?
Its not perfect as players graphical settings could differ between players but its what im currently doing in my personal project.