DisplayXRWindowSpaceUI renders into a fixed-size RT (resolution) with the overlay camera's aspect set to the panel aspect ("pre-distortion"), relying on the compositor's stretch of the RT into the panel rect to cancel it. Where that stretch is not exactly the inverse — editor weave window / Game view pane, any path where pane aspect ≠ RT aspect — the cancellation does not happen and everything compresses: round slider handles render as ellipses, icons squashed horizontally.
Same root cause as the earlier fixed-aspect input-mapping breakage (pane/RT aspect mismatch): one surfaces in pointer mapping, the other in rendering.
Fix: create the RT at the live panel aspect (height = resolution.y, width derived), so the camera renders 1:1 and the stretch is the identity — which removes the need for pre-distortion altogether. Re-create on aspect change (settled), re-register the texture and re-acquire the bridge. PR follows.
Reported in the LeiaViewer-port write-up (item 4); filed so the fix has an issue number.
DisplayXRWindowSpaceUIrenders into a fixed-size RT (resolution) with the overlay camera's aspect set to the panel aspect ("pre-distortion"), relying on the compositor's stretch of the RT into the panel rect to cancel it. Where that stretch is not exactly the inverse — editor weave window / Game view pane, any path where pane aspect ≠ RT aspect — the cancellation does not happen and everything compresses: round slider handles render as ellipses, icons squashed horizontally.Same root cause as the earlier fixed-aspect input-mapping breakage (pane/RT aspect mismatch): one surfaces in pointer mapping, the other in rendering.
Fix: create the RT at the live panel aspect (height =
resolution.y, width derived), so the camera renders 1:1 and the stretch is the identity — which removes the need for pre-distortion altogether. Re-create on aspect change (settled), re-register the texture and re-acquire the bridge. PR follows.Reported in the LeiaViewer-port write-up (item 4); filed so the fix has an issue number.