Before read, please consider two points:
1 - I know that UMG is some sort of WIP.
2 - I’m just talking about what I could get from reading engine code and experimentation.
Watching the code I’ve seen that without extend FSlateDrawElement and FSlateBatch and Batcher I’ll not achieve “Slate” rendering.
I’ve seen that Slate has some types defined to work with some sort of separated render of Elements (FSlateVertex, SlateIndex and such things) trough the Payloads Batching to each and some sort of “SlateDrawer” that builds geometry and renders it into the DrawElement layer. Would be amazing get access to such thing without need to deal with the F<Name> guys, dummy classes and pointers needed to get then working.
UMG/Slate code by now has 2 usages to exactly the same thing because FDrawElement::MakeCustom() doesn’t give us access to populate a Payload with Vertex and Indexes data (at least by what I’ve seen) it just get an Element that holds and creates its own FCanvas and writes to the Widget Backbuffer, what is a pain is to make it working as average coder. lol
But on digging the FViewport looking for some samples, I got to an inner MakeCustom() and a DrawRenderThread(), so, we have two EElementTypes doing almost the same thing.
I don’t know if it’s a good idea, but is there some way to ease the access to rendering from ET_Viewport and turn ET_Custom into some way to use that nice SlateElementRendering?
If it’s made this way because needs be this way, is there any chance of add an ET_Custom2DGeometry… to DrawElement::MakeCustom2DGeometry… and so on?