As a developer, I can currently generate all sorts of crazy cool dynamic textures by using ViewportFrames and CanvasGroups. (Both super amazing features btw!)
What I can’t do is then reference the texture created by these processes as a texture in other systems, thus saving both drawcalls and texture memory.
Ideal places I would like to re-use an existing render texture are:
- ImageLabels in other UIs
- SurfaceAppearances (Although I understand this might be difficult due to the baked/static nature of these)
An example of a cool idea using this would be rendering a tree into a viewport frame, then using a bunch of TextureAppearances or SurfaceGuis to replicate the tree image around in a drawcall-friendly way:
Other things you could do with it:
Dynamic character and vehicle skins: Let uses place stickers and decals in the viewport frame, and it’ll show up on the world model
Animated textures on models: Animate the viewport frame = animation on the world model - eg: you could make animated lava by animating the contents of a viewport frame, and then using it as a texture for other objects.
With Roblox seemingly working on a dynamic image that would allow you to write arbitrary data to be shown as an image, I think it’s definitely time to revive this feature request while it’s still in the design stages.
Having the ability to effectively generate images and then use them as textures would be INSANELY powerful, even if it’s not necessarily applicable to DynamicImages.
I’d love to use something like this for a “crawling world” type scenario where the world seems to shift and move around you, but in reality, it’s just the texture from a DynamicImage / Viewport / CanvasGroup changing. And that’s just one use case!
Just thought of a few more great reasons for this to exist: Viewport manipulation!
A property to set the viewport WorldRoot would be useful as well so you don’t need duplicate assets for multiple views of the workspace.
Also really hoping that we do end up getting that DynamicImage feature that would be amazing.