gonetz / GLideN64

A new generation, open-source graphics plugin for N64 emulators.
Other
754 stars 175 forks source link

Feature: new GUI #1213

Closed gonetz closed 7 years ago

gonetz commented 7 years ago

Aquatakat designed new nice GUI layout. Code is in https://github.com/gonetz/GLideN64/tree/feature_new_gui feature branch.

WIP build: https://drive.google.com/file/d/0B0YqMPjGo3B2TGpsenpZeTVsWUU/view?usp=sharing

We need your feedback.

LuigiBlood commented 7 years ago

I actually like this GUI better overall. I do have one issue (not that I'll ever use it though): image

I saw there was supposed to be arrows on the buttons?

oddMLan commented 7 years ago

Looks good but I still think the Frame buffer copy/depth sections should use comboboxes so less text is occupying the interface in the Frame buffer tab. That would also allow us to get rid of the white space at the bottom of the window in other tabs providing a small, compact and functional UI, while making it look less cluttered with text.

mockup

Seriously though this seems like the perfect window size. mockup0 mockup1

Aquatakat commented 7 years ago

@oddMLan @gonetz

About the comboboxes vs. the radio buttons I like both layouts. The reason I changed it back to radio buttons was at gonetz' suggestion. Maybe we just need a little more input on it.

@LuigiBlood

It looks like you're using Windows 7? I'll have to find out which fonts preinstalled on Windows 7 include those arrows, or maybe just make some arrow graphics myself.


I'm getting ready to prepare another pull request with this added feature:

image

LuigiBlood commented 7 years ago

Yeah I'm a Windows 7 user.

Aquatakat commented 7 years ago

I used some skills I have with Paint.net to create some new arrows. They're a bit bold but they do the job.

image

ghost commented 7 years ago

Looks quite nice 👍

gonetz commented 7 years ago

There is a problem with custom icons. I use static build of QT libs. GLideN64.dll contains all necessary resources, but icons not displayed. I don't know why. Green N in window caption is missing. Warning icon in fb emulation tab is missing also. The same will be for arrows.

Aquatakat commented 7 years ago

@gonetz Is it because I manually edited the .qrc file rather than using the Creator? I couldn't figure out where to add it so I manually edited the .qrc XML file.

gonetz commented 7 years ago

No, I have the same issue in master branch.

Aquatakat commented 7 years ago

@gonetz I wonder if it works with an Icon.ico rather than PNG.

http://aquatakat.flussence.eu:81/Icon.ico

Mario54321 commented 7 years ago

Sorry. I posted in the wrong spot. See https://github.com/gonetz/GLideN64/issues/885#issuecomment-258751503

Aquatakat commented 7 years ago

@Mario54321 For clarity, here's the comment mentioned:

Instead of just saying "Aspect ratio" you can specifically put the type of aspect ratio it is (storage aspect ratio, display aspect ratio, pixel aspect ratio)

"Display aspect ratio" or "Output aspect ratio" might be a good option.

gonetz commented 7 years ago

I wonder if it works with an Icon.ico rather than PNG.

No, it does not.

I found these discussions: https://forum.qt.io/topic/13034/solved-qt-static-missing-icon-plugin https://forum.qt.io/topic/34969/static-link-q_import_plugin-qico-unresolved-external-symbol

First says, that qico plugin must be used. Second says how to do it with Visual Studio.

Unfortunately, it does not help. I imported qico plugin, but icon still missing.

Mario54321 commented 7 years ago

I think it might be better if "Texture cache size" is placed in the Texture enhancement tab instead of the Video tab

Aquatakat commented 7 years ago

@gonetz

Maybe adding add LIBS += to the .pro file?

Aquatakat commented 7 years ago

This is where I looked this up: https://forum.qt.io/topic/13034/solved-qt-static-missing-icon-plugin/6

Aquatakat commented 7 years ago

@Mario54321

I thought the same originally, but that texture cache only affects textures that haven't been enhanced.

gonetz commented 7 years ago

Bingo! Icon.ico works. There is a problem: when QT plugin for MSVS creates .vcxproj project from .pro, it writes resources names into the project. I changed Icon.png to Icon.ico in icon.qrc, but autogenerated ui_configDialog.h still uses ":/Icon.png". I changed it to ":/Icon.ico" and finally got the main window's icon.

Aquatakat commented 7 years ago

I generated my PNGs from ffmpeg. There must be some kind of parsing problem with them. I'll give you .ico's for each instead.

gonetz commented 7 years ago

Ok.

gonetz commented 7 years ago

Current WIP: https://drive.google.com/file/d/0B0YqMPjGo3B2RzFhelNmaVlyZzA/view?usp=sharing

oddMLan commented 7 years ago

Looks good, but again, the Framebuffer tab makes the entire window taller than it needs to be, creating tons of ugly whitepace on an UI that would look perfect if the window was shorter - could you make a prototype with comboboxes instead of radio options? These options don't have to be radio buttons if they barely need to be touched. With a proto people could decide on which layout is better.

Before 1 After 2

Before 3 After 4

After is much better IMO.

gonetz commented 7 years ago

'Frame buffer swap on' also should be replaced by combobox then. This option hardly should be changed on desktop.

gonetz commented 7 years ago

I think it might be better if "Texture cache size" is placed in the Texture enhancement tab instead of the Video tab

It is control for video memory cache. It is not related to cache for enhaced textures.

@Aquatakat looks like 'texture cache size' is confusing name for that option. It should be something like "video memory usage limit".

gonetz commented 7 years ago

New WIP build: https://drive.google.com/file/d/0B0YqMPjGo3B2QVVzLWJzbTk4RlU/view?usp=sharing

gonetz commented 7 years ago

Alternative layout of frame buffer emulation page suggested by oddMLan: https://drive.google.com/file/d/0B0YqMPjGo3B2bllFdV93OF85UnM/view?usp=sharing

AmbientMalice commented 7 years ago

So here are my suggestions rephrased from https://github.com/gonetz/GLideN64/issues/1216:

Add a "native N64 resolution" checkbox near the resolution slider. Its description should be something like "(more accurate)" The tooltip should explain that it fixes various issues such as Quest 64's text. When the checkbox is ticked, the resolution scaler should be greyed out.

This "native N64 resolution" setting should be something that can be set globally, or per-game in the ini file, and I'll draw up a list of 2D games where forcing native resolution would arguably be best in the near future.

gonetz commented 7 years ago

Add a "native N64 resolution" checkbox near the resolution slider.

It hardly will look nice with current design.

I suggest to put that checkbox into 'Emulation' page. It already has 'Render 2D elements in N64 resolution'. Add new checkbox 'Render everything in N64 resolution (accurate but low-res)' Made them mutually exclusive.

BTW, 'Render 2D elements in N64 resolution' is confusing. User may think, that 2D will be small and low-res. Actually, 2D first rendered in native resolution, then result rendered in user defined resolution. May be 'Multi-pass rendering of 2D elements'?

AmbientMalice commented 7 years ago

I suggest to put that checkbox into 'Emulation' page. It already has 'Render 2D elements in N64 resolution'. Add new checkbox 'Render everything in N64 resolution (accurate but low-res)' Made them mutually exclusive.

It's a bit muddled to have the "ratio of N64 resolution" slider and the "render at 1x native resolution" checkbox on different tabs. Especially if enabling the checkbox greys out the slider.

Aquatakat commented 7 years ago

Would it make sense to move the render at factor of N64 resolution slider to the emulation tab? Then it could live next to a "render at N64 resolution" checkbox and not be confusing when the slider is disabled.

BTW, 'Render 2D elements in N64 resolution' is confusing. User may think, that 2D will be small and low-res. Actually, 2D first rendered in native resolution, then result rendered in user defined resolution. May be 'Multi-pass rendering of 2D elements'?

I have a few ideas about this - I'll make something.

AmbientMalice commented 7 years ago

Would it make sense to move the render at factor of N64 resolution slider to the emulation tab?

Hmm... Maybe? Dolphin does separate internal and output resolution settings. Output is on the first tab, internal+AF+AA+per pixel lighting are on the second.

gonetz commented 7 years ago

Would it make sense to move the render at factor of N64 resolution slider to the emulation tab?

I don't see a contradiction here. Use of native resolution factor does not change output resolution.

Aquatakat commented 7 years ago

image

1227

oddMLan commented 7 years ago

To be honest since this alters the video resolution (or output), this would be more fitting under the "Video" tab.

Also I think the "Original N64 resolution" option is redundant with a slider there. You could just make the 1x option say "1x (Original N64 resolution)"

That is, if this is technically possible under QT

AmbientMalice commented 7 years ago

@oddMLan Well, Dolphin puts its internal resolution stuff on the second tab. I think this is a good compromise.

@Aquatakat I would suggest removing the 0x factor setting. So that when you select the Factor of N64 resolution setting, it starts at 1x.

What would the ini setting be to force native on a per-game basis?

AmbientMalice commented 7 years ago

I would change "Video resolution" to "Screen resolution".

Also, I would change "Render output" to "Internal resolution". I think internal resolution is a reasonably well known concept now that so many games separate their internal and output resolutions. (Doom, Call of Duty, Shadow Warrior, Serious Sam, etc.)

oddMLan commented 7 years ago

Internal resolution factor?

Yeah, it is a widely used term in emulators, true. But I still think N64 resolution factor sounds a bit more understandable for someone who isn't familiar with the term.

AmbientMalice commented 7 years ago

But I still think N64 resolution factor sounds a bit more understandable for someone who isn't familiar with the term.

No, I meant the section heading.

It says "Render output at:"

I would change that to "Internal Resolution:" Because you're changing the internal resolution. The output resolution is controlled by the resolution settings on the other tab.

I think "Factor of N64 resolution" is fine for that subsection.

oddMLan commented 7 years ago

Oh yes, then I would agree with you. Also with that change the section suddenly sounds more fitting under "Emulation".

oddMLan commented 7 years ago

On a sidenote:

WIP build: https://drive.google.com/file/d/0B0YqMPjGo3B2TGpsenpZeTVsWUU/view?usp=sharing

Alternative layout of frame buffer emulation page suggested by oddMLan: https://drive.google.com/file/d/0B0YqMPjGo3B2bllFdV93OF85UnM/view?usp=sharing

Something must've regressed between the first and the second build. The performance I'm getting on the second build in Mario Tennis is atrocious (48 VI/s), while the first build works super fast (166 VI/s). @gonetz Did you build debug on the second one by mistake?

Aquatakat commented 7 years ago

@oddMLan @gonetz

I noticed the performance problems also. I was originally getting 60 VI's in The New Tetris (with frame limiting) vs. about 30-40.

gonetz commented 7 years ago

I agree with @AmbientMalice:

Rename "Render output at:" to "Internal Resolution:".

It is really good explanation of that option. The first option should be "Same as output resolution" Second option is ok. Slider for the third option should start from 2.

oddMLan commented 7 years ago

But what about this

Also I think the "Original N64 resolution" option is redundant with a slider there. You could just make the 1x option be more specific "1x (Original N64 resolution)"

Supress the second option, just leave the slider.

gonetz commented 7 years ago

@oddMLan First build is release one, others are non-optimized debug builds. These builds posted to test UI, not the plugin itself.

gonetz commented 7 years ago

What would the ini setting be to force native on a per-game basis?

[frameBufferEmulation] nativeResFactor=1

AmbientMalice commented 7 years ago

@oddMLan That doesn't make it clear that literally every resolution that isn't 1x breaks things. If you want games to not be broken, you select the clearly marked "Original N64 resolution".

gonetz commented 7 years ago

Slider should start from 2, because 0 and 1 correspond to first two options.

AmbientMalice commented 7 years ago

Slider should start from 2, because 0 and 1 correspond to first two options.

So in other words...

nativeResFactor=0 Plugin selects "Same as output resolution." nativeResFactor=1 Plugin selects "Native N64" nativeResFactor=2+ Plugin selects appropriate setting on slider.

That makes sense. And the ini settings will be nice and clean this way.

oddMLan commented 7 years ago

paint skills off charts

This is less redundant overall IMO.

@AmbientMalice People usually pick 1x resolution for faithfulness, not necessarily accuracy. That is more accurate can be specified in a tooltip when you hover over the radio option.

Aquatakat commented 7 years ago

@gonetz We could have the radio buttons change the slider (and disable it) and the slider disable the incorrect radio buttons.