HereInPlainSight/gshade_installer

Transition to ReShade status

LetItGlow opened this issue · 8 comments

Since the Developer of GShade got banned and his GitHub got deleted, this script no longer works.
You can archive this now. Good job for making this script.

Good job for making this script.

Thank you. I kind of took a bit of a break from the internet for a few days, so I'm sorry this response is so late.

I'm going to update the readme that the script is broken (along with instructions on how to remove all GShade installs), but I've been juggling the idea of forking this into a reshade_installer instead. Unfortunately, there's some problems that've made that kind of update... a lot slower than I would have liked, so I'm just going to leave the repo un-archived for now to use this as a thread for discussion / suggestions.

Off the top of my head, the ReShade specific problems:

  • ReShade shaders are not kept in a collective location. The script would have to scrape https://www.pcgamingwiki.com/wiki/ReShade#List_of_known_shader_repositories
    • Alternative: Convert the above to just a list of repo addresses so we're not trying to parse a website and just pull down the list.
      • Con: I'm a terrible maintainer and cannot be trusted to keep such a file up to date.
    • But, if so, make updating that file non-destructive, if possible, for if the user adds their own repos.
  • ReShade presets are probably a step worse as far as collective / ease of collating. ReShade.me points to https://sfx.thelazy.net/games/
    • I have no good suggestions to make this less of a point of pain without just saying that's on the user to sort out on their own.
  • Does ReShade support languages other than English in its UI? (Minor point I just have to look at the next time I'm logged in for raid.) Status: Not that I can see.
  • Provide an edited ini file for per-game file locations? The default options seem lightly broken in wine. Status: This seems to work.

Things worth deciding if updating / converting the script:

  • Long-standing script decision: sunset WINEPREFIX by default, and only require it for opengl games?
    • If so, make sure the games.db code can handle a blank wineprefix.
    • Remove all the checks for a proper wineprefix (I mean, it's a pretty unintelligent check anyway) except for when modifying the wineprefix, I suppose.

I'll leave this repo unarchived so that this thread's open for feedback until I either finish the reshade installer or decide that the shaders / preset issues are a bit too far beyond me to resolve.

lwndow commented

I also want to thank you for making this. There's a need for reshade_installer on Linux to aide people in getting it going. This script can make it far easier to piece it together. Agreed that ReShade is far more splayed than GShade was, but perhaps we could include some cultivated presets/shaders (like Ipsusu, Project Crystal, etc), and an "include.d" directory that we could feed a URL to or something if they wanted to add to it through the installer. I'm invested, would help maintain.

EDIT: can redirect to https://github.com/marzent/reshade-on-unix/ as a short-term solution for now if it all feels like too much.

Umm, I am not a pro, but I think you could "curl" or "git clone" them? You might have to add a check if "git" is installed.

I compiled a dirty list of the shaders so far.

https://github.com/crosire/reshade-shaders.git
https://github.com/CeeJayDK/SweetFX.git
https://github.com/martymcmodding/qUINT.git
https://github.com/FransBouma/OtisFX.git
https://github.com/BlueSkyDefender/AstrayFX.git
https://github.com/BlueSkyDefender/Depth3D.git
https://github.com/Fubaxiusz/fubax-shaders.git
https://github.com/Daodan317081/reshade-shaders.git
https://github.com/brussell1/Shaders.git
https://github.com/luluco250/FXShaders.git
# has odd structure
# https://github.com/Heathen/Pirate-Shaders.git
https://github.com/prod80/prod80-ReShade-Repository.git
https://github.com/originalnicodr/CorgiFX.git
https://github.com/TheGordinho/MLUT.git
https://github.com/LordOfLunacy/Insane-Shaders.git
https://github.com/Matsilagi/RSRetroArch.git
# has odd structure
# https://github.com/ConstantineRudenko/Shaders/tree/master/reshade/Shaders
https://github.com/LordKobra/CobraFX.git
https://github.com/Radegast-FFXIV/reshade-shaders.git
https://github.com/retroluxfilm/reshade-vrtoolkit.git
https://github.com/AlucardDH/dh-reshade-shaders.git
https://github.com/rj200/Glamarye_Fast_Effects_for_ReShade.git

so far this might work with git clone, depending on the folder structure inside the GitHuib Repo.

Plan B, is replace all instances of .git with /archive/refs/heads/master.zip and unpack them into one directory.

Sorry, it's been a busy week at work -- I didn't get much of a chance to work on it much until tonight, a bit.

I figured out how to pull / restructure the repos directly off the wiki page, search for the shaders folder / texture folder, organize them, use a slightly-modified ReShade.ini file (to point to local directories), and slightly restructured the directory structure to be a bit less... multi-directory, at the base level. It's all in a new branch, reshade, if anyone's feeling brave.

That said, current results / status of various things, not specifically script-specific:

  • MLUT is huge. 2.9 gigs, and then I'm copying a chunk of it. I'll probably switch that over to hard linking just to save some space, but that still leaves is so that one repo is basically ten times the size of every other repo combined. (Total size of the directory with all the repos is 3.3 gigs.)
  • There are a lot of warnings coming from a fair amount of the shaders during load.
  • I'm seeing five shaders straight up failing to compile.

Script-specific problems / to-do's:

  • There is not presently any kind of include or blacklist options (in case you're not a fan of MLUTs, I suppose).
  • There's no presets, still (except for an empty 'Off.ini' that I created more to confirm detection than anything else).
  • Script hasn't been culled for excess code, still. Language code (ReShade doesn't support other languages, that I can see), WINEPREFIX data is still required in all cases despite being unnecessary in most cases. Probably more.
  • Maybe move ReShade-extracted files to a subdirectory since it twitches my OCD.

I'm not entirely sure where to go with MLUT. It looks like half the directory size is actually coming from being git cloned in the first place -- the textures and shader folders are 'only' 1.4G and 2.6M, respectively. To be fair, the textures are getting soft-linked to destinations when able, but the script still has failback code to copy files in case of soft links failing, for any reason.

Next steps, IMO, and feedback is welcome: Making include (/ blacklist?) directories for both shaders / presets, finding / deciding on curated (and working-with-available-shaders) presets.

Anyway, it's late. But, at least being able to pull in Shaders from the wiki feels like significant movement.

Okay, so I'm dumb. While crosire apparently used the wiki to draft things in, he wasn't scraping the wiki to get the data. In fact, the data was just over here.

Strangely enough, a giant 3 gig repo isn't on the list.

So now we pull from that list instead. (We just grab all the RepositoryUrl=s and just git clone / git pull them. The script is not currently smart enough to deal with different branches. That really shouldn't be hard but I am kind of dumb and tired. It's something that should be fixed in the future when I'm feeling more... conscious.)

And now the script recognizes an include.d and a blacklist.d directory, which looks for .shader and .preset files in the expected way. It ignores lines that start with comments ( # ) in files. This has only been lightly tested but seeeems to work?

There's now a Custom directory in the preset and shader folders that never gets overridden / deleted.

After testing the include.d information with Ipsusu's repo (as both a .shader and a .preset include file), it was running into one of the issues in Ipsu's FAQ about having a second MLUT shader (from the FransBouma/OtisFX repo). So I added that URL to the blacklist.d folder.

And now... it seems to work. Worth noting, the blacklist.d folder is processed last, so it always wins.

Which makes the script... strangely and confusingly actually usable? It'll need users to manually add presets still as nothing's been made default. (I couldn't even find the mentioned Project Crystal.)

To do: Add the ability to work with git branches.
THE TIME HAS COME! Remove WINEPREFIX from being necessary unless you're installing to an opengl game.
Better user experience for presets.

You did more work then the actual Ghade devs did by taking a Reshade shader, concat all commands into on line, add the atrociously slow TriDither.fx and call it "optimized" - AND SAVE IT BACK INTO shadersfolder under an different name.

Fun Fact, even if you remove the TriDither, the code is slower then the ReShade original.
Anyway. Good job and thanks for working on it, even if you seem to have urgent private matters.

Slow updates due to most of my house getting sequentially sick one by one. It's my turn, which is a miserable time for me, but means I had time to just sit and fix a few lingering things that've been bothering me.

At this point the script is usable (and basically finalized, if not super-well tested), but I really would like to have some example .preset / .shader files, and a file in the blacklist folder would be great, just as pure examples. However, the only repo I know of that fits the bill is Ipsusu's (needs a .shader, .preset, and to blacklist another repo, hits every checkmark) but it looks like there could be some licensing issues with just including those without permission... so when I'm feeling up to it (and I'm a massive introvert on a good day), I'll see about asking.

Once that's done, honestly... the script would probably be ready to be forked to another repo (after another shellcheck). It would be a little weird to keep a reshade installer script still under the gshade name. And the scripts, while sharing a chunk of code still, are significantly different at this point. By necessity, this version requires a bit more interaction from the user just to actually use it, since you have to find your own repos / zip archives for shaders / presets and make a file for each of them.

I still don't like that much, but I still have no better solution, as it stands.

For now, soup.