Add support for basic refraction/distortion effects without Glass

As a Roblox developer it is currently non-practical to create distortion effects.
If you want to, for example:

  • Have a shockwave that distorts space around where the wave is.
  • Want someone to appear as a smudge/blur on your screen.
  • Want to create a ripple effect on your screen when underwater.

… none of these things are trivial to accomplish right now.

The only possible way to kind of pull it off is with the Glass material, but there are several caveats to doing so:

  1. It’s a Part material, and thus isn’t intended to be used in the context of refractive effects.
  2. You can’t set the normal map of the material, so distortion is entirely geometric.
  3. You can’t avoid the specular effects of the sun and other light sources affecting the glass.
  4. You can’t blur what is behind the glass.
  5. The distortion effects get killed below level 13 - 21 graphics anyway.

If we aren’t going to get custom shaders anytime soon (or ever), I hope this at least isn’t an unreasonable request. I really just want to make my game as cool and immersive as I can, and right now I’m bottlenecked by hard engine limitations.

113 Likes

Adding on, I’ve mentioned this before, but it’s absolutely shocking how little post-processing effects that the engine has. It was basically a decade ago at this point where Arseny said:

We still barely have anything in 2025.

Why is there such little support for these stuff in the engine? What’s even more surprising is how we’re lacking the most basic of stuff, like an unlit material shader.
You want an object to not be affected by global lighting? too bad. You need to deal with forced SSAO, horrible fresnel reflection artefacts if you try to be creative with normals, or doing hacky workarounds with neon materials etc etc.

A custom graph-based shader system is probably years away, but before all that, even the tiniest of support would go so far in being able to allow developers to define their own art styles for their games. A lot of the use cases I hear from people who want shaders, don’t even necessarily want custom shaders to accomplish whatever they’re trying to do. Most of the use cases I’ve seen are just foliage/trees/grass, oceans, or toon shading/effects. Most of which could be supported without the need of a whole custom shader system.

27 Likes

Right, making satisfying visuals on Roblox is very tedious, this has been one of my main pain points on this platform for so long because whenever I have an image of what I want to create, I am severely limited by what I can do, I have to rely on many obscure hacks to make things look slightly more appealing (Like using a SpecialMesh with a higher VertexColor than 1, 1, 1 just to make it glow) while doing that on any other game engine would be an absolute breeze.

As long as such post-processing effects aren’t added, Roblox games will always have this simple and childish feel to them no matter how much Roblox tries to expand to older age groups. It’s not just about realism but making games look less amateur than games made on other game engines.

8 Likes

Seconded!!! I have been through heck and back just to make anything vaguely pretty with the limited screen effects.
The closest I’ve gotten to something that looks satisfying is just a hack, and even then, it’s hardly ever noticable anyways. If nothing else, I just want to be able to additively blend images onto the screen.

2 Likes

In all truth, I’m pretty awed by the fact this feature request got closed. Not having this is a problem for us, yet there’s always a solution to a problem.

In term of reflections, we should be able to have a property to make things not moving at all. This would allow us to have a decent quality cubemap reflection system that could allow us to reflect stuff that doesn’t move. Big quality improvement, least performance cost.

Roblox has always been opposed to baking because those are extra properties and so extra storage. But aiming for extremely simple principles such as what I mentioned can make a true difference and are pretty universal.

Glass has always been a yes and no. I mean, some of its constraints can be very useful (mostly for cropping meshes in a quite barebone way), but at the same time can be a real burden.

We want to work on our games, not workaround them.

??? When did it get closed?

1 Like

Funnily enough it reopened some minutes after posting this message.

At least it’s re-opened now… :+1:

2 Likes

Did you view a bug-report that was closed beforehand? If so then I think it was a visual glitch.

3 Likes

Only posts in Bug Reports are supposed to have that label, you likely just repro’d this:

1 Like

we just need shader support in general

as a platform thats “powering imagination”, it sure is quite limiting on artistic freedom to not have access to those. its possible to make them secure too using a compiler if iirc (but roblox refuses to add them). we need to come up with hacky, often broken work arounds using engine bugs which end up getting patched

funny thing is, theres so many games which would perform far better on gpu code, like pet sim games or just any game with intensive particles/effects. its 2025. we need shaders and gpu based code support. a compiler is a pretty good way to implement them from what i can tell. let it compile before the game loads, and if it spots anything that could be an error or bad for the gpu, dont run it


or hell have a visual editor like unreal and unity to make it even safer since you can see if a shader will work before running it

5 Likes

Yes! Just yes! The current Roblox engine is so out-of-date compared to any modern game engine, It’s embarassing.

1 Like

Speaking of the post-processing effects we do have its insane that we still cant choose what is and isnt effect by them.

1 Like

Here are a few visual examples of what I’d like to see possible. These were taken from the recently released game DOOM: The Dark Ages

Shimmering effect from some magnetizing device:

A shockwave that produces a distortion wave:

A Nightmare Imp that blurs and distorts the world behind him similar to Glass, but without any specular highlighting.

If there’s any way Roblox can provide some simple mechanism to provide this feature to us sooner than later, even if it’s just something like Glass MaterialVariants, that’d be enough for me to at least do something neat.

6 Likes

I do think this feature is well needed, but it would be challenging to implement. If they decided to write their own graphics API layer over the already existing one, this would not just be possible, but allow people to program how it behaves. The best way that I think this should be implemented is through an effect instances similar to how the new Audio API works, for a layer to be drawn over the player’s viewport.

2 Likes

I personally just want to be able to use Reflectance with night-time or any of the new Materials, but i can see the appeal in having refractions and other complex material functions (like Neon’s glow) be adjustable with a SurfaceAppearance.

As a side-note, it bothers me incredibly when i want to utilize the real-time cubemaps that the engine can generate for rooms, but can’t due to them only showing up with high enough EnvironmentSpecularScale, which in my use-case, leaves my game looking significantly washed out. :cry:

Edit to clarify what I meant, here’s a before-and-after of me changing the Lighting’s EnvironmentSpecularScale from 0.1 to 1.0.

As you can see, it leaves uncomfortably high levels of shearing gloss on everything, and results in the visual appearance of shallow angles becoming washed out, and losing contrast that may be much-desired.


1 Like