cai567890 / pcsx2

Automatically exported from code.google.com/p/pcsx2
1 stars 0 forks source link

[Enhancement] Fullscreen Resolution Option #1404

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Similarly to Dolphin, I would like to suggest an option in the Emulation 
Settings > GS Window called Fullscreen Resolution (not to be confused with 
internal resolution). Currently, PCSX2 has just a window border sizing, not a 
fullscreen resolution option. This would fix, for example, scanline shaders 
appearing to thick when software mode is used on PCSX2. And also for the 
software mode when fmv plays hack. It would possible make the scanlines the 
same size no matter whether in software or hardware mode. Same could be said 
for smoothing filters (because currently, software and hardware give a 
different level of smoothing when toggled between).

Original issue reported on code.google.com by shinra35...@gmail.com on 1 Jun 2013 at 8:23

GoogleCodeExporter commented 9 years ago
What you're asking for is that we give the GS plugin the power to go into full 
screen natively. This was the default way for a long time but back in 2010 or 
so we decided we had to change this to the current model (where PCSX2 has and 
keeps control over the GS plugin output).
Unfortunately I can't remember the reasoning for that choice right now but it 
was a rather serious issue.
You're request is noted though, we should look at this again and see if we 
can't make it an option.

Original comment by ramapcsx2.code on 1 Jun 2013 at 11:05

GoogleCodeExporter commented 9 years ago
oh ok, thanks. I'm just going on assumption that the shaders work that way 
considering dolphin, I don't know the real internals on if it'll accomplish 
that task or not but I hope everything does work out.

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 1:51

GoogleCodeExporter commented 9 years ago
I'm not sure to understand it. Currently we got
rendering -> buffer of PS2 size -> resize to your monitor buffer -> send to 
monitor.

Others possibility are
1/ set the monitor to the PS2 size so you don't need the resize in the 
middle(but actually it is done internally by the monitor, so no gain)

2/ Set the PS2 size to your screen to rendering directly to your screen. Ie 
internal resolution set to your screen (you can already do it)

Original comment by gregory....@gmail.com on 2 Jun 2013 at 11:04

GoogleCodeExporter commented 9 years ago
@greg: Let's see if I can try to explain more clear: custom resolution is set 
to 1920x1080 (hardware), same as my monitor's size. what I'm asking is to have 
a separate fullscreen resolution so that the shaders would fit well to that 
instead of the internal resolution because the internal resolution sometimes 
has to be changed because a game would not be working properly (ex: FFX-2 
cutscenes) and would sometimes have to switch to software mode. During the 
switch shaders will not look correct because of the change in that resolution. 
Having the shaders fit to the fullscreen resolution option, I'm thinking, may 
solve the problem, similar to dolphin emulator. I hope I was clear enough this 
time Gregory :)

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 2:32

GoogleCodeExporter commented 9 years ago
Here are pic examples btw:

Dolphin:

1. Lesser fullscreen resolution + 1920x1080 game internal resolution:
http://imageshack.us/a/img545/5294/nativefullscreenrez1920.jpg

2. 1920x1080 fullscreen resolution + lesser game internal resolution:
http://imageshack.us/a/img692/9933/640x528rez1920x1080full.jpg

3. 1920x1080 fullscreen resolution + 1920x1080 game internal resolution:
http://imageshack.us/a/img109/3002/1920x1080intrez1920x108.jpg

PCSX2:

1. default fullscreen resolution (non-configurable) + lesser game internal 
resolution:
http://imageshack.us/a/img845/3716/nativeintrez.jpg

2. default fullscreen resolution (non-configurable) + 1920x1080 game internal 
resolution:
http://imageshack.us/a/img38/4818/1280x1080intrez.jpg

@greg: see how there's no change in Dolphin's 2+3 (shaders) because the 
fullscreen resolution stays the same reguardless of the game's internal 
resolution?

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 3:20

GoogleCodeExporter commented 9 years ago
Internal resolution is a way to do some AntiAliasing filtering. It creates 
glitches like any AA. I think it is related to the too low precision of float.

On linux (maybe the same on Windows), fullscreen is a window of your screen 
resolution (here 1920x1080) with no border. You can still change the aspect 
ratio. 

If I understand well you want a way to set the size of PCSX2 in fullscreen mode 
and render with black border around?

Original comment by gregory....@gmail.com on 2 Jun 2013 at 4:00

GoogleCodeExporter commented 9 years ago
I took the screenshots with the hotkey so they appear with different sizes, but 
visualize every picture as the same size. 

Quote: "If I understand well you want a way to set the size of PCSX2 in 
fullscreen mode and render with black border around?"

No. To have the fullscreen window have it's own resolution separate from the 
game's internal resolution and have the shaders connect to the fullscreen 
window's resolution instead of the game's internal resolution.

fullscreen rez: 
http://imageshack.us/a/img819/7665/clipboard01xffdg.jpg

internal game rez:
http://imageshack.us/a/img713/6704/clipboard01222222222222.jpg

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 4:34

GoogleCodeExporter commented 9 years ago
Shader always rendering to the internal resolution (that why it is named 
internal). (well except the resize shader ;))

