
In my special case you can have 2-4 player splitscreen. I just use a switch-case block for all the options to define the size of the screen part for each player and store it as a irr::core::reci object.
If shadows are active I then create a render-to-target texture for each player with the size of the rect defined before. XEffects "update" function takes the RTT texture as optional parameter, so not much to do here. Afterwards I copy the content of the texture to the screen.
I have to see if I can create a texture from part of the screen so that I don't have to copy the texture to the screen because this costs a lot of performance (see video - 30 FPS on my old Core I5 with a GTX650 (or similar

In single player mode I use the same base class but don't use the render target path for performance reasons