Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion features/Terrain Helper/Shaders/Features/TerrainHelper.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[Info]
Version = 1-0-0
Version = 1-0-1

[Nexus]
nexusmodid = 143149
Expand Down
20 changes: 12 additions & 8 deletions src/Features/TerrainHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<RE::OBJ_LAND::Flag>(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;
Expand All @@ -227,11 +224,18 @@ struct TH_BSLightingShader_SetupMaterial
static inline REL::Relocation<decltype(thunk)> 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<TH_TESObjectLAND_SetupMaterial>(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]);
}
}
1 change: 1 addition & 0 deletions src/Features/TerrainHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -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; };
Expand Down
Loading