Screen Space Reflections for BaseParts

As a Roblox developer, it’s currently too difficult to create realistic wet floors, puddles, or any outdoor rainy environments without the use of SSR to create quick and linear reflections of what’s already rendered in the scene.

This feature also has many potential applications with interior design - if SSR intensity was controllable, developers could easily enhance their flooring with light reflections or create glossy flooring effects for smooth materials.

image

Currently, an approximation of this feature is possible by duplicating and flipping the parts in a scene - at the cost of massive amounts of added geometry. If implemented, SSR would present itself as the perfect alternative to this expensive approach.


This has been discussed back-and-forth a handful of times around the forum, including an official announcement post - however no formal feature request has ever been made. I would like to take the time now to revitalize interest in this exciting feature.

I am also aware of the possible performance implications of this feature, and perhaps a compromise could be met to balance visual fidelity and performance - however, I firmly believe SSR would greatly enhance many environments on the platform.

64 Likes

This would be a great feature, but for optimisation is :skull: :skull_and_crossbones: :skull:
Even though I’m not sure how many Games would actually use this, the very realistic ones that may need this are only a tiny bit of Roblox’s Games, like a 1-2.5%

2 Likes

As mentioned in the original post - engineers could reach a compromise between visual fidelity and performance. The reflections wouldn’t have to be perfect and could possibly be disabled on low graphics settings (like many post-processing features).

I’m not an engineer at Roblox, nor do I know how their engine works - so I can only suggest so many ways to improve upon this feature. I do know that many developers on the forums have been requesting better reflection technology for years.

For the platform moving forward, more experiences will be pushing the limits of the Roblox engine. There are countless applications for this feature even if we assume not many experiences would implement this technology at the moment.

PBR materials and indoor envmaps are a huge step in the right direction, but Screen Space Reflections, and by extension reflections - would really push the engine up there to compete with triple A external game engines like Unreal Engine or Unity.

9 Likes

I believe that this would be a great achievement for Roblox but at the moment, the engine isn’t optimized enough and would probably be very taxing on local machines. I have seen lighting etc like this before in other places (I don’t remember where so don’t ask me, sorry!) so it is possible.

That said, in the coming years/months I think this would be a great addition.

All I need is to be able to toggle the reflections on PBR materials. I don’t want to create a different material, just to have reflections on a material.

For example when I have tarmac for a road, and I have a rain system, I just want to be able to manipulate the reflections through a script, and not have to change the entire material, just for reflections.

Anyways yeah, I support this request. Mobile users most likely won’t be able to run this, but oh well :man_shrugging:

4 Likes

While I agree that it would likely be a significant performance hurdle to overcome, I am confident it would be an invaluable addition to the lighting engine for builders and environmental designers all over Roblox - myself included!

Hopefully, this feature gets filed internally and tackled someday. Perhaps some engine improvements will need to be addressed beforehand, but I’m certainly looking forward to the day we get some new reflection tech. :pray:

4 Likes

Engine Improvements should come regardless if stuff like this gets implemented!

2 Likes

We shouldn’t just have this on parts but on any geometry we wish.
I mostly build with meshes so only being able to have upside-down reflections on perfectly flat surfaces isn’t super useful to me.

But it’s 2023, SSR can currently be hacked into Roblox using something like Roshade, but Imo it should be a native thing.
We shouldn’t have to use an extrenal program to add more shaders and beautiful graphics to a game.

On top of that, having indirect lighting would also be pretty cool.
Or possibly ACTUAL reflections like mirrors.

I know and I’m all aware about the performance costs.
Indirect light would likely have to be baked.

But game engines like Unreal and Unity for example let you use a second camera so you can render a scene twice and display it in a mirror.

Reflecting a single room of a building usually doesn’t cost that much, plus it allows for many cool things you could do in a game.
I’ve kind of always wanted to make working portals or experiment with puzzle games where you have to look in a mirror.

Would be cool if Roblox allowed us to get more out of high end specs.
I have a pretty high-end custom-build RTX PC, could easily handle high-res textures, reflections and complex lighting in real time.
Just wish Roblox gave us that option.

5 Likes

Every 3D object is a BasePart, including MeshParts and SpecialMeshes. I assume that that is what was intended when OP used BaseParts instead of Parts in the title.

EDIT: SpecialMeshes aren’t actually BaseParts! But they are more like properties, where they simply define a mesh that overrides any BasePart they are parented to, so at the lower level it is more like asking for reflections on default bricks and spheres.

3 Likes

Roblox terrain water already has screen space reflections.

It’s terribly unoptimized when used in large spaces though. And you can barely see the reflections tbh, unless you look kinda close?

3 Likes

I think the unoptimized part is more because of the fact that it’s terrain voxels rather than the reflections, since the reflections have a limited range. They are pretty hard to notice though, I agree, but they’re still there and are more noticeable during nighttime when there’s light sources being reflected.

5 Likes

SpecialMesh is not a BasePart.

Great feature, Roblox Water has it and believe it or not if you look closely it has tons of detail and the resolution is pretty good but deformed by the water. We already know they can add it so long they optimise it a tiny bit and giving us more specific settings for this kind of stuff.

BeamNG.Drive has special settings for Dynamic Reflections (SSR) such as Update Time, Detail, Resolution and Distance. If they add those kind of stuff then they should also add other settings like Shadow Quality/Resolution or even Texture Detail.

1 Like

They can just lower the resolution or Level of Detail of SSR when they reach too far away. A better solution would be to only capture large objects at a distance.

2 Likes

It would be if it would actually want to actually use the GPU instead of CPU when needed.

1 Like

This should definitely be looked into soon. SSR isn’t that too costly to produce for simple puddles or flat flooring, but if you want to go as far as mirrors, then it becomes pretty costly.

I feel like materials and their metalness/roughness maps should definitely have a bit of SSR, similar to terrain water, as it will just give very pleasing results, even if it is a bit limited.

9 Likes

Yes, I have fixed the mistake. But SSR on normal BaseParts should work for SpecialMeshes because they are more like properties in that they are sort of like a custom Part.Shape value from my understanding.

1 Like

There is no reason not to add it, water is already using High Resolution, High Update Time and High detailed reflections just without range and another issue is distortion. The only reason they’ve not added it is because it gets very laggy when you have 2 objects reflecting each other.

For instance:



These reflections would look better undistorted, the only way to remove that is locally by going and deleting the water distortion texture in your files. This effect was done with Water and made better with simple tricks.

5 Likes

Roblox needs this feature. It will make it easier to make realistic games.

6 Likes