From e51a408b2ce4a5e859e57bfd950ead27ca43c614 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sat, 5 Nov 2016 16:33:15 +0100 Subject: [PATCH] Fix some shader constants --- src/Components/Modules/AssetHandler.cpp | 26 +++++++++++++++++++++++++ src/Components/Modules/Zones.cpp | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Components/Modules/AssetHandler.cpp b/src/Components/Modules/AssetHandler.cpp index e5c2ae00..3dca7da8 100644 --- a/src/Components/Modules/AssetHandler.cpp +++ b/src/Components/Modules/AssetHandler.cpp @@ -121,6 +121,32 @@ namespace Components { asset.material->sortKey = 0xE; } + + // Fix shader const stuff + if (type == Game::XAssetType::ASSET_TYPE_TECHSET && Zones::Version() >= 359) + { + for (int i = 0; i < 48; i++) + { + if (asset.materialTechset->techniques[i]) + { + for (int j = 0; j < asset.materialTechset->techniques[i]->numPasses; j++) + { + Game::MaterialPass* pass = &asset.materialTechset->techniques[i]->passes[j]; + + for (int k = 0; k < (pass->argCount1 + pass->argCount2 + pass->argCount3); k++) + { + if (pass->argumentDef[k].type == D3DSHADER_PARAM_REGISTER_TYPE::D3DSPR_CONSTINT) + { + if (pass->argumentDef[k].paramID == -28132) + { + pass->argumentDef[k].paramID = 2644; + } + } + } + } + } + } + } } bool AssetHandler::IsAssetEligible(Game::XAssetType type, Game::XAssetHeader *asset) diff --git a/src/Components/Modules/Zones.cpp b/src/Components/Modules/Zones.cpp index 262b8307..6d57f444 100644 --- a/src/Components/Modules/Zones.cpp +++ b/src/Components/Modules/Zones.cpp @@ -1070,7 +1070,7 @@ namespace Components { Game::MaterialShaderArgument* arg = &argument[i]; - if (arg->type != 3 && arg->type != 5) + if (arg->type != D3DSHADER_PARAM_REGISTER_TYPE::D3DSPR_TEXTURE && arg->type != D3DSHADER_PARAM_REGISTER_TYPE::D3DSPR_ATTROUT) { continue; }