Unsure entirely if it’s a bug or intended, but I think it may have slid under the radar. The capture feature hides all UI elements to take a pure screenshot without elements on screen blocking the viewport, however it appears the SurfaceGui UI object is also included in this hiding behaviour. This means any display boards in the world will not render, such as scoreboards, dynamic signposts (think like the signs above player stalls in Pls Donate!).
This is extra obtrusive to my game, as a core effect requires the use of a SurfaceGui placed in front of the camera to function, and when it’s disabled the effect breaks and everything renders incorrectly. And I’d love to be able to use this social feature in the final product.
As a workaround, you should be able to disable ScreenshotHud.HidePlayerGuiForCaptures and manually hide any ScreenGuis that you wish to be invisible before the capture and re-enable them afterwards using the events under CaptureService to determine when to do so. This seems to be intended behaviour, but an additional property should be provided to cover this common use case.
I think setting ScreenshotHud.HidePlayerGuiForCaptures to false and manually disabling the ScreenGuis in PlayerGui may work for this use case currently, in the future we will be looking into how to improve the API to make this easier and allow for more flexibility for developers to choose what is hidden in Captures.
I finally tried this out, and it doesn’t prevent SurfaceGuis & BillboardGuis from being hidden. Setting HidePlayerGuiForCaptures = falsedoes keep your PlayerGui on screen, but worldspace UI elements are still hidden.
This feature hides not only the GUI but also the constraints.
My game uses visible rod constraints and spring constraints, but when I take a screenshot, these are hidden and look disappointing.