Bug #1719
Letterboxed/pillarboxed drawing of the game is broken
Associated revisions
Fixed|Client|InFine: Finale/intermission stretch scaling, HOM around view
This commit addresses various issues related to stretch scaling:
- "rend-finale-stretch" was not being applied at all, presumably due
to the unfinished UI2/InFine refactoring. Now that the UI2 drawer
is exclusively used for drawing InFine (with the old engine UI gone),
we can just apply a bordered projection there and not worry about
what kind of UI page is actually being drawn.
- Scissor was not disabled immediately after ending a bordered
projection, meaning that a mask applied at the time would not
be visible.
- Color buffer clearing is needed if there are finales to draw that
aren't stretched.
IssueID #1719
History
#1 Updated by danij almost 11 years ago
- Priority changed from Normal to High
#2 Updated by vermil almost 11 years ago
The issue appears to be Doom screen melting from a non-letterboxed screen to a letterboxed one.
When this occurs, the remains of the screen melt and camera vignette effect are left in the black areas of the screen above and below the letterboxed graphic.
#3 Updated by danij almost 11 years ago
- Subject changed from Letterboxed/pillarboxed drawing of the game is completely broken to Letterboxed/pillarboxed drawing of the game is broken
InFine does not respect rend-finale-stretch.
#4 Updated by skyjake almost 11 years ago
Should we drop the old letter/pillarbox scaling and simply resize GameWidget and GameUIWidget appropriately?
The same argument of redundancy could be made against the view grid: we could have multiple GameWidgets and one or more GameUIWidgets, as appropriate. This should simplify a number of things quite nicely.
#5 Updated by danij almost 11 years ago
The boxed projection must be configurable enough to support dynamically enabling/disabling it depending on the current game state. Typically the user wants to preserve the fixed aspect ratio of things like the intermission and titlescreens, yet fill the available window space when in a map.
Additionally, some of the HUD elements (i.e., statusbar) and the game menu use the same boxed projection but with the borders hidden.
Therefore, applying the boxing at GameWidget level might be awkward due to the need to animate the transition between a boxed titlescreen and an unboxed game?
#6 Updated by skyjake almost 11 years ago
Also, since this feature is in the engine, shouldn't we make it the default that menu/intermissions/finales stay in 4:3 aspect ratio while the 3D views use the full display regardless of aspect? To me that would make sense as a more vanilla-compatible default behavior that takes into consideration that all the art in the original games was intended for 4:3 ratio.
#7 Updated by vermil almost 11 years ago
Please delete me.
#8 Updated by danij almost 11 years ago
Doomsday does have "smart stretching" and it is indeed already enabled by default. The way it works is to compare the aspect ratio of the current view to that expected by a given fixed ratio drawer. If the aspect ratio is within a certain threshold the display will be stretched rather than blindly preserving the original aspect ratio absolutely.
The problem here is simply that this feature has stopped working since the frame composition changes. I'm sure we can improve on the implementation but frankly that is largely irrelevant in a bug report about a broken, existing feature.
#9 Updated by vermil almost 11 years ago
Please delete me.
#10 Updated by skyjake over 10 years ago
I'm having trouble reproducing the issue. Which cvar values should I use and which exact transition should I be looking at?
#11 Updated by vermil over 10 years ago
Well, my issue was that when there was a screen melt transition from a non-letterboxed screen, to a letterboxed one, that void/hom would be shown in black areas around the letterboxed one.
That seems to no longer seems to occur (maybe it was my video card drivers at the time or possibly it's co-incidently been fixed by another fix since).
My interpretation of DaniJ's issue is that the 'rend-finale-stretch' cvar, doesn't appear to work; Infine is always stretched to the size of the full window, regardless of what it is set to.
If the Cvar is supposed to work on the Intermission screen (I'm not sure as 'finale' in Dday terms has been said to refer exclusively to Infine), it also doesn't appear to work there either; the Intermission screen appears to always use smart stretching no matter what the cvar is set to.
#12 Updated by skyjake over 10 years ago
- Tags changed from UI, Client to UI, Client, InFine
- Category set to Regression
- Status changed from New to Resolved
- Assignee set to skyjake
- Target version set to 1.14.1
- % Done changed from 0 to 100
There were actually several issues at play here; see commit notes.
#13 Updated by skyjake over 10 years ago
- Status changed from Resolved to Closed
Fixed|Client|InFine: Finale/intermission stretch scaling, HOM around view
This commit addresses various issues related to stretch scaling:
- "rend-finale-stretch" was not being applied at all, presumably due
to the unfinished UI2/InFine refactoring. Now that the UI2 drawer
is exclusively used for drawing InFine (with the old engine UI gone),
we can just apply a bordered projection there and not worry about
what kind of UI page is actually being drawn.
- Scissor was not disabled immediately after ending a bordered
projection, meaning that a mask applied at the time would not
be visible.
- Color buffer clearing is needed if there are finales to draw that
aren't stretched.
IssueID #1719