I’d like the ability for a SurfaceGui to be applied as a texture (e.g. a Decal) with the dimensions of the CanvasSize. Instead of rendering the SurfaceGui as, well, a ROBLOX GUI, it would be rendered as a decal, and thus play nice with lighting. It shouldn’t be a pain to get the color data from a GUI every frame, considering that, you know, it’s already done, so instead of rendering it on top as a GUI, it’d be great if it could be rendered as a surface texture.
This would allow for a few things aside from just playing with lighting right:
Decals wrap around meshes. SurfaceGuis don’t. This would let you use SurfaceGuis on things like Head meshes and CSG objects.
If the support to render as a Texture (the object) and not just a Decal is added, you could apply one SurfaceGui many times to an object.
SurfaceGuis could show up in thumbnails, as they’re applied like a decal. yay!
The way I think the API could be implemented is adding either a new property to both the Decal and Texture object (or adding a superclass to them and adding it there), called something like “TextureGui”, which takes precedence if it is set and is set to an Instance, or, adding a property called “ApplyAsDecal” (or ApplyAsTexture) or an enum “ApplyType” with Default or Decal. I think the first is the more powerful solution, but it’s also a bit less intuitive.
oh, my bad. i read it too fast and didn’t take in the details. i don’t get what you’re saying though. can you explain differently? it just went straight over my head. if it’s a useful idea, i want to support it.
I’m not sure what Roblox’s system looks like, but usually you load a texture into the GPU’s RAM, a very slow and painful process, and as gui objects can move around a lot, you would be taxing the bandwidth to the GPU quite a bit, the reason it has to be in the GPU ram is that operations like calculating lighting, fog, and other rendering effects require fast and immediate access, otherwise it will compute slowly, and not be able to keep up with the 60fps rendering, at least that’s why I assume it’s as it is.