I am still a bit puzzled because you removed scene.render() from the render loop and somehow it is still being rendered ?
Also, this works when the main camera has no parents, but if I have a parent, then I need to assign the world rotation of the main camera to the ui camera. How can I do that without using the absoluteRotation quaternion?
First about the scene.render - running a render loop does not remove the other running render loop. the playground itself has already a render loop that renders the default scene. so you don’t need it again.
Second - about the camera - you technically want a clone of the camera. Meaning - you need to also copy the view matrix. I’ll be honest and say I will need to dive into the code to know why all 3 are needed, but, in general, this will work - Simple GUI in fullscreen mode | Babylon.js Playground (babylonjs.com)