JosefNemec / Playnite

Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
https://playnite.link
MIT License
9.45k stars 504 forks source link

Scaling issues in version 6.1 (Grid view) #1539

Closed ClearStrelok closed 3 years ago

ClearStrelok commented 4 years ago

I didn't have this issue (or at least didn't noticed it) in 6.0 so I'm pretty sure this is coming from the latest update. Basically, there's a new problem where the covers in grid view are displayed incorrectly depending on whether or not the Info panel is toggled.

When the info panel is toggled on: 1

Everything renders correctly. With the correct zoom level, covers are scaled properly.

This changes when the info panel is toggled off: 2

Everything is blurry. Zooming in on both pictures, you can see that covers are slightly stretched on the horizontal axis and stick out of their frame on the left side.

JosefNemec commented 4 years ago

I'm having issues reproducing this. Does it fix itself when you change the zoom level after closing the side panel? Also can you create diag. package for me from "About Playnite" menu? Thanks

ClearStrelok commented 4 years ago

Here you go: cf091d96-5bc0-4366-b5b0-7a5e8e7f8d51

However it seems that the issue is not necessarily tied to the info panel being toggled on or off. Just playing around with the zoom slider has the covers being randomly affected by the pixel shifting.

ClearStrelok commented 4 years ago

Games from itch.io (which uses 315x250 covers by default) seem to be especially affected. See the difference in quality between Shattered Realms in fullscreen mode, in which the cover displays with minimal softening, and in desktop mode since 6.1 :

1 2

The frame is actually smaller but the scaling seems to be completely off. It looks just as bad even at the lowest possible zoom level.

JosefNemec commented 4 years ago

I managed to fix the first issue, but the second one (with Shattered Realms example) probably won't be fixed. It's a side effect of optimized image loading (which is currently not used in Fullscreen mode #1535). Images that have widely different aspect ratio, compared to what's being rendered, will be shown in lower quality.

I'll leave this open until I'm sure I can't fix it without noticeable performance impact.

JosefNemec commented 4 years ago

Original issue is now fixed in 6.3

ClearStrelok commented 4 years ago

Maybe having an option to use the previous behavior (that could be either toggled off by default so that it's only activated by those aware of the potential impact on perfomances or toggled on like LOCSettingsBlurHighQuality) would alleviate the need to fix the issue, provided this is feasible ?

I think Playnite uses both Uniform to fill scaling and IGDB covers (which are all over the place in terms of both ratio and resolution) by default, so the visual impact of this optimization will be quite noticeable.

JosefNemec commented 4 years ago

It won't affect IGDB covers, they are very close to 3:4 or DVD aspect ratio and if you use that in Playnite for Grid View then you won't notice any difference to previous scaling (5.x). The only problem is with widely different ratios, ie. horizontal aspect ratios vs. vertical covers.

I'll look into this more when working on Playnite 7. Performance toggle could be an option, but the difference there could be massive (mainly in memory usage and load times), so I personally don't like that idea that much.

ClearStrelok commented 4 years ago

With the main issue now fixed I've actually noticed that even high resolution covers that barely differ from the set aspect ratio have been softened quite a bit. It's not much of an issue for me, because I've already tailored most of my library to the new Steam standard, but I feel other users would see a much bigger difference.

I've looked at the way Steam currently handles it, since their new UI seems to be much more computationally intensive than the previous one, and they did add a "Low perfomance" mode in the new library options (but it doesn't seem to do all that much : scaling of custom covers is seemingly done without any visible optimisation in both modes, for example, so it's still quite a bit more expansive in terms of ram usage than Playnite, both before and after 6.x).

Playnite currently has a couple of perfomance options for transitions and blur quality and, having tested them, I couldn't actually notice much of a difference (visually, that is). So, if that idea of a togglable optimised cover scaling mode was to be retained, maybe it would be interesting to bundle it up with the previously mentionned options under a single "Low perfomance" mode ?

JosefNemec commented 4 years ago

I will be adding some performance related settings (mainly related to memory cache) in Playnite 7, so I may add options for image scaling on Grid View.

While fixing this I experimented with some external image scalers and there are some that produce super high quality re-sampled images. But of course it comes with a price (mainly load times, not that much more memory usage).

I think in the end we should provide 3 options:

darklinkpower commented 4 years ago

Related to this, backgrounds get blurry too.

Original image 400% zoom:

ORIGINAL Playnite 400% zoom: PLAYNITE

Comparison: https://cdn.knightlab.com/libs/juxtapose/latest/embed/index.html?uid=c7301db6-1231-11ea-b9b8-0edaf8f81e27

This applies to both backgrounds in the main window and in the details view section. I'm unsure if game covers have this issue because in that view because they look crisp to me but I don't know if as crips as they originally are.

JosefNemec commented 4 years ago

The issue with background is because I forgot to apply the fix for covers there too :(

JosefNemec commented 3 years ago

Done in devel9.

There are now three options user can choose from related to image scaling: