So CanvasRenderTarget2D allowed me to make things look like exactly as I wanted, and the performances are optimal since there is just 4 vertices the the shaders are as simple as they can be:
The only drawback is the generation of the textures and the calls to UCanvas::DrawItem. It is not that slow, but my levels will be pretty large and have a LOT of tiles, and I probably can’t generate all the textures at the start of the level.
Is it possible to call UCanvas::DrawItem in a thread, and will it have any benefit? I don’t want the game to freeze for 1/4 second when a new terrain chunk is generated. In the worse case I could generate a few tiles every frame, to make it unnoticeable.