Mod Window - hakasapl/PGPatcher GitHub Wiki

PGPatcher has a robust system for determining which mod should be patching a given shape. This system can be enabled by selecting any of the mod managers under the Conflict Resolution section of the launcher GUI. If this is not enabled PGPatcher will always patch for the best shader (PBR > CM > Parallax), which can cause issues, therefore it is highly recommended to enable this. When enabled, PGPatcher will launch a window showing relevant mods sometime in the middle of output generation.

Why do I need to sort mods again!? I already have enough load orders to deal with!

That's fair, but the only way is for PGPatcher to have its own load order. Let me give an example. Let's say you have 4 mods which provide the following textures:

  • Mod A provides example_m.dds <-- A complex material environment mask texture
  • Mod B provides example_p.dds <-- A parallax height map texture
  • Mod C provides example_em.dds <-- A complex material environment mask texture but named differently
  • Mod D provides example.json <-- A pbr json that matches example.dds diffuse

All 4 of these mods in theory DO NOT conflict in loose files because they all have different named files and types, HOWEVER, PGPatcher has to decide what to patch from these 4 because all 4 match the diffuse texture example.dds and the normal texture example_n.dds. This is where the priority order comes in. Depending on which mod wins in that list you configure, PGPatcher will know which one to patch.

Conflict Resolution

The mod window looks something like this:

There are several components to this GUI.

Mod Priority (Where mods are positioned in the list)

You can drag and drop mods in the list to configure where you want them in your priority. Mods at the top win over mods below them. Generally speaking, this priority order should be a subset of your loose file order. In other words, if mod A wins over mod B in loose files, it needs to also win in PGPatcher order. Not doing this may cause problems. This isn't strictly required if you know what you are doing, but if you don't stick to this rule of thumb.

MO2 users have the option of locking the order to MO2 loose file order so this rule will be preserved always. This option also prevents you from manually ordering anything. As vortex does not use an explicit mapping like this and does not expose loose file rules to other applications in a meaningful way, that option is not available for vortex users.

Mod Enabling (Checkbox on the left of each mod)

Enabled mods are always auto-positioned above (winning over) disabled mods.

Enabling a mod means that PGPatcher will use assets (usually textures or jsons) from that mod as a "patching source". For example, a parallax texture in an enabled mod will be a candidate for patching a mesh for parallax assuming texture names match. PGPatcher by default will enable every mod that has parallax, complex material, or PBR assets.

You have the option of disabling any of those mods which will prevent PGPatcher from considering files in those mods when patching meshes. However, note that meshes included in a disabled mod can still be patched. See the Ignoring Meshes section below if you would like to change this behavior.

Vanilla mods but those that have textures or meshes are also in the list but are disabled by default. Should you wish for a vanilla texture mod to take precedent over a shader mod, you can enable the vanilla mod and prioritize it like normal. PGPatcher does not actually do anything in terms of patching for vanilla assets, however, setting the priority tells PGPatcher not to do anything for textures/meshes where it is relevant.

Ignoring Meshes by Mod

By right clicking any mod (or a selection of mods), you have the option to Ignore Meshes. Mods for which meshes are being ignored will be striked through in the GUI. This will prevent PGPatcher from patching any meshes from said mod. This can be useful if the mod's author is telling you not to run PGPatcher on their meshes, or they are not using best practice shader properties which PGPatcher sets, thus changing the result the original mod author intended. Always do this instead of putting meshes after PGPatcher in your loose order.