When you change your fullscreen resolution to 1024x768. My guess:
1/ they change your screen monitor to 1024x768.
2/ They rescale the internal buffer to 1024x768 (might be skipped if they both 
have same size)
3/ They send the 1024x768 buffer to your LCD display
4/ Your display is an LCD with a fixed number of row/column. So it would 
internally rescale the fullscreen buffer to your pixel matrix (here 1920x1080)

Original comment by gregory....@gmail.com on 2 Jun 2013 at 4:52

GoogleCodeExporter commented 9 years ago
I did a quick grep on dolphin source code: they do use linux function to resize 
the screen monitor. It surely the same on window.
linux xrandr function:
XRRSetCrtcConfig
XRRSetScreenSize

It won't help PCSX2 rendering.

Original comment by gregory....@gmail.com on 2 Jun 2013 at 5:01

GoogleCodeExporter commented 9 years ago
Would you have a solution or idea to always have the shader appear correctly no 
matter if the emulator is in software or hardware mode then (always have the 
shader use the monitor's rez instead of the internal game rez so that 
'scanlines' won't get thick when going into a lower game rez)?

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 5:10

GoogleCodeExporter commented 9 years ago
If you want the same output, you need to check nativeres (SW mode can only 
render at native resolution).

Original comment by gregory....@gmail.com on 2 Jun 2013 at 5:21

GoogleCodeExporter commented 9 years ago
checking native in pcsx2 makes the scanlines thicker (unwanted) and makes the 
picture quality poor (unwanted).

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 5:27

GoogleCodeExporter commented 9 years ago
So do the software renderer mode (and it is the real console quality). 
Otherwise if you want to have same rendering, someone need to implement 
internal resolution in SW mode too. But it would be very slow..

Original comment by gregory....@gmail.com on 2 Jun 2013 at 5:53

GoogleCodeExporter commented 9 years ago
"So do the software renderer mode (and it is the real console quality)."

Software mode looks better if you change the windows desktop to software mode's 
resolution (real console quality) but it looks bad if you keep your monitor at 
1920x1080 (not real console quality). So I see what you mean by that part. 
Changing the desktop resolution to play pcsx2 only is impractical though and 
the shader is made for bigger resolutions. I do hope that ramapcsx2 has 
something great up his sleeve in the future so that it will all work out ;)
In the end, it is still a great emulator :)

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 6:13

GoogleCodeExporter commented 9 years ago
Your problem with the scanlines ain't because of PCSX2 resolution method, but a 
problem with the shader effects. The implementation ain't robust at all, and 
neither the shader effect itself I would guess.

In other words, it needs better shader-ness.

Original comment by KrossX3 on 2 Jun 2013 at 7:01

GoogleCodeExporter commented 9 years ago
the dolphin scanlines do the same thing when the fullscreen rez is lowered as 
shown in dolphin pic #1 compared to dolphin pic #2 and dolphin pic #3 where the 
internal rez is just lowered and the shader stays the same.

"In other words, it needs better shader-ness."
I guess? xD

Original comment by shinra35...@gmail.com on 2 Jun 2013 at 7:42

GoogleCodeExporter commented 9 years ago
Yup. You can scale the shader effects with the resolution info, and to avoid 
such things the scanline shader should be better applied after resize at window 
resolution. Dunno how to go about that, but should be something similar to what 
Media Player Classic HC does (pre-resize and post-resize shaders).

So that MPC-HC shader-ness would be decent shader-ness. What we currently have 
is... something, which is better than nothing. XD

Original comment by KrossX3 on 2 Jun 2013 at 9:11

GoogleCodeExporter commented 9 years ago
Current shaders are experimental anyway. Guess this is one reason :p
Maybe there's external tools for post process shaders?

Original comment by ramapcsx2.code on 3 Jun 2013 at 10:23

GoogleCodeExporter commented 9 years ago
There is something called fxaa injector that I saw before but I could never get 
it to work with pcsx2. I got it to work on other pc games though just for 
testing, half the effects look okay but the scanlines were horrendous xD

Original comment by shinra35...@gmail.com on 3 Jun 2013 at 3:14

GoogleCodeExporter commented 9 years ago
gsdx already supports fxaa internally

SMAA injector is far better.

Original comment by danialho...@gmail.com on 5 Jun 2013 at 1:22

GoogleCodeExporter commented 9 years ago
I like windowed fullscreen. In fact, I love it.
If you guys ever change that, please at least leave an option to use it.
It helps so much to be able to just resize the window to fullscreen resolution 
on a second monitor without tinkering, the first monitor changing at all, the 
titlebar, or strange (SDL, seriously Dolphin, why) fullscreen methods.

Original comment by dottb...@gmail.com on 4 Jul 2013 at 1:02

GoogleCodeExporter commented 9 years ago
dottboy: 
Your view as a user is fine but you're not seeing the problems we have.
Giving the GS plugin full screen control means unhooking it from all PCSX2 
controls.
There are certain feedback hooks in the GS Window that would stop working.
We can try it but it's not as easy as just "giving the option". There is a 
reasoning behind this ;)

Original comment by ramapcsx2.code on 4 Jul 2013 at 6:09

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
So will the option ever come back?

Original comment by nokiaqdman on 14 Oct 2013 at 7:11