Emission map support on SurfaceAppearances

It probably doesnt make sense to create a whole new instance for something that would be a part of a surface appearance. So it would likely be a extra property. But given that then some people would want something like:

  • Multiply Emission Map by a color (and also have it be scriptable like the recently added SurfaceAppearance.Color)

It would just make the SurfaceAppearance class more and more complex while still being so limited, shaders are something I prefer far more and I believe that Roblox could make a primitive yet very cool system for developers to use!

So what if a game has thousands of Surface Appearance instances? Same thing applies to Albedo, Metalness, Normal and Roughness map, one more map won’t affect anything much + Most instances may have it set to nil so there’s no change.

2 Likes

I wouldn’t know about any updates beyond what I’ve heard at RDC or from other devs who’ve talked with staff.

2 Likes

Ah, alright. Hoping that something with a shadergraph will come at one point because its such a huge feature.

2 Likes

bumping this again pls roblox what’s so hard abt adding this feature :sob: :pray:

1 Like

The amount of things Roblox studio is missing or half-releasing is absurd. I’m grateful for the clouds, future lighting, IkControls, code optimization, and server ram increase. However, there are some simple things that they are missing that come built into most game engines. They must step up their game and try to implement what the community could use the most. e.g. Shadergraphs, Rendermodes, and other stuff. bump

5 Likes

Bump. Do I even need to say anything?

4 Likes

I’ve talked to @CoastalStarlight at RDC, he had a good idea of how emission could work.

Currently like @Elttob has said, roblox uses RGB/ARGB image packing for the TexturePack for surfaceappearances. Coastal told me that one of the channels for the PBR is unused, im not sure which channel but basically Metallic and Roughness are packed into 1 image, with 1 channel remaining unused. What he has proposed is that we can have a black-white image which acts like a “emission mask” where white would mean full emission intensity and black would mean no emission.

You would basically add the emissive directly to your base color, the emissive mask would then act as a mask and determine which areas of the diffuse texture would be emissive. This might be a bit limiting but its something that is possible without causing a big increase in memory usage.

Correct me if I have explained this wrong @CoastalStarlight, I’m grabbing this out of the back of my head.

9 Likes

@tabby0x to be clear, this was just an idea we were discussing at RDC.
But yes you’ve got the main idea. Metalness and Roughness are both currently provided as a single channel each, meaning if we made a single emissive channel as described above, we could theoretically pack the three maps into a single texture object.

However this doesn’t necessarily mean that the emissive channel is “free”, since it could make the combined texture compress less effectively.

6 Likes

face tracking and ai features before emission maps and shader support :sob::sob::sob:

6 Likes

Yeah, what compression do you currently use to pack the PBR? Like DXT5 or DXT/BC? Or well, I would assume its a huge variety of compression methods because of the huge variety of graphics API’s you guys work with right?

@CoastalStarlight from what I have read, leaving a channel empty would literally make almost no difference in compression, ECT1, ECT2, ASCT and DXT5 would all have basically no memory difference if you leave a images channel empty or not. The only limitation is that ECT1 can not support a alpha channel. But then again, do you know why OpenGL ES 2.0 is simply just not being dropped?

@zeuxcg has made a report on GitHub about the graphics APIs that Roblox uses in %, last updated in 31st Dec 2021.


I’m grabbing all the public information that I can, since there obviously isn’t much more disclosed publicly by Roblox here, but I just really want to know why you are still supporting such a fraction of users when it literally makes so many rendering related tasks way more difficult for the rendering team.

2 Likes

ROBLOX hasn’t supported OpenGL ES 2.0 since March 1st, the minimum system requirements for Android require a device with support for OpenGL ES 3.0.

2 Likes

In another thread i explained this, GL ES 2.0 is still supported, but Roblox doesn’t publicly tell you it is. You can test this out with a android device and GLTools to force Roblox into using GL ES 2.0, it still works just fine. And in my post above, CoastalStarlight has told me at RDC that OpenGL ES 2.0 is not removed yet.

3 Likes

I think they also still use OpenGL ES 2.0 for the old Iphones that doesn’t support Metal, but does support Open GL ES 3.0.

It doesn’t make sense to me though if only 0.1% of Roblox playerbase used OpenGL ES 2.0 on IOS and 1% of them on Android in 2021 then imagine how many do in 2024.

@CoastalStarlight We should get clear explanations from you guys on why it’s still a good idea to keep continue supporting old Graphics APIs like OpenGL ES 2.0 and thus with it imposing artificial limitations for the progression of the platform. I can’t think of any reason. Not many people use it for it to be worth to continue supporting it.

1 Like

All iOS devices on 12+ support Metal
it was the devices on iOS 9 that didn’t

I would hope for rgb emission as apposed to a multiplier for the albedo texture but something’s better than nothing. My fear is that if the added the single channel mask method they wont ever add individual rgb emission as we would already have emission maps just in a limited capacity Roblox has done this many times with making a feature and just leaving it half baked.

EDIT: Oops wrong reply correct person just the wrong reply.

1 Like

Anything below the iPhone 6 should simply not be supported in my opinion, how do you even run a game with 2GB ram without just outright crashing constantly, like I dont want to have to deal with the constant complaining of players that their device is crashing when roblox is literally giving me 0 tooling to fix or detect such memory situations like

2 Likes

The game hasn’t run on anything older than the 5S in around 2 years

The 6 and 5S are basically the same phone also, the 6S should be the hard minimum imo

1 Like

I would like to see this feature added.