[jak 2] ETIE (#2326)

Definitely needs a clean up pass, but I think the functionality is very
close.

There's a few "hacks" still:
- I am using the emerc logic for environment mapping, which doesn't care
about the length of the normals. I can't figure out how the normal
scaling worked in etie. I want to do a little bit more experimentation
with this before merging.
- There is some part about adgifs for TIE and ETIE that I don't
understand. The clearly correct behavior of TIE/ETIE is that the alpha
settings from the adgif shader are overwritten by the settings from the
renderer. But I can't figure out how this happens in all cases.
- Fade out is completely disabled. I think this is fine because the
performance difference isn't bad. But if you are comparing screenshots
with PCSX2, it will make things look a tiny bit different.
This commit is contained in:
water111
2023-03-17 20:35:26 -04:00
committed by GitHub
parent 6670124296
commit 2fa4a23ea1
41 changed files with 9101 additions and 858 deletions
+5 -5
View File
@@ -91,8 +91,8 @@ int main(int argc, char** argv) {
//
// Only handling args the launcher provides, all others can be changed
// in this repo at the time of merge.
std::vector<char*> adjusted_argv_vals;
std::vector<char*> adjusted_argv_vals_passthru;
std::vector<const char*> adjusted_argv_vals;
std::vector<const char*> adjusted_argv_vals_passthru;
for (int i = 0; i < argc; i++) {
const auto& val = std::string(argv[i]);
// Handle all args that aren't passed through
@@ -117,7 +117,7 @@ int main(int argc, char** argv) {
}
}
std::vector<char*> new_argv;
std::vector<const char*> new_argv;
if (!adjusted_argv_vals.empty() || !adjusted_argv_vals_passthru.empty()) {
new_argv.push_back(argv[0]);
for (const auto& arg : adjusted_argv_vals) {
@@ -129,7 +129,7 @@ int main(int argc, char** argv) {
new_argv.push_back(arg);
}
}
argv = new_argv.data();
argv = (char**)new_argv.data();
argc = new_argv.size();
}
// --- END temporary shim
@@ -209,7 +209,7 @@ int main(int argc, char** argv) {
bool force_debug_next_time = false;
// always start with an empty arg, as internally kmachine starts at `1` not `0`
std::vector<char*> arg_ptrs = {""};
std::vector<const char*> arg_ptrs = {""};
for (auto& str : game_args) {
arg_ptrs.push_back(str.data());
}