SurfaceProjection object

afaik they dropped support for the phones that couldn’t use this feature recently, so there should be nothing stopping them from adding this now.

7 Likes

This isn’t even a issue anymore because, OpenGL ES 2.0 has been deprecated. The minimum required to play Roblox now is OpenGL ES 3.0+, that graphics API can very well support deferred decals. The others such as Metal, Vulkan, DirectX10+ all have support for this. So this is more of a “will Roblox remember that feature they made years ago and consider re-adding it?”

This is also the same for a Shadergraph, Roblox could make a somewhat functioning Shadergraph now that OpenGL ES 2.0 is no longer supported. We would be quite limited in what we can do but it would still be MILES better than the current system.

  • Post Processing Effects (Screen based Shaders)
  • PBR materials (Diffuse, AO, Normal, Emission, Specular, Metallic, Roughness)
  • Animated Materials (Animate UV TexCoords over time, make a noise texture shift etc…)
  • Scripted materials (such as making a material respond to a intermediate value on a object, such as a “health” attribute to control a emission intensity)
  • Deferred Decals (+Material based decals, so they also can be made using a Shadergraph like in UE, there are some limitations however.)

And this whole “Security Risk” of shipping a Shader compiler, if Roblox uses a Shadergraph then they can simply moderate / restrict what Shaders can do to actively prevent abusing/exploiting the Shader compiler. Giving users direct access to like HLSL or GLSL code writing is insecure and obviously not preferred because of its added complexity.

The main things that need to be accounted for are like:

  • Screen Based Shaders do not have the ability to interact/read anything of the UI.
  • UI Based Shaders do not have the ability to access anything within the CoreGUI.
  • Shaders are compiled in studio for preview reasons but the Shadergraph on publish is uploaded to Roblox’s servers which compile the Shaders and then package them into the place file. (This has some limitations, but overall those limitations shouldn’t be a big issue.)
17 Likes

I would love having a shader graph in Roblox.

Shaders are currently ONE OF THE BIGGEST limitations for me right now.
A lot of things I want to do are literally impossible because of this.

I’ve spend a lot of time learning about graphics, once you understand how graphics and shader languages work it’s quite amazing really.

In Unreal Engine I sometimes make very complicated shaders with lots of math to create cool effects and I love blending textures or performing operations on colors to create cool patterns.

Using post processing to filter lights and shadows to stylize them or create cell shading is fairly easy to do and it often looks pretty great and doesn’t have a big performance impact.

10 Likes

FYI this only applies to Android, there might be some iOS devices which still use OpenGL ES 2.0 and don’t support Metal

1 Like

iOS uses Metal. Apple has deprecated OpenGL on iOS/iPadOS years ago. If your apple device is still using OpenGL you probably have a iphone 4 or something…

3 Likes

That was applicable when Roblox was able to run on iOS 11 but they seem to have changed the system requirements recently requiring at least iOS 12 so this isn’t applicable

Yeah but really they just need to LET GO, and like why would Roblox use OpenGL ES on those phones when they have metal?

Not all of them really support Metal, for example Roblox supports the IPhone 5s as the minimum for IPhones which is quite a very old phone and it’s GPU doesn’t support Metal but does support OpenGL ES 3.0, but I have found a very interesting thing. I’ve read this Github Article by @zeuxcg who used to be a Roblox engineer that said that they switched to using OpenGL ES 2.0 on IOS to simplify maintenance. This is from 2021 but I am pretty sure it still applies now.

But what is more interesting is that it is being mentioned that less than 0.1% still use OpenGL ES 2.0 on IOS from the last article made in 2021 so this must be even lower now in 2024 if not non-existent so I am still not sure why is Roblox still supporting OpenGL ES 2.0 on IOS. They should just drop support for all IOS devices that don’t support Metal since they are very old and most certainly can’t handle Roblox games smoothly anyways.

image

12 Likes

Yeah fair point, i remember reading this myself too on GitHub sometime ago from zeuxg, but really consider this, the iPhone 5s has 1GB of RAM. There is no way that it would even play most games without just having the app constantly crash.

