Is there any way to render shapes in a HUD-like situation where they don't change scale with camera FOV?
I'd like to use Shapes for some of my HUD elements (crosshair etc) but I'm making a 3rd person shooter where you can aim (zoom by using cinemachine to switch to a lower FOV virtual camera) and the shapes zoom along with everything else. I set my test scene up roughly the same as the FPS HUD demo scene with a render target sitting a small Z distance in front of my main camera. I just used the included Crosshair script for testing.
Ideally I'd like it to behave similarly to a screen space overlay canvas where when I zoom my crosshair stays the same size. Is that possible, other than grabbing the camera FOV and scaling everything by some FOV ratio? That seems like it'd be really hard to do with e.g. keeping various HUD elements spaced around each other properly.
Looks like you can work around this a bit by adding another camera and e.g. set its culling mask to HUD and then render the HUD in front of that; when the FOV on the main camera changes it won't affect the HUD camera so your HUD stays in place.
While I don't love having to insert an entire extra camera into my setup I think the performance impact will be pretty minimal; it's masked to only the HUD and I created a second render data asset and stripped all the renderer features other than the Shapes one. So far I don't see any real performance impact as a result.