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