MiSTer-devel / Filters_MiSTer

Custom Filters for MiSTer's HDMI Scaler
36 stars 12 forks source link

Request: Preset profile system #35

Open trashuncle opened 2 years ago

trashuncle commented 2 years ago

Text file profile loading of "presets" to ease the complication of the new system for most users.

config would look something like this:

#Profile: Generic CRT (S-Video)
h_filter:Upscaling - Recommended/GS_Sharpness_015.txt
v_filter:Scanlines - Standard/Scanlines_70.txt
s_filter:
g_filter:CRT Simulation.txt
m_filter:TrashUncle/CRT/PVM [Monochrome].txt
sorgelig commented 2 years ago

it's already in MiSTer.ini

trashuncle commented 2 years ago

I am aware you can configure your own personal defaults in the .ini file.

This is for a different purpose. This would be for "presets" defining ideal setups to recreate certain visual profiles.

The new system allows for a lot more flexibility in customizing the image, with the flexibility comes a complexity that seems to be confusing for the average user.

Most people would rather select an option that says "CRT Composite" that automatically sets all the filters for that look.

I did speak with Wickerwaka about this though and understand if a feature like this really isn't good at the current time, but maybe possibly down the road, once the filter sets become more stable.

I'm not going to close this for now, as your answer did not really address my actual request.

sorgelig commented 2 years ago

Not sure. May be in the future. Defining 2 filters isn't really complicated. Additional OSD option is what will be more complicated and confusing because it will have one more OSD option which may be overridden by specific filter setting. Probably more clear filter file names will be enough to understand what to choose.

trashuncle commented 2 years ago

I'll close this. I wish I could say the two settings weren't confusing for the average person, but it so far has proven to be the case.

I am sure with more time, people will figure it out though.

tonurics commented 2 years ago

I'd like to remain neutral in regards to this Feature Request. But as to how it could work and what it might look like, we have an example in the form of RetroArch Shader presets:

68747470733a2f2f692e696d6775722e636f6d2f454f43565362542e706e673f31

From an implementation standpoint, when a preset is loaded: it's options are set and knowledge of the preset itself is promptly forgotten.

Perhaps a better Feature Request would be: replace the current Alt1, Alt2, Alt3 .ini files with named alternative .ini files [leaving only one MiSTer.ini]. The preset files can [but would not need to contain] all *.ini options.

sorgelig commented 2 years ago

OSD on MiSTer is limited by size and functionality. Alt1/2/3 names is the only possible way to name them

tonurics commented 2 years ago

Yes, if were were to pursue the second part of my comment: my thought would be to replace the current Config: Main | Alt1 | Alt2 | Alt3 radio element with a file chooser Load additional config *.ini. Upon activation it would open to a new Config [or Presets] folder containing *.ini files, once a file is selected it's changes are applied. The OSD for the file chooser does not change [it behaves the same as a game file chooser].

Users who already have Alt1/2/3 would be able to use them via the new file chooser or by hotkey [if they kept the names the same]. But after moving all configuration files into the new folder.

The new folder might look something like: /config/1080p (Upstairs TV).ini /config/MiSTer.ini /config/mister_alt_1.ini /config/mister_alt_2.ini /config/Presets/Generic CRT (S-Video).ini /config/Presets/PVM (Composite).ini /config/Presets/JVC (Composite).ini ...

sorgelig commented 2 years ago

ini file affects many settings. Sometimes such function gives more confusing than solutions. If you need to change only 1-2 parameters in configs then you have to copy all other parameters between configs. And then if you decide to change something again, then you have to propagate this change to all other configs. Also these configs are not "one for everyone". So it's not what you can provide like shadow masks. Every (advanced) user need to make it himself for his own needs. Thus i don't see much use of such free choice.

tonurics commented 2 years ago

Sorry, I might not have been clear in communicating propagation.

when a preset is loaded: it's options are set

MiSTer.ini is loaded on startup; that sets the initial settings. Any config files loaded afterwards, would only change those options which are defined in the file.

So an end-user's workflow might be:

  1. mister_alt_1.ini only changes video_mode [their own file]
  2. Presets/Generic CRT (S-Video).ini only changes vfilter_default, vfilter_vertical_default, & shmask_default [from repo]
  3. My Audio.ini only changes afilter_default [their own file]
sorgelig commented 2 years ago

filter defaults in ini are weak options. If user will touch these setting in OSD for whatever reason then default won't be applied anymore till user delete specific config file.

tonurics commented 2 years ago

OK, we just need to define some non-weak option keys. I was just using the "_default" versions in my example to convey the idea.

Weak Strong
vfilter_default vfilter
vfilter_vertical_default vfilter_vertical
shmask_default shmask
afilter_default afilter
... ...

etc.

sorgelig commented 2 years ago

In general, such preset would be useful. But i don't think it's good to use INI file for that which includes permanent options and variable. Filters are variable options. Even though user may choose preset, it should be possible to choose specific filter. I think additional option in Video processing to choose a set of filters would be sufficient. So user choose preset file which simply sets all filters without remembering preset file itself.

tonurics commented 2 years ago

Great, it sounds like we are all in agreement on how it should work.

I was just extending the idea to include options beyond visual filters. As it sounded like you thought the scope was too small to justify the work; which led to the Request being closed.

trashuncle commented 2 years ago

In general, such preset would be useful. But i don't think it's good to use INI file for that which includes permanent options and variable. Filters are variable options. Even though user may choose preset, it should be possible to choose specific filter. I think additional option in Video processing to choose a set of filters would be sufficient. So user choose preset file which simply sets all filters without remembering preset file itself.

Based on this reply, I am reopening, as this is what I originally asked for.

drstorm commented 2 years ago

This sounds great. I think that simply setting the filters from a preset file without remembering what the current preset is should be pretty easy to implement too.

I would just suggest to put the preset files in a separate folder.

Another thing I think would be great is the possibility of setting the default preset in the ini.

Either way, I think a lot of people will be happy to use presets instead of actually understanding the meaning of various filters, so thank you for considering the feature. :)

birdybro commented 2 years ago

In general, such preset would be useful. But i don't think it's good to use INI file for that which includes permanent options and variable. Filters are variable options. Even though user may choose preset, it should be possible to choose specific filter. I think additional option in Video processing to choose a set of filters would be sufficient. So user choose preset file which simply sets all filters without remembering preset file itself.

This looks excellent to me too! :)

The presets themselves could be txt files with just the relative paths that Main is parsing for inside them. Example file:

Retro TV Bright.txt

# Starts in the ./Filters/ folder
Horz=Upscaling - Recommended/GS_Sharpness_065.txt
Vert=Scanlines - Brighter/125pct Brightness/Scan_Br_125_65.txt

# Starts in the ./Gamma/ folder
Gamma=Pure_Gamma/gamma_113.txt

# Starts in the ./Shadow_Masks/ folder
Shadow_Mask=Squished VGA [RGB] (1987).txt

Someone loads this txt file, and then it loads everything in the text file into each slot.

Then there could be just 5-10 of these to choose from.