Compare commits

...

8 Commits
0.2.0 ... main

Author SHA1 Message Date
Julian a99e083ce7 Update 'README.md' 2023-02-07 02:03:11 +00:00
Julian e407af4d98
suggest patcher 2023-02-05 16:14:40 -05:00
Julian 98e882eb11
i have infinite time what point does this serve 2023-02-05 12:58:44 -05:00
Julian 4bec7d8198
0.2.1 2023-02-03 14:02:22 -05:00
Julian 9abd399115
Use root folder name from zip 2023-02-03 14:01:57 -05:00
Julian 98dbd192a1
update readme 2023-02-03 11:55:40 -05:00
Julian db9f09a0b2
update error messages 2023-02-02 20:26:48 -05:00
Julian f8cd0c3449
update readme 2023-02-01 16:34:14 -05:00
4 changed files with 59 additions and 15 deletions

2
Cargo.lock generated
View File

@ -491,7 +491,7 @@ dependencies = [
[[package]]
name = "geezshade"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"anyhow",
"copypasta",

View File

@ -2,7 +2,7 @@
name = "geezshade"
description = "Automated ReShade setup for FFXIV with GShade presets"
authors = ["NotNite <hi@notnite.com>"]
version = "0.2.0"
version = "0.2.1"
edition = "2021"
[dependencies]

View File

@ -1,9 +1,36 @@
# GeezShade
Automated ReShade setup for FFXIV with GShade presets.
Automated ReShade setup for FFXIV with GShade presets. Make backups before using this - no stability guarantees.
[CLICK ME TO INSTALL IT](https://git.n2.pm/NotNite/geezshade/releases/latest)
**Note: This is broken, and likely will remain broken. Use [this](https://git.n2.pm/NotNite/DeezShade) instead.**
[CLICK ME TO INSTALL IT](https://git.n2.pm/NotNite/geezshade/releases/latest).
## Why?
I felt like it.
## How?
ReShade's installer is just a weird .zip file and GShade is just reskinned ReShade with barely any new features. Almost every single shader I've tested works fine on ReShade.
Specifically, it goes through the following steps:
- Fetch information about the latest release of ReShade and GShade from [a metadata file](https://notnite.com/geezshade.json)
- Download [ReShade](https://reshade.me/#download) with full add-on support and extract it
- Download [GShade shaders](https://github.com/Mortalitas/GShade) and extract them
- Download [GShade presets](https://github.com/Mortalitas/GShade-Presets) and extract them
I am not rehosting any of the shaders or presets. The download process uses the GitHub API and the ReShade CDN. These are open to the Internet for anyone to download in two clicks - it's just been automated here.
Note that for a short period of time after releasing this, ReShade's CDN went offline and I switched to a rehost for a few hours.
## Help, something's broken
If it's with the installer - email me! `geezshade@(my username).com`
If it's with ReShade or the shaders - don't waste your time. GShade provides no guarantees their shaders will work on ReShade.
## I want to contribute
This Forgejo instance doesn't have signups enabled. Email me a patch file (see above).

View File

@ -65,18 +65,35 @@ fn get_gshade_presets(xiv_install: PathBuf, config: GeezShadeConfig) -> anyhow::
let shaders_zip = zip::ZipArchive::new(Cursor::new(gshade_shaders))?;
let presets_zip = zip::ZipArchive::new(Cursor::new(gshade_presets))?;
let shaders_folders = vec![
"GShade-master/Textures",
"GShade-master/Shaders",
"GShade-master/ComputeShaders",
];
let presets_folders = vec!["GShade-Presets-master/FFXIV"];
let shaders_folder_name = shaders_zip
.file_names()
.next()
.unwrap()
.split('/')
.next()
.unwrap()
.to_string();
let presets_folder_name = presets_zip
.file_names()
.next()
.unwrap()
.split('/')
.next()
.unwrap()
.to_string();
let shaders_folders = vec!["Textures", "Shaders", "ComputeShaders"]
.iter()
.map(|x| format!("{}/{}", shaders_folder_name, x))
.collect::<Vec<String>>();
let presets_folders = vec![format!("{}/FFXIV", presets_folder_name)];
let dir = xiv_install.join("reshade-shaders");
println!("extracting presets");
extract(dir.clone(), shaders_zip, shaders_folders.clone())?;
extract(dir, presets_zip, presets_folders.clone())?;
extract(dir.clone(), shaders_zip, shaders_folders)?;
extract(dir, presets_zip, presets_folders)?;
Ok(())
}
@ -84,7 +101,7 @@ fn get_gshade_presets(xiv_install: PathBuf, config: GeezShadeConfig) -> anyhow::
fn extract(
dir: PathBuf,
presets_zip: ZipArchive<Cursor<Vec<u8>>>,
presets_folders: Vec<&str>,
presets_folders: Vec<String>,
) -> anyhow::Result<()> {
for filename in presets_zip.file_names() {
for folder in &presets_folders {
@ -216,7 +233,7 @@ fn main() -> anyhow::Result<()> {
Ok(config) => config,
Err(e) => {
show_error(
"An error occured trying to fetch information required for GeezShade.",
"An error occured trying to fetch information required for GeezShade. This may be because you are offline, the server is down, or the installer is critically out of date.\nTry downloading the latest version at https://notnite.com/geezshade or try again later.",
format!("{:?}", e),
);
@ -253,7 +270,7 @@ fn main() -> anyhow::Result<()> {
}
if let Err(e) = do_the_thing(xiv_install.to_path_buf(), config) {
show_error("An error occured.", format!("{:?}", e));
show_error("An error occured setting up ReShade.", format!("{:?}", e));
return Err(e);
}