File information
Last updated
Original upload
Created by
Several Contributors - See BelowUploaded by
hakasaplVirus scan
Activity logs
This page was last updated on 19 April 2025, 12:34AM
- Changelogs
-
-
Version 0.8.12
- Improved efficiency of mod folder mapping by only checking relevant folders
- Improved efficiency of loose file mapping by only checking relevant folders
- Improved efficiency of BSA file loading (about 2x speed difference)
- High memory option will now preserve one step up the stack resulting in faster runtimes
- Changed PBR matching behavior - now known suffixes will not be removed from match_diffuse and match_normal
- Map textures from meshes option is removed, it is now always enabled
- Texture patching is split into its own section now
- PG EDIDs are more reable using the diffuse texture name
- Fixed duplicate NIFs leaving behind the MLP flag when it is incompatible
- Fixed MLP meshes having CM applied to them
- Fixed duplicate meshes with no shader type sometimes getting wrong textures due to common texture sets
- Fixed duplicate texture sets being patched incorrectly for some meshes
-
Version 0.8.11
- Fixed issue for Skyrim VR with mismatching formids between output plugins
- Fixed 3d index being calculated incorrectly for some meshes
- Fixed MO2 operator++ crash for cases where MO2 does not put hidden folders in the VFS
- Fixed mohidden files/folders being included in file map
- Fixed existing output folder deletion checks being case-sensitive
- Fixed PBR vertex_color modifiers not triggering a NIF change
- Fixed PBR empty slot commands having "texture" prepended to them causing errors
- Corrupt NIFs should be handled more gracefully now with an error message indicating which NIF
- Texture name base checks will only operate on a per-slot basis now instead of checking suffixes for every slot
- Fixed "textures" appearing more than once in NIF texture paths causing issues
-
Version 0.8.10
- FormIDs will now be kept persistent across runs where possible
- Fixed unhandled exception around UTF8 chars when diagnostics were enabled
- Fixed diagnostics JSON having some data in incorrect places due to stale pointers
- Improved GPU operation performance
- Added "Fix Subsurface Scattering" post-patcher
- Upgraded CM maps will no longer have red channel as this often is mismatched
- Added default fields support for PBR jsons
- Added "vertex_color_lum_mult" to PBR jsons
- Added "vertex_color_sat_mult" to PBR jsons
- Added critical error for modlist.txt from MO2 being empty
- Added metadata to exe (properties > details in Windows)
- Fixed .dds case check for texture hook patchers
- Added "zbuffer_write" option for PBR jsons
- Fix load order not checking case which results in duplicate modkeys when installing CC mods manually
- Fixed invalid shader permutation for CM + rim lighting + soft lighting + back lighting
- Changed wording on some GUI elements to be more clear
- Crash dumps will now include the local memory state
- Fixed crash dumps not having timestamp in the filename
-
Version 0.8.9
- Added a "Enable Diagnostics" advanced option to generate files to help with support
- Added "Check Paths" toggle for advanced options in the TruePBR patcher
- Added "Print Nonexistent Paths" toggle for advanced options in the TruePBR patcher
-
Version 0.8.8
- Added "Fix Mesh Lighting" pre-patcher (Thanks to Catnyss for their article!)
- Fixed bug where texture sets of duplicate NIFs were not being patched even if an alternate texture didn't exist
- Changed alpha message to say "beta"
-
Version 0.8.7
- Added --full-dump CLI argument to ParallaxGen.exe to generate a full crash dump
- Fixed PBR matching bug when multiple full paths were specified as well as a short path
- Disabled patching for CM on shaders with anisotropic_lighting and soft_lighting
- Re-enabled CM patching on texture sets with slots in 3,6,7
- Fixed non-ascii chars not working for paths in modorganizer.ini
- Issues with plugins will now be printed to console instead of an unhandled exception
-
Version 0.8.6
- 3D name is no longer considered for matching alternate textures
- ParallaxGen.esp now holds new TXST records only
- ParallaxGen_X.esp (where X is sequential numbers) will be created automatically as required based on master limit
- Plugin patching for armor weight checks is now verified that it is actually armor instead of just a NIF named as such (very rare edge case)
-
Version 0.8.5
- Fixed "_1" armor being renamed to "_0" in some cases in the plugin
- Fixed some records being copied to ParallaxGen.esp that were not needed
- Fixed non-armor plugin patching being broken
- Reverted localization change on parallaxgen.esp
-
Version 0.8.4
- Fixed some statics in plugins not being patched
- Fixed only one model of two in armor and armor addon records being patched
- Fixed localization breaking for overridden records in ParallaxGen.esp
- Fixed duplicate meshes not being created past PG1
- Fixed vanilla texture sets not being included in duplicate mesh consideration
- Fixed 1st person armor models not being patched
- Fixed duplicate meshes not being created for _0 or_1 armor meshes depending on which is in the plugin
-
Version 0.8.3
- Fixed some duplicate meshes saving with no data
-
Version 0.8.2
- Added `converttohdr` patcher for pgtools
- Temporarily disabled default patcher because it is causing issues, it will come back with revamped conflict resolution system in 0.9.0
- Removed the GPU Acceleration option, which is now required
- Fixed some custom paths in modorganizer.ini with %BASE_DIR% in them that were not properly parsed
- Specular flag will be set if CM map has glosiness
- Fixed duplicate modkeys crash
- Fixed mesh slot size being modified even if nothing is being patched
- Fixed duplicate meshes not being saved in some cases
- Hopefully fixed conversion error crash
-
Version 0.8.1
- Specular strength will be set to 1.0 for complex material
- Fixed repeated TXSTs not applying to STAT records on 2+ iterations
- Fixed new mods not being sorted according to shader type (including no shader)
-
Version 0.8.0
- Added pgtools.exe modding tools
- Added pgtools patcher to convert particle lights to light placer lights
- loadorder.txt is no longer required
- Mods that do not have any special shader type can be prioritized now
- Existing TXST records will no longer be patched, only new ones will be created
- Added support for PBR fuzz
- Added support for PBR hair
- When mixing shaders with alternate texture records meshes will now be duplicated where required
- Fixed 1PX black dynamic cubemap not being black which would cause really shiny surfaces in recent CS releases
- Parallax maps included in the pbr subdirectory will be considered a different "height pbr" texture type
- Closing mod sort dialog will now close the whole app
- BSMeshLODTriShapes will also be patched now
- Meshes that have higher priority than textures can be patched now
- Plugin patching will also be considered when evaluating mods for conflicts now
- Removed simplicity of snow warning as the mod is not inherently incompatible
- Fixed NULL output in ParallaxGen_Diff.json when PG patched nothing
- PBR patcher clears hair_soft_lighting flag now
- PBR texture swap JSONs are automatically generated
- Fixed yellow highlights staying in mod list after deselecting everything
- Fixed deleted texture maps not actually deleting
- Added additional help text to mod sort dialog
- PBR slot commands will have "textures\" added to the beginning automatically if not already there
- Specular color will be set to white for complex material that has metalness
- Crash dumps will be generated automatically upon crashing
- PBR delete: true will now set alpha to 0 instead of deleting the shape
-
Version 0.7.3
- Added a warning for simplicity of snow users if PBR or CM is enabled (SoS is incompatible with these shaders)
- Fixed thread gridlock that casued mesh patching to get suck occasionally
- Fixed PBR JSON delete: true not working
- Fixed uncaught exception if mod folder does not exist in MO2
- Fixed dyncubemap blocklist not saving/loading correctly in the GUI
- Fixed dyncubemap blocklist not showing up on start in the GUI if advanced options is enabled
- Fixed uncaught exception when a NIF has non-ASCII chars as a texture slot
-
Version 0.7.2
- Added mesh allowlist
- Added mesh allowlist, mesh blocklist, texture maps, vanilla bsa list, and dyncubemap blocklist to GUI advanced options
- If using MO2 you now have the option to use the MO2 left pane (loose file) order for PG order
- Added ESMify option for ParallaxGen.esp
- Fixed unicode character handling
- Added critical error if outputting to MO2 mod and mod is enabled in MO2 VFS
- Added critical error if DynDoLOD output is activated
- Added "save config", "load config", and "restore config" buttons to the launcher GUI
- MO2 selection will respect custom paths for mods and profiles folder now
- Fixed exceptions when plugin patching is not enabled
- PBR prefix check accounts for slot commands now too
- Improved warning output for texture mismatches
- Fixed case where multiple PBR entries did not apply together
- Fixed PBR slot check to check at the end of applying all entries for the match
- When PBR is the only shader patcher selected "map textures from meshes" will be automatically unselected
- INI files in the data folder will be read for BSA loading now
- Advanced is now a checkbox with persistence in the launcher GUI
- Fixed failed shader upgrade applying the wrong shader
- Shader transform errors don't post more than once now
- Exceptions in threads will trigger exceptions in main thread now to prevent error spam
- Texture TXST missing warnings are changed to debug level
- If mesh texture set has less than 9 slots it will be resized to 9 slots automatically while patching
- New texture sets will be created if required for two different shader types in meshes now
-
Version 0.7.1
- Fixed PBR applying to shapes with facegen RGB tint
- Fixed exception when file not found in BSA archive for CM check
- Added workaround for MO2 operator++ crash
- Max number of logs has been increased from 100 to 1000
- Fixed warning for missing textures for a texture set when upgrading shaders
- User.json custom entries are no longer deleted
-
Version 0.7.0
- Added a launcher GUI
- All CLI arguments except --autostart and -v/-vv have been removed in favor of the persistent GUI
- Added a mod manager priority conflict resolution system with UI
- Complex material will set env map scale to 1.0 now
- Fixed PBR bug when there were two overlapping matches
- Default textures are applied when TXST record cannot be patched for a shader
- Output directory will only delete items that parallaxgen might have generates (meshes folder, textures folder, PG files)
- BSLODTriShapes are now patched too
- Upgrade shaders only upgrades what is required now
- If user does not have .NET framework an error is posted now
- PBR ignore Skin Tint and Face Tint types now
- meta.ini is not deleted when deleting previous output
- Fixed plugin patching bug that would result in some alternature texture records referencing the wrong TXST record
- Fixed NIF block sorting breaking 3d index in plugins
- ParallaxGen.esp will be flagged as light if possible
- Load order configs in the ParallaxGen folder will no longer do anything - use cfg/user.json instead
-
Version 0.6.0
- Added plugin patching
- Fixed PBR rename not functions with certain suffixes
- Fixed ParallaxGen thinking RMAOS files were CM
- -vv logging mode will only log to file now not the terminal buffer
- Added a function to classify vanilla BSAs in the config, which will ignore complex material and parallax files from them
- Fixed retrieval of game installation directories from the registry
- Normal is matched before diffuse for CM and parallax now
- If multiple textures have the same prefix, a smarter choice will be made based on the existing value
- Only active plugins will be considered when plugin patching and loading BSAs now
- Meshes are only considered in the "meshes" folder now
- Textures are only considered in the "textures" folder now
- Fixed "textures\" being added to end of slots in very rare edge cases
-
Version 0.5.8
- Fixed PBR bug when multilayer: false is defined
- Fixed upgrade-shader not generating mipmaps
- Fixed PBR bug with duplicate texture sets
- New method for mapping textures to types by searching in NIFs
- Added --disable-mlp flag to turn MLP into complex material where possible
- Removed weapons/armor from dynamic cubemap blocklist
- Added --high-mem option for faster processing in exchange for high memory usage
- Added wide string support in NIF filenames
- Fixed issue of blank DDS files being checked for aspect ratio
- CM will be rejected on shapes with textures in slots 3, 7, or 8 now
- Added icon to parallaxgen.exe
- At the end parallaxgen will now report the time it took to run the patcher
-
Version 0.5.7
- Fixed sorting issue that would result in some patches being missed
- Updated nifly library to the latest commit (fixes undefined behavior with badly configured NIFs)
- Logging is more detailed now in -vv mode for mesh patching
-
Version 0.5.6
- PBR multilayer: false is now processed correctly
- More robust CLI argument validation
- Runtime for parallax and CM is now n*log(n) worst-case instead of n^2
- Runtime for truepbr average case is n*log(n) instead of n^2
- Introduced multi-threading for mesh generation
- Added --no-multithread CLI argument
- Added --no-bsa CLI argument to avoid reading any BSAs
- Textures that have non-ASCII chars are skipped because NIFs can't use them
- Fixed TruePBR case issue with Texture being capital T
- upgrade-shaders will now check for _em.dds files when checking if an existing vanilla env mask exists
- actors, effects, and interface folders now included in mesh search
- Diff JSON file is generated with mesh patch results (crc32 hash comparisons)
- PARALLAXGEN_DONT_DELETE file is removed from output and replaced by diff file
- PBR will now not apply if the result prefix doesn't exists
- Logs are now stored in "ParallaxGenLogs" and use a rolling log system to make it more manageable
- Added PBR glint support
-
Version 0.5.5
- Fixed TruePBR nif_filter handling
- Fixed TruePBR slotX handling
-
Version 0.5.4
- Fixed complex material applying on PBR meshes
- Fixed output zip file capitalization
- Added error handling for failing to load BSA
-
Version 0.5.3
- BC1 is no longer considered for Complex Material
- Fixed CM lookup memory leak on the GPU
- UTF-16/8 optimizations
-
Version 0.5.2
- Fixed rename issue for truepbr patching
- No longer checking for mask.dds files for CM
-
Version 0.5.1
- Removed loading screen exclusions from NIF config
- findFilesBySuffix now is findFiles and uses globs exclusively
- _resourcepack.bsa is now ignored for complex material
- Creation club BSAs are now ignored for complex material
- _em.dds files are now checked if they are complex material
- mask.dds files are now checked if they are complex material
- User-defined generic suffixes is now possible
- Added JSON validation for ParallaxGen configs
- Complex material lookup is much smarter now
- Added --no-gpu option to disable GPU use
-
Version 0.5.0
- Initial TruePBR implementation
- Added allowlist and blocklist support
- Added --autostart CLI argument to skip the "Press Enter" prompt
- Existing ParallaxGen meshes in load order is checked after output dir is deleted
- Fixed exit prompt to refer to ENTER specifically
-
Version 0.4.7
- GPU code will now verify textures are a power of 2
- Added "skyrimgog" game type
- Top level directory is now checked to make sure a NIF comes from "meshes", dds from "textures"
- Fixed parallax or complex material texture paths not being set correctly for some edge case NIFs
- Fixed aspect ratio checks happening more than once for the same pair
- Output directory + data dir path checking is done using std::filesystem now instead of string comparison
- Fixed bugs where shaders wouldn't compile when in wrong working directory
- Diffuse maps are checked to make sure they exist now before patching mesh
- Fixed help not showing up with -h or --help argument
-
Version 0.4.6
- Added additional error handling for GPU code
-
Version 0.4.5
- Shaders are no longer pre-compiled, they are compiled at runtime
- Skinned meshes are only checked for vanilla parallax now
- Havok animations are only checked for vanilla parallax now
-
Version 0.4.4
- Fixed non ASCII characters in loose file extension causing crashes
- Added global exception handler w/ stack trace
- Dynamic cubemaps overwrite oold cubemap value for CM meshes now
- Shaders are in their own folder now
-
Version 0.4.3
- Fixed parallax being applied on soft and rim lighting
-
Version 0.4.2
- ParallaxGen no longer patches LOD
- Added dynamic cubemaps support
-
Version 0.4.1
- Fixed already generated complex parallax maps regenerating if a heightmap was also included
-
Version 0.4.0
- Added --upgrade-shader argument to enable upgrading vanilla parallax to complex material
- Implemented DX11 into --upgrade-shader process
- Lots of code cleanup and optimization
- Fixed some typos in log messages
-
Version 0.3.3
- Fixed parallax heightmaps not applying correctly for some meshes
- Aspect ratio of texture maps are checked for complex material now too
- Added additional error handling during BSA read step
- CLI arguments are now printed to console
- Wrong CLI arguments results in a graceful termination now
-
Version 0.3.2
- Fixed --optimize-meshes CLI arg not doing anything
-
Version 0.3.1
- Added option to optimize meshes that are generated
- Fixed issue where ignoring parallax caused nothing to work
-
Version 0.3.0
- Before enabling parallax on mesh heightmap and diffuse map are now checked to make sure they are the same aspect ratio
- Complex parallax checking is now enabled by default
- Added a -o CLI argument to allow the user to specify the output directory
- App will throw a critical error if the output directory is the game data directory
- Fixed bug where loadorder.txt would sometimes not be found
- complex material will now remove parallax flags and texture maps from meshes if required
-
Version 0.2.4
- Generation now sorts nif blocks before saving
-
Version 0.2.3
- Fixed crash from failure to write BSA file to memory buffer
-
Version 0.2.2
- Ignore shaders with back ligting, which seems to cause flickering
-
Version 0.2.1
- Fixed BSAs not being detected due to case insensitivity
- Made --no-zip enable --no-cleanup by default
- NIF processing logs will not show the block id of shapes
- getFile now logs which BSA it's pulling a file from
- Fixed crash that would occur if a shape doesn't have a shader
- Generation will now ignore shaders with the DECAL or DYNAMIC DECAL shader flag set
-
Version 0.2.0
- Added support for enderal and enderal se
- Fixed crash when reading invalid INI file
-
Version 0.1.8
- Fixed log level for havok animation warning to trace
- Added additional logging for pre-generation
- Added additional error handling for missing INI files
-
Version 0.1.7
- Added a helper log message for which file to import at the end of generation
- Meshes now don't process if there are attached havok physics
-
Version 0.1.6
- Added wstring support for all file paths
- Added additional trace logging for building file map
- Stopped using memoryio file buffer, using ifstream now
- After generation state file is now cleaned up properly
-
Version 0.1.5
- Fixed an issue that would cause hangs or crashes when loading invalid or corrupt NIFs
-
Version 0.1.4
- Set log to flush on whatever the verbosity mode is set to (trace, debug, or info). Should help reproducing some issues.
-
Version 0.1.3
- Fixed CLI arg requesting game data path instead of game path.
- Made some messages more descriptive
- Made some CLI arg helps more descriptive
- Added a check to look for Skyrim.esm in the data folder
-
Version 0.1.2
- Added error handling for unable to find ParallaxGen.exe
- Added error handling for invalid data paths
- Added error handling for logger initialization
- Added error handling for registry lookups
- Logs now flush on every INFO level message
- Enabled logging for BethesdaGame
- Fixed log message for deleteOutputDir()
-
Version 0.1.1
- Added log flush every 3 seconds to prevent log from being lost on app crash
- Added error message if loadorder.txt doesn't exist
-
Version 0.1.0
- Initial release
-
- Author's activity
-
April 2025
-
19 Apr 2025, 12:33AM | Action by: hakasapl
Attribute change
'File \'PGPatcher\' description changed.'
-
19 Apr 2025, 12:33AM | Action by: hakasapl
Attribute change
'File \'PGPatcher\' description changed.'
-
19 Apr 2025, 12:25AM | Action by: hakasapl
Attribute change
'File \'PGPatcher\' description changed.'
-
19 Apr 2025, 12:25AM | Action by: hakasapl
Changelog added
'Change log added for version 0.8.12'
-
19 Apr 2025, 12:24AM | Action by: hakasapl
File added
'PGPatcher [version 0.8.12]'
-
05 Apr 2025, 5:47AM | Action by: hakasapl
Changelog added
'Change log added for version 0.8.11'
-
05 Apr 2025, 5:47AM | Action by: hakasapl
File added
'PGPatcher [version 0.8.11]'
March 2025
-
24 Mar 2025, 12:15AM | Action by: hakasapl
Attribute change
'File \'PGPatcher\' description changed.'
-
19 Mar 2025, 11:48PM | Action by: hakasapl
Attribute change
'File \'PG Patcher\' changed to \'PGPatcher\'.'
-
19 Mar 2025, 11:47PM | Action by: hakasapl
Changelog added
'Change log added for version 0.8.10'
-
19 Mar 2025, 11:45PM | Action by: hakasapl
File added
'PGPatcher [version 0.8.10]'
-
18 Mar 2025, 4:16AM | Action by: hakasapl
Attribute change
'Name changed to \'PGPatcher (aka ParallaxGen)\'.'
-
11 Mar 2025, 3:21PM | Action by: hakasapl
Attribute change
'Description changed.'
-
09 Mar 2025, 3:28PM | Action by: hakasapl
Attribute change
'Description changed.'
-
02 Mar 2025, 7:38PM | Action by: hakasapl
Attribute change
'Author changed to \'Several Contributors - See Below\'.'
-
02 Mar 2025, 2:30AM | Action by: hakasapl
Permission change
'Author changed their permission instructions.'
February 2025
-
11 Feb 2025, 2:54AM | Action by: hakasapl
Attribute change
'Name changed to \'PG Patcher (aka ParallaxGen)\'.'
-
11 Feb 2025, 2:43AM | Action by: hakasapl
Attribute change
'Name changed to \'PG Patcher (a.k.a. ParallaxGen)\'.'
-
11 Feb 2025, 2:43AM | Action by: hakasapl
Changelog added
'Change log added for version 0.8.9'
-
11 Feb 2025, 2:43AM | Action by: hakasapl
Attribute change
'Author changed to \'PG Contributors\'.
Name changed to \'PG Dynamic Patcher (a.k.a ParallaxGen)\'.
Summary changed.
Description changed.
Mod version changed to 0.8.9.'
-
- Mod page activity
-
April 2025
-
24 Apr 2025, 3:02AM | Action by: beastinair
Endorsed
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 10:33PM | Action by: telafanatic
Tracked
PGPatcher (aka ParallaxGen)
-
23 Apr 2025, 10:32PM | Action by: Mobiusl1l
Endorsed
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 6:03PM | Action by: ZZe000
Tracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 4:41PM | Action by: MidnightStampede
Endorsed
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 4:40PM | Action by: Konkeeztador
Endorsed
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 4:33PM | Action by: Kindleshard
Tracked
PGPatcher (aka ParallaxGen)
-
23 Apr 2025, 4:23PM | Action by: CarbonDice
Tracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 2:45PM | Action by: trickit13
Untracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 1:55PM | Action by: CTapyxaCkoCou
Tracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 8:56AM | Action by: Wraith24
Tracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 8:07AM | Action by: rob1701
Endorsed
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 7:20AM | Action by: Mag1cWind0w
Tracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 6:00AM | Action by: AllaN2121
Endorsed
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 5:09AM | Action by: Picklenator05
Tracked
'PGPatcher (aka ParallaxGen)'
-
23 Apr 2025, 4:14AM | Action by: PJustinD
Untracked
'PGPatcher (aka ParallaxGen)'
-
22 Apr 2025, 11:38PM | Action by: Flowrifto
Untracked
'PGPatcher (aka ParallaxGen)'
-
22 Apr 2025, 10:59PM | Action by: Ruttager
Endorsed
'PGPatcher (aka ParallaxGen)'
-
22 Apr 2025, 10:09PM | Action by: VoidGlitch
Endorsed
'PGPatcher (aka ParallaxGen)'
-
22 Apr 2025, 9:48PM | Action by: Noci93
Tracked
'PGPatcher (aka ParallaxGen)'
-