Converts RGBA channels of DDS texture files between Fox Engine style normals and regular style normals using ImageMagick.
Both files and entire directories containing texture files can be sent to the script (the script will only convert the normal maps among them). Directories are parsed non-recursively.
The script by default also handles conversion of normal map texture files that have a custom filename and lack the standard _nrm
/_hnm
suffix. It achieves this by performing color matching comparisons that requires a minimum threshold to pass as a normal map of either the Fox Engine or regular style. This is only performed on inputs that lack the standard suffixes and due to the added delay of the comparison the method is excluded from directories parsed to avoid unintended slowdown.
Example GIF of script usage, with both files and a directory as inputs:
Example GIF of suffix-less filename conversion:
Note: in the GIFs above the uncompressed intermediate setting was disabled so the thumbnails could update to show the conversion more visually. By default an uncompressed intermediate is used to avoid compressing twice to DTX5.
- ImageMagick v7+ (for its
magick.exe
)
- Install ImageMagick.
- Download and unpack the top zip from the Releases tab.
The script can launched a couple different ways:
- Dropping DDS file(s) on its icon.
- Launching it from selected DDS file(s) via a custom Send To context menu shortcut (refer to this guide from my other repository for a howto).
The script includes a handful of default settings that can be edited by opening the script in a text editor (eg: Notepad). The settings are explained by comments.
Among the settings are:
- Suffix-less matching.
- Compression for intermediate (regular style) DDS.
- Backup the original normal map files or replace upon conversion.
- Disabling of the green channel inversion (only disable if sure your normal map editor requires it).
-
If the source DDS files to be converted intially are regular style normals with non-MGSV suffixes the detection process of the script can be sped up by suffixing their filenames with
_nrm_reg.dds
, which the script will immediately detect as regular style normals. Otherwise a visual comparison is made which adds a delay. -
With the suffix-less detection setting enabled if a DDS file doesn't meet the minimum threshold to be determined as a normal map texture the script will list it as
[Skipped]
in the window log.
Thanks to Wheaton Adams#4857 (discord) for initial ImageMagick channel processing commands and script idea proposal.