Currently, as a Roblox Developer, it’s impossible create a functioning camera system that can project onto a screen, keeping in-world lighting intact.
You can sorta do this with ViewportFrames, but they lack the functionality to make it convincing.
My suggestion is for a Screen object that can go inside of a SurfaceGui (or a normal ScreenGui).
Some usecases for this would be: Portals and Security Cameras.
The other suggestion is to of course add an option to ViewportFrames to use in-world lighting. But I’m also pretty sure ViewportFrames were never intended for this use case anyway.
Perhaps either feature can be limited to a set number of “screens” like Highlights to help with performance when needed.
I completely agree with your points regarding the limitations of ViewportFrames for functional camera systems.
In addition to what you mentioned, a major bottleneck is the need to clone and update large parts of the world every frame to simulate the view. This quickly becomes unoptimized and causes significant lag, especially in multiplayer games or large worlds.
What would be ideal is a system that can replicate the world visually in 2D for these “screens” or camera displays, without requiring full cloning each frame. This would allow mirrors, sniper scopes, security cameras, or portal views to function smoothly and realistically, while keeping the game performant.
Limiting the number of these replicated “screens” like Highlights, as you suggested, would also be a good way to balance performance with functionality.