So literally even if that device is still supported, most phones cant even run any moderately demanding games without just instantly crashing due to them running out of memory, really the standard should be at least 3GB now. 2GB is also very hard to work with, at least within Roblox due to it being very closed and not giving us access to a lot of memory related tools.

2 Likes

I completely agree with you. Roblox Minimum Mobile System Requirements are very unrealistic and hasn’t been updated for years honestly other than recently changing the IOS requirement to IOS 12 and the Android requirement to Android 6.0 and also deprecating OpenGL ES 2.0 for Android.

I think it’s time to also deprecate OpenGL ES 3.0 on Android and also drop support for old IOS devices still using OpenGL ES 2.0. Supporting old devices using old standards that can’t even run a Roblox game at graphics quality level 1 without crashing or lagging very badly is very stupid and is just limiting the entire platform at this point for no reason.

Some might argue that Roblox should still support OpenGL ES 3.0 for Android but I also believe that this is also an old and obsolete API by 2024 and Future Lighting on Android requiring devices support Vulkan is a proof.

Just support Metal for IOS and Vulkan for Android and if you think about it not even all devices supporting Vulkan and Metal are powerful enough to run Roblox. For example I can run most Roblox games smoothly at max graphics quality level 2 on my Samsung Galaxy M12 phone and this phone support and uses Vulkan 1.3 and also supports Android 13. My old phone that only supports OpenGL ES 3.0 crashes on most Roblox games at graphics quality level 1 and lags very badly in a few others.

I am not blaming the devices completely though, there are a few performance issues on Roblox and Roblox is honestly not very optimized but some of these devices are simply not powerful enough to run any Roblox game right now. Also optimizing for a huge variety of devices like this is hard and it would be better and easier to optimize for fewer newer devices. Sometimes you can’t even optimize for them, maybe some devices can’t support things like Occlusion Culling for example.

11 Likes

What are you talking about! I’m playing roblox on my nokia and I would be infuriated if this feature was added because I’d totally miss out! You can’t drop support for my indestructo-phone with a top notch 20x20 pixel display!

(This is a joke. Bumping this post. Any chance we’ll see this in the near future roblox?)

6 Likes

As for the shader graph the problem is that some devices, the Mac devices or Consoles (i don’t remember which actually), cannot compile shaders during runtime. A Roblox Staff said it somewhere in other post. So i this isn’t that easy.
But yeah, SurfaceProjection instance should be pretty much possible.

i would like to add that, highlights(which are used as game mechanics for locators, etc), did not have highlight outline on android till last year. it seems like there’s a bit of hypocrisy coming from certain people, why are some features given the “we can’t support it on mobile, and we don’t want to leave certain devices out”, yet future lighting and others were features that were originally only on computer, before coming to other devices.

also, adding this feature would be great for custom lights with interesting fall off patterns, like as seen in these photos


another case i can think of is projectors, being able to have projectors that actually cast shadows and aren’t just a decal would be phenomenal. blood splatters too, along with footsteps if optimised enough.

7 Likes

Please just give us this feature already Roblox…

4 Likes

I do not think you understood the post correctly.

3 Likes

This would be extremely useful. Even if SpotLights or SurfaceLights had a TextureId property, it would be so cool to see and have many use cases

image

2 Likes

wanted to do some cool ui effects on a part, was kinda bummed when i realised that you can’t actually clip a surface gui. We would all love to see this feature!

1 Like

I would love to see this feature, from Lighting effects, to Stains on walls, and things like graffiti, this would be extremely useful! I really hope with something very similar ([Update] Projecting decals to EditableMesh!) already being a feature that we can get this for normal parts/environments as well.

1 Like

You guys dropped support for 2.0 and migrated to 3.0, the version required for the feature to work, couldn’t you add it now?

9 Likes

OpenGL ES 2.0 was not actually fully removed, they list ES3 as being the “minimum” requirement, but if you boot up an Android emulator, and set it to OpenGL ES 2.0, Roblox will still run (Granted, at about 5 frames per second). Weirdly enough, they actually did drop it for iPhones, just not for Android.

Though it is said that OpenGL ES 2.0’s removal was put “on hold” and not outright cancelled, so there’s still hope for this feature being implemented in the future. Even if depth buffer access is still slow on ES 3.0, it’d be better than just flat out not having this feature at all.

5 Likes