File information
Last updated
Original upload
Created by
G_kUploaded by
Gka1Virus scan
Safe to use
Current section
About this mod
An automation tool used to optimize BSAs, meshes, textures and animations. It helps quickly porting an Oldrim mod to Skyrim Special Edition, and can optimize assets for many Bethesda games.
- Requirements
-
Off-site requirements
Mod name Notes (Recommended) Add CAO to Windows Defender exclusions Defender is hugely slowing down the process Visual C++ 64 bits v29 Mods requiring this file
Mod name Notes Free FPS One of the recommended mods in this performance guide How to convert and optimize a mod using CAO 64 the new standard Kit's Anima Nera Outfit Patch To convert the meshes Modding Skyrim SE on Linux - A Headache Minimization Guide Optional. Run with Wine. Patches by Phoenix and Umgak For my custom CAO profile packs. SPID BLess Armor to Herbane SorenTarge Hard Required to convert LE to SSE armor simply SPID DRAGON BREAKER WITH PLASTRON KERKETON TO MEGDRA FOLLOWER Hard Required for convert kerketon Armor LE to SE Zwizzy Elden Ring GreatAxe Animations Blender - Permissions and credits
-
Author's instructions
See the LICENSE file (in the GitLab repository)
File credits
See the end of description
Donation Points system
This mod is opted-in to receive Donation Points
- Mirrors
- Changelogs
-
-
Version [REMOVED] 6.0.3
- Fixed textures resizing UI bug (supposedly fixed in 6.0.2)
-
Version [REMOVED] 6.0.2
- Added Chinese, Japanse, Russian, Spanish, Turkish, (partial) German translations
- Updated NIF library (NifOpt 3.0.15)
- Fixed profile creation not working correctly
- Fixed BSA packing for games without a textures BSA
- Fixed an issue with profiles migration
- Fixed some UI bugs
- Improved meshes conversion for LE
-
Version [REMOVED] 6.0.1
- Fixed landscape textures processing
-
Version [REMOVED] 6.0.0
- Note: More detailed info will be added after stable release
- - Integral rewrite of the code, fixing numerous bugs
- - Added a patterns system. Patterns allow files with different names to have different settings
- - Profiles are no longer game-agnostic. This means appropriate actions can be taken for each game
- - Added the ability to select the GPU used for textures processing
- - Added the ability to process BSAs directly in memory, resulting in faster processing and no more useless writes to the disk
- - Added the ability to select output location
- - Full UI overhaul, with different levels ranging from "quick auto port" to "advanced mode"
- - The log and progress windows have been ravamped
- - Landscape textures are now being added an alpha channel
-
Version 5.3.14
- [General] Update external libraries. This might fix some extremely rare bugs
- NOTE: as I was unable to reproduce the bug reported by Feles Noctis, it is unknown if it is fixed. Remember to always backup your files
-
Version 5.3.13
- [BSA] Do not pack dialogueviews. Apparently, packing them makes mods harder to translate. This can be reverted by editing FilesToNotPack
- [BSA] Improve merging. Sometimes, only one BSA will be created when two would have been created previously
- [BSA] Give priority to loose files when unpacking
- [bsa] Allow ".hkp" file extension
- [NIF] Fix a crash when processing "dirty" meshes (root index != 0)
- [Meshes] Fix exception with UTF8 texture paths
-
Version 5.3.12
- [FO4][BSA] Fix a bug (in a 3rd party library) resulting in BA2s never being compressed. Unfortunately, due to a Bethesda bug, uncompressed textures BA2 result in infinite loading screen. You will thus need to repack the textures BA2 made by 5.3.11. You can check if a BA2 is compressed using bsarch
-
Version 5.3.11
- [BSA] Fix BSA "delete backup" not working
-
Version 5.3.10
- [BSA] Ignore "readme.txt" instead of "readme". This means files with names such as "MeshReadMerry.psc" won't be ignored anymore
- [BSA][FO4] Conform more strictly to Archive2 behavior when packing cubemaps. This does not appear to have any impact on the game
- [BSA] Add ".hkb" to allowed file types
- [NIF] Add more detailed optimization log (when verbose log is enabled)
-
Version 5.3.9
- [BSA][FO4] Fix cubemap extraction. Note that the behavior is not the same as archive2: archive2 does not write the right file header
-
Version 5.3.8
- [BSA] Fix rare issue with dummy plugin naming
- [BSA] Fix dummy plugin creation for LE
- [NIF] Update to NifOpt 3.1.0
-
Version 5.3.7
- [FO4][BSA] Should fix textures BA2 packing
-
Version 5.3.6
- [BSA] Fix a crash when extracting archives with flags "embedded file names" and "share binary data"
- [Textures] Fix a performance issue with compress : CAO took much more time when this option was enabled
-
Version 5.3.5
- [BSA][FO4] Hopefully fix infinite load screen. (The fix has been confirmed to be working by one user at least)
- [BSA] Fix FilesToNotPack.txt working inacurately
-
Version 5.3.4
- Fix file extensions being compared case-sensitively
-
Version 5.3.3
- [General] Progress on improving UTF8 support
- [BSA] Add .psc to list of packed files
-
Version 5.3.2
- [GUI] Small changes to BSA tab
- [BSA] Slightly increase maximum BSA size
-
Version 5.3.1b
- [General] Fix default settings for merging. The same result can be applied by deleting your settings.ini
-
Version 5.3.1
- [BSA] Add advanced option for choosing merging behaviour
-
Version 5.3.0
- [BSA] Restore and improve Fallout 4 BA2
- [BSA] General fixes and improvements to BSA
- [Meshes] Update NIF library
- [Textures] Now uncompress not power of two textures, preventing crashes
-
Version 5.2.0
- [General] Broken files are now renamed *.caobad
- [BSA] Complete overhaul of BSAs handling. Faster, safer, more precise, etc
-
Version 5.1.3
- [Animations] Fix rare issue preventing animation processing. Was caused by invalid settings
-
Version 5.1.2
- [Settings/BSA] Add Delete Source BSA setting
- [Textures] Fix mipmaps not being generated in some cases
- [BSA] Workaround for a BSA bug that bsarch does not handle. In SSE, the flag EMBED_FILE_NAMES result in a crash for uncompressed archives that only contain texture
-
Version 5.1.1
- [Meshes] Fix meshes resave not working. NOTE: this setting is not intended to be used without specific reason
- [BSA] Fix BSA Compress setting being ignored
-
Version 5.1.0
- [General] Fix CAO keeps running in the background after cancellation
- [General] Fix user being able to change settings while the process is running
- [General] Improve long path and UTF8 support
- [UI] Remove the "settings changed" prompt
- [UI] Fix weird UI size when going fullscreen
- [BSA] Fix BSA naming
- [BSA] Add setting "Compress BSAs"
- [BSA] Rename BSA file after it is extracted (instead of before)
- [BSA] Add hkt, uvd and vis to whitelist
- [Meshes] Update nifly (renamed to nifly), fixing some bugs. The version used is newer than the one used for NifOpt 3.0.14
- [Meshes] Properly set isTerrain flag when loading bto
- [Meshes] Disable parallax removal
- [Textures] Fix a very rare bug resulting in game crashing. Textures <= 2x2 cannot be compressed. CAO did not check texture size after resizing
- [Textures] Add BC5 output format
-
Version 5.0.15
- Updated/Added translations. Languages available: German, French, English, Japanese, Korean, Chinese, Turkish, Dutch. Thanks to all the translators!
- Updated NIF library. See Nif Optimizer changelog for details
-
Version 5.0.14
- Fixed a bug where archives containing sounds could be compressed, resulting in game crashing before reaching main menu
- Updated translations
-
Version 5.0.13
- Fixed a bug where facegen folder would not be processed
- Added some missing file types to BSA whitelist
- Added specific behaviour for cubemaps
-
Version 5.0.12
- Fixed a crash that could occur when processing a large amount of file. It was due to the log file getting too large
- Logs are now split into several files instead of a single huge file
-
Version 5.0.11
- Hopefully fixed CAO getting stuck with textures resizing enabled
- Fixed tutorial windows not being shown
-
Version 5.0.10
- [BSA] Added the option to create or not dummy plugins
-
Version 5.0.9
- [BSA] Restored the previous behavior to keep textures BSA separate. A new option, "Create the least BSAs possible", was added, which allow to use the new behavior.
-
Version 5.0.8
- [Textures] Hopefully fixed a bug reported with 5.0.7, which corrupted all processed textures. Since I could not reproduce it, I advise to test this version before using it
-
Version 5.0.7
- [BSA] Fixed a bug that caused CAO to crash when packing very large folder (e.g 3DNPC)
- [General] Might have fixed a bug causing CAO to get stuck
-
Version 5.0.6
- [Meshes] Fixed a bug causing to print the error "Cannot save mesh" even when the mesh was correctly saved
-
Version 5.0.5
- [Meshes] Fixed a bug where meshes with UTF8 filenames couldn't be loaded
- [Meshes] Referenced textures are now renamed from TGA to DDS, if the option is enabled
- [BSA] Improved the packing algorithm
-
Version 5.0.4
- [General] Improved support for Fallout 4
- [Profiles] Added profiles for FO3 and FNV
- [Textures] Textures are no longer resaved when they were not modified
-
Version 5.0.3
- [BSA] Fixed a bug with BSA packing. In some cases, when there wasn't any files to pack, an error was still printed.
-
Version 5.0.2
- [Animations] Fixed a bug that could delete the processed animations in some cases. I'd recommend to reinstall all the animations mods that were processed with the previous version, apologies for the inconvenience.
- [BSA] Fixed a bug that made the process ignore FilesToNotPack.txt, thus packing animations
-
Version 5.0.1
- [UI] Fixed a bug that prevented to change settings in some cases
- [UI] Added a button to save settings manually
-
Version 5.0.0.4
- [UI] Fixed UI not showing the right path
- [UI] Fixed a bug that preventing from changing the path
- [UI] Fixed BSA options : they are now correctly disabled when dry run is enabled
- [Textures] Added by default a new unwanted format
- [Animations] Temporarily reverted to the previous animations porting method (in some rare cases, the one used in BETA3 was causing T Pose)
-
Version 5.0.0.3
- Hopefully fixed a bug preventing from changing the processed folder
-
Version 5.0.0.2
- [Textures] Fixed some issues related to mipmaps
- [Meshes] Now optimizing facegen as headpart
- [Meshes] Disabled meshes resaving by default, preventing some issues such as meshes going invisible after conversion
- [UI] Possibly fixed the path selection "getting stuck" on a path
-
Version 5.0.0
- [UI] Overhauled the GUI.
- [General] Removed all binary dependancies. Texconv.exe, Texdiag.exe, bsarch.exe, Nifscan.exe, HavokPostProcessorTool.exe and more are no longer required. [b]CAO does not have anymore any dependancies, including the Creation Kit[/b].
- [General] Added support for Oldrim and FO4, as well as the ability to create custom profiles, allowing to use CAO for other games.
- [General] Added mod exclusions. Mods can now be ignored according to folder name.
- [General] MO2 Separators are no longer deleted.
- [General] Added more details to the loading bar.
- [BSA] For SSE and FO4, the dummy plugin used to load BSAs is now a ESP-FE (esp flagged as esl)
- [Meshes] Meshes are now resaved even if they do not need optimization. This will perform NifSkope sanitization, and prevent SSE Nif Optimizer from optimizing the mesh again.
- [Textures] Added option to generate mipmaps for textures, slightly increasing memory usage for improved performance.
- [Textures] Textures can now be resized, with a divider or an absolute size.
- Lots, LOTS of other fixes and improvements.
-
Version 5.0
- CAO 5.0 is now considered stable
- [Textures] Textures smaller than 2*2 are no longer compressed. This previous behaviour could cause crashes
-
Version 4.2.6
- Errors are now also written to errors.html (this file will be created even if no error occurs)
- Fixed command line support
- Fixed issue with settings not being correctly read from the ini file, which might have lead to incorrect optimization options
- Improved log levels
- Split assets is now always enabled
- Misc improvements
-
Version 4.2.5
- Fixed log level that couldn't be changed
- Prevented the program from running on the whole drive
-
Version 4.2.4
- Fixed an issue with crashing meshes detection
- Fixed an issue where a dummy plugin would be created even if it wasn't necessary
- Added command line support
- Added UTF8 support for log
- Added visual indicator for log level
- Overhauled ini file
- Disabled facegendata optimization (headparts are still optimized)
- Disabled BSA processing if dry run is enabled
- Compressed DLLs (reduced CAO size)
-
Version 4.2.3
- Fixed a critical bug with bsa extraction
-
Version 4.2.2
- Fixed issue with meshes optimization
- Fixed issue with textures optimization in dry run
- Fixed log level being resetted each time the app was restarted
- Fixed a rare bug where CAO would run into an infinite loop and crash
- Removed the system calls (no more annoying command prompt randomly spawning)
- If dry run is enabled, log level is automatically set to High if it was lower (required)
-
Version 4.2.1
- Hotfix: bsa were limited to 220mb instead of 2.2gb
- Changed the name to Cathedral Assets Optimizer to prevent legal issues
-
Version 4.2
- Renamed the tool to Bethesda Assets Optimizer
- Complete internal overhaul
- Complete overhaul of the log system
- Finally added support for assets splitting. Mods larger than 2gb are now supported when creating BSA.
- Fixed the GUI freezing using threading
- Animations will no longer be packed into BSAs.
- Removed Dev Mode
-
Version 4.1.1
- Fixed a bug with meshes optimization
- BSA containing strings will no longer be compressed
-
Version 4.1
- As usual, more GUI improvements
- As usual, more BSA fixes
- Textures smaller than 128*128 are no longer compressed to BC7, since it was causing crashes (rare issue)
- Added an option to delete BSA backup
- Fixed a bug with Nifscan
-
Version 4.0BETA
- Tons of internal improvements
- Dummy plugin is now included and has a counter
- Fixed a bug where nifscan.exe sometimes wasn't removed from the mod directory.
- Improved the GUI, added dark mode
- Tons of improvements to BSA packing : for example, more than 2BSA can be created by directory, and an advanced backup feature was added
- New feature : custom headparts. You can add your own headparts in the resources\CustomHeadparts.txt file
- If the user chooses the Skyrim dir, BSA processing will be automatically disabled
- The Havok Tool is no longer a requirement if animations processing isn't checked.
- Added dev UI (dangerous)
- Added all meshes option. Will process all meshes, not only those reported by Nifscan.
- Probably more
-
Version 4.0.2BETA
- Improved meshes optimization, especially headparts handling.
- Prevented the program from freezing for more than 3 minutes
-
Version 4.0.1BETA
- Disabled other meshes and all meshes processing for several mods option
- Log is now also written to a html file
-
Version 3.2.1
- Hotfix
-
Version 3.2
- Signed the exe. This should prevent Windows from scanning my program, thus improving performance.
- Fixed a bug that could lead to files deletion.
- Several cautions have been added to prevent files from being deleted.
- All uncompressed textures are now compressed, instead of normal maps only.
-
Version 3.1.2
- Existing loose files are preserved when extracting BSA
-
Version 3.1.1
- Fixed crashing
- You can now put Havok Tool in the resources folder
-
Version 3.1
- Added forgotten folders to BSA creation : musics and strings weren't compressed
- Improved the GUI.
- New method to handle headparts (probably better, I guess) thanks to Zilav
-
Version 3.0.1
- Fixed meshes processing
- Added more informations to the GUI
-
Version 3.0
- Added a progress bar (wip)
- Revamped the GUI
- Improved speed for large load orders
- Added dry run option
- Added "expert mode"
- Improved custom Nif Optimizer
- Probably more
-
Version 2.0
- Support for optimising several mods at once
- Last used settings are restored at start
-
Version 1.2
- Refactored the code : switched to an object oriented approach
- Should fix bug with BSA
-
Version 1.1
- Fixed two bugs with BSA creation
- Fixed animations porting
- Added headparts support
-
Version 1.0
- First release
-
- Donations
-
Straight donations accepted
Cathedral Assets Optimizer
Cathedral Assets Optimizer is a tool aiming to automate asset conversion and optimization for Skyrim Special Edition, Skyrim Legendary Edition, Fallout 3, Fallout New Vegas, and Fallout 4. It is an open source project.
A short tutorial on how to convert a SLE mod is hosted here.
CAO is complete for my needs and will not receive new features. I am willing to give an overview to someone, should they want to contribute.
Features
Spoiler:
General :
BSAs :
Textures :
Meshes :
Animations :
Show
General :
- All optimization options can be performed on just a single mod or multiple mods at once
- You can convert, optimize, and pack your entire mod install into BSAs with a single click!
- Each option is independently configurable
BSAs :
- Backup and extract old BSAs before processing, preserving existing loose files
- Existing loose assets can be added to the archives during repack
- Delete backups to save space
Textures :
- Convert unsupported TGA files to DDS format
- Ddetect and convert unsupported DDS formats to useable ones
- Convert uncompressed DDS files to BC7, the highest quality compression Skyrim utilizes
Meshes :
- Optimize both normal and headpart meshes
- Detect headparts and automatically apply the correct settings
Animations :
- Convert Skyrim Legendary Edition animations to work with Special Edition
Requirements
Spoiler:
Textures: Either of the following:
All : Add CAO to Windows Defender exclusions. Defender is hugely slowing down the process.
Show
Textures: Either of the following:
- Microsoft Visual C++ 2019 (x64/64bit)
All : Add CAO to Windows Defender exclusions. Defender is hugely slowing down the process.
Installation
Spoiler:
Run it. Get to work!
Show
- Download and extract the Cathedral Assets Optimizer archive into a new folder on your computer.
- Do not install to an external drive, such as a USB thumb stick. Some code libraries don't agree with external drives.
Use Instructions
Spoiler:
Disclaimers :
Always make a backup of your mods.
BSA Processing is not supported when working directly with the game's Data folder.
Show
Disclaimers :
Always make a backup of your mods.
BSA Processing is not supported when working directly with the game's Data folder.
- Launch the tool outside of your mod manager.
- Click Open Directory and navigate to the folder requiring conversion or optimization.
- Select whether you're processing a single mod or several.
- By default no options are enabled. Activate whichever you need. In "Several mods" mode only the minimum "Necessary" optimization for meshes is available. For general use, recommended modes per mod manager are:
- Kortex, MO2, Vortex : One mod or Several mods, depending on intent (Note, DO NOT run CAO through these! Run it directly with your mod manager closed. Running CAO through your mod manager's launcher may cause unintended VFS-related errors.)
- NMM : One mod
- Wrye Bash : One mod (Several mods only with small mod setup or installed on SSD due to file indexing)
- Once desired options are set, click Run.
- Make a snack while you wait. CAO does automate the conversion, but speed is still determined by the number of files.
Optimization Settings (details)
Spoiler:
Modes :
BSA :
Meshes : (Available in SSE and TES5 modes)
Textures :
Animations : (Available in SSE mode)
Show
Modes :
- Profile - Select which game you intend to process assets for. This will set the default "safe" options.
- New - Create a new game profile based off of a default to fully customize all settings. Many Advanced and Expert settings require a custom profile.
- Dry Run - Processes the selected directory without editing any assets, listing what actions would be performed. Will extract and repack BSAs if those options are selected.
- One Mod - Processes the selected directory as the "root", expecting that the asset folders (meshes, textures, etc) are directly inside.
- Several Mods (MO) - Processes the selected directory as if it contains multiple mod folders, each containing asset folders directly inside.
BSA :
- Extract BSA - Extracts any BSAs present in the mod folder(s). (Warning. If you enable this option, processing will be considerably slowed down.)
- Delete Backups - By default, a backup of existing bsa is created. Enabling this option will disable those backups.
- Create BSA - Creates a new BSA after processing the previously extracted assets. (Warning. If you enable this option, processing will be considerably slowed down.)
- Advanced - Provides options to set the maximum BSA size, its extension, and create a separate textures BSA.
Meshes : (Available in SSE and TES5 modes)
- Necessary Optimization - Attempts to repair meshes which are guaranteed to crash the game. Headparts are included.
- Medium Optimization - Perform necessary optimization, and also lightly optimizes typically non-crashing meshes. This may fix some visual issues, but may also lower quality.
- Full Optimization - Fully optimize all meshes. Only apply if standard mesh optimization ignored necessary files. May lower visual quality.
- Advanced - Allows you to select whether or not to process headparts, as well as open and resave all meshes for basic optimizations.
- Expert - Provides options to set the specific game format of processed meshes.
Textures :
- Necessary Optimization - Converts any TGA files into DDS, as SSE cannot read these. Attempts to convert and fix any textures that would crash the game, as some older formats are incompatible with SSE.
- Compress Textures - Converts uncompressed textures to the appropriate compression level for their type. BC7 is the most efficient compression SSE and FO4 support, reducing VRAM usage without observable quality loss. May dramatically reduce visual quality in other games.
- Generate Mipmaps - Mipmaps cost more storage space and memory, but unless your resource bottleneck is your VRAM, compressing and generating mipmaps for textures will improve your performance. It may be in a very small, nearly unnoticeable way, but the larger resolution the texture being renderedis, the faster they'll load in on the fly in those open-world stream-insituations, which Skyrim has a lot of.
- Resizing - Provides options to resize all processed textures, downscaling by ratio or generally scaling to specific pixel dimentions.
- Advanced - Provides options to force TGA compression, select the output textures' format, whether or not to compress interface textures, and designate which additional unwanted formats should be converted.
Animations : (Available in SSE mode)
- Necessary Optimization - Converts TES5 animations to SSE format. If an animation is already compatible, no change will be made.
FAQ
Spoiler:
Q: CAO ran instantly, my files have not changed!
A: This is normal. CAO only changes files that need it. If the file does not need optimization, it will not be processed.
Q: CAO did not pack some files, even though I enabled BSA packing
A: This is a feature, not a bug. CAO has both a whitelist and a blacklist for BSA.
The whitelist is available here.
The blacklist is located in your current profile folder, under the name FilesToNotPack.txt
By default, CAO ignores animation files and Bodyslide files. This is because FNIS / Nemesis cannot read BSAs
Show
Q: CAO ran instantly, my files have not changed!
A: This is normal. CAO only changes files that need it. If the file does not need optimization, it will not be processed.
Q: CAO did not pack some files, even though I enabled BSA packing
A: This is a feature, not a bug. CAO has both a whitelist and a blacklist for BSA.
The whitelist is available here.
The blacklist is located in your current profile folder, under the name FilesToNotPack.txt
By default, CAO ignores animation files and Bodyslide files. This is because FNIS / Nemesis cannot read BSAs
Other Useful Tools
Spoiler:
Paint.net : Has built in support for BC7 DDS files, and is all around an easy to use, flexible free image editor.
Show
Paint.net : Has built in support for BC7 DDS files, and is all around an easy to use, flexible free image editor.
Supporting me
Spoiler:
Show
Credits
Spoiler:
Zilav, for Nifscan, BSArch
Deorder, for libbsarch, C++ bindings for BSArch
Ousnius, for sharing the NIF library.
Figment, for hkxcmd, and Aerisarn, for his help with the Havok library
SergiusTheBest, for plog, a C++ logging library
Microsoft, for TexConv and TexDiag.
Alsa, Feles Noctis, Hishy, and many others, for tests and advice
Dreifels, for his thorough testing of BSAs
Show
Zilav, for Nifscan, BSArch
Deorder, for libbsarch, C++ bindings for BSArch
Ousnius, for sharing the NIF library.
Figment, for hkxcmd, and Aerisarn, for his help with the Havok library
SergiusTheBest, for plog, a C++ logging library
Microsoft, for TexConv and TexDiag.
Alsa, Feles Noctis, Hishy, and many others, for tests and advice
Dreifels, for his thorough testing of BSAs