diff --git a/features/Terrain Helper/Shaders/Features/TerrainHelper.ini b/features/Terrain Helper/Shaders/Features/TerrainHelper.ini index b0dfe9d9d8..439d7ab625 100644 --- a/features/Terrain Helper/Shaders/Features/TerrainHelper.ini +++ b/features/Terrain Helper/Shaders/Features/TerrainHelper.ini @@ -1,5 +1,5 @@ [Info] -Version = 1-0-0 +Version = 1-0-1 [Nexus] nexusmodid = 143149 diff --git a/src/Features/TerrainHelper.cpp b/src/Features/TerrainHelper.cpp index 300c5543ce..9ac26eea32 100644 --- a/src/Features/TerrainHelper.cpp +++ b/src/Features/TerrainHelper.cpp @@ -200,12 +200,9 @@ struct TH_TESObjectLAND_SetupMaterial { bool result = func(land); - // TruePBR sets flag 8 on land cells it processes as PBR; skip TerrainHelper for those. - if (!land->data.flags.any(static_cast(8))) { - auto& terrainHelper = globals::features::terrainHelper; - if (result && terrainHelper.loaded) { - terrainHelper.TESObjectLAND_SetupMaterial(land); - } + auto& terrainHelper = globals::features::terrainHelper; + if (result && terrainHelper.loaded) { + terrainHelper.TESObjectLAND_SetupMaterial(land); } return result; @@ -227,11 +224,18 @@ struct TH_BSLightingShader_SetupMaterial static inline REL::Relocation func; }; -void TerrainHelper::PostPostLoad() +void TerrainHelper::Load() { + // Install TESObjectLAND hook early so TH is inner relative to TruePBR's PostPostLoad hook. + // This ensures TH reads the vanilla material hashKey before TruePBR replaces it with a PBR material. + // This intentionally matches TruePBR's REL::RelocationID(18368, 18791), so no extra + // VR gate is needed unless those offsets diverge. logger::info("[Terrain Helper] Hooking TESObjectLAND"); stl::detour_thunk(REL::RelocationID(18368, 18791)); +} +void TerrainHelper::PostPostLoad() +{ logger::info("[Terrain Helper] Hooking BSLightingShader::SetupMaterial"); stl::write_vfunc<0x4, TH_BSLightingShader_SetupMaterial>(RE::VTABLE_BSLightingShader[0]); -} \ No newline at end of file +} diff --git a/src/Features/TerrainHelper.h b/src/Features/TerrainHelper.h index 69166c0d7f..ed20870dd1 100644 --- a/src/Features/TerrainHelper.h +++ b/src/Features/TerrainHelper.h @@ -37,6 +37,7 @@ struct TerrainHelper : Feature RE::BGSTextureSet* defaultLandTexture; bool enabled = false; + virtual void Load() override; virtual void DataLoaded() override; virtual void PostPostLoad() override; virtual bool SupportsVR() override { return true; };