SurfaceProjection object

With roblox mobile dropping openGL ES 2.0 on march 1st and presumably moving on to 3.0, are deferred decals within engine limitations, now that creating GL_DEPTH_COMPONENT textures is possible?

11 Likes

One small thing, I think it would be very useful if the SurfaceProjection object had an adornee property.

Or even better, an Adornees property to allow it to project onto multiple parts in case you want it projected on a model/models with many parts. Would be annoying to have to create a SurfaceProjection for each and every part. Unfortunately that may not be possible with the methods they discussed, I believe they said the projections would not be movable so having one SurfaceProjection for many parts which could move relative to each other won’t work.

1 Like

Can this please be looked at again? My use case is SCP-106; similar to SCP: Secret Laboratory, it can create “sinkholes” or portals when it kills a player. I would love if the portals could match the surface, seamlessly.

1 Like

Bumping this. I see a lot of good use cases (such as paint, blood splatters, scorch marks, bullet holes, etc.)

1 Like

Best to have a array of objects it can cast on OR add a property on BaseParts called “ReceiveDecals” (Unreal has this so that player models for example don’t receive projection decals from the environment)

3 Likes

Bump, Bullet holes, because I can’t easily create good looking bulletholes around edges unless I script the living hell out of it by using glass and even that causes problems.
image

6 Likes

Bumping this too, how about you don’t release it on mobile.

When Future Lighting first came out, Roblox didn’t allow Mobile Devices to run Future Lighting, it just switched it out for ShadowMap.

All Roblox has to do is simply only allow this feature for computers, most games that will utilise this feature are designed for computers anyway.

11 Likes

Any updates on this topic? After all these years it is still a highly requested feature, and the example @nsgriff provided clearly shows it is a feature that is possible to implement, but there’s been no recent updates on the topic as far as I’m aware. :frowning_with_open_mouth:

9 Likes

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.

5 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.)
13 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

9 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.

1 Like

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 Vullcan is a proof.

Just support Metal for IOS and Vullcan for Android and if you think about it not even all devices supporting Vullcan 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 Vullcan 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.

7 Likes