One commonly overlooked aspect of how mods influence the game 'performance-wise' is their impact on memory-utilization. While vanilla RimWorld can run on very little memory, mods can change that drastically. This has to do with how RimWorld handles mod-assets - mainly; textures - which the game loads into memory at start-up and then holds most of them there for the whole session. Larger modlists with many 'high-fidelity' content-mods manage to natively increase the memory utilization into the 10s of GB at times. So if your system runs out of memory while loading the game, you know where to check first.
It might feel strange that an older game with so simple graphics as RimWorld can eat so much memory but the reasons for it are pretty clear. It's mostly just unfortunately handling of the basegame/engine combined with many mod-authors being oblivious to the fact how hard their textures actually hit. Even if the individual texture-file has a rather low resolution, it quickly piles up. Things like body apparel and armour commonly have 16+ texture-files per item for different body-shapes and side-views. And even moderately sized textures for them commonly are 4x as large as vanilla's own textures. Some modders go all out with 'HD' textures though, which quickly can have 64x the memory footprint as the respective vanilla textures.
In other words, one modded, high-res armour can at times eat the same amount of memory as 64 vanilla armours would. So keep that in mind when adding mods that add a large amount of new apparel and other items. Such mods can at times easily add ~300MB to the total memory-consumption - and since typical RimWorld modlists have dozens of content mods, it should be easy to understand how this can pile up. Converting mod-textures is one way to reduce that strain.
While the exact technical reasons are a bit beyond the scope of this guide, here are some general explanations on how RimWorld handles mod-textures:
At startup, RimWorld loads mod-textures into memory while converting them into a native format the game can handle. This will fill the GPUs vRAM first and if that runs out at some point, the game will continue to move and handle files in RAM or even virtual memory if necessary.
Given that each of the successive types of memory (vRAM > RAM > Swap) is typically slower than the previous, this will increase the time the game takes to load significantly.
RimWorld's own texture conversion is also made with speed in mind, typically resulting in mod-textures getting worse in quality after the conversion while also having a rather large memory-footprint.
Converting mod-textures to the .dds format has some clear benefits. On one hand the visual results are typically better than textures processed by RimWorld's own conversion. The difference might be small, often barely noticeable even, but it's still there and just the cherry on top of the other benefits which are way more relevant from a technical standpoint.
The arguably main benefit is usually loadtimes though. Pre-converting the textures means that the game doesn't have to convert them itself which can take quite a while with each game-start. The impact is clearly situational - based on the hardware used and the question if the game has to fall back to a slower type of memory in the process. If that's the case for you, pre-converting might show a significant improvement on how long your game takes to load.
Each different method and converter produces different results, but all of them are typically an improvement over RimWorld's internal handling. In some extreme cases of users running close to their available RAM or even over it while the game converts textures, game-crashes can even be experienced quite commonly. In those instances, pre-converted textures can make all the difference of the game loading or not.
What texture-conversion usually doesn't do is increasing your ingame performance though. There can be some minor visual benefits (sharper textures) or even smoother zooming in & out of the screen, but those aspect typically wouldn't matter enough for the player to see or feel much difference. This also means that if your game already loads fast enough for your taste and you don't have any issues with limited memory, texture-conversion is not something absolutely necessary. It will still have its benefits of course, but if those even matter to the individual user is highly subjective.
RimPy (texconv) - slow, inefficient UPDATE: With changes to 1.6, RimPy's texture-converter just straight up ceased working!
RimSort (ToDDS) - fast, high texture quality, memory-efficient, can be used to only convert specific mods
ToDDS Standalone - fast, high texture quality, memory-efficient, can't specify to convert individual mods only
ToDDS Commandline - fast, high texture quality, memory-efficient, harder to use than UI-supported methods above
The exact process of using the different converters listed above can differ massively - every one of them uses their own UI and allows for different kind of secondary options/features. Because of that, we only show the main usage of the UI-based methods here as a quick reference and without any in-depth instructions. If you need help with more complex aspects of the topic, it's better to ask knowledgeable people directly - Dubs or the Community Discord are typically the best places to start your journey. But for regular users, those aspects shouldn't matter much to begin with. Also no instructions for using the commandline version of ToDDS - it comes with instructions on its GitHub and we honestly expect you to know what you're doing if you pick this specific option!
Possibly the most straight-forward method. After downloading and starting the app, you just tell it your mod-folder location [1] (if not auto-detected to begin with) and then run the process and 'Encode new textures' [3].
The app lets you define if you want to convert all textures found at the given location or only ones that weren't already converted in the past [2] to speed up successive conversions. It is semi-smart in that regard as to identify textures that have been converted to .dds before but had their source-file changed since (through a mod-update.) It will automatically re-convert those files by itself.
Additionally you can also clean-up/delete all previously converted .dds-files [3], limit the numbers of CPU-cores the app uses to encode and change some visual aspects of the UI. Every option comes with a short explanation (?), so there's not much you can ever do wrong using the app. Just let it run & finish and you're all set.
PSA:
For the time being we decided against offering detailed explanations for the use of RimSort to convert textures. At this point in time RimSort uses ToDDS as converter as covered above, but with a few added features similar to RimPy.
Since the project is still WIP though and RimSort's UI seems to change constantly, there's no good reason to show an in-depth guide at this point in time. As of the time writing, most options for texture-conversion have to be set first in the app's settings-menu, then you can run the actual conversion from the main-menu - like shown in the screenshot. We think this implementation is unnecessary clunky and confusing to the user and since the conversion itself is the same as using ToDDS Standalone, we highly recommend using just that for texture-conversion instead. Otherwise finding out the current process shouldn't be rocket science and worst case, there's always the option to ask for up-to-date instructions on the RimSort Discord.
Please excuse our laziness in this case, but we rather use our limited time and only update this guide whenever the app got into a more release-state and ideally also provides actual benefits over already existing methods to the user!
After you converted your mod-textures using any of the methods above, you only have to enable RimWorld to load the new .dds- instead of the regular .png-files mod-textures are typically saved as. RimWorld by itself doesn't load optimized/converted textures and at this point in time you need any of two options to enable that feature. Some of the converter show you some warning/info on how to do so - but since this is something that can change quickly while mod-manager and converter might not need to be updated in a long time to function, here the currently known methods to enable .dds-loading for RimWorld.
The classic way is to use Graphics Settings+ to enable this feature. The mod comes with some additional features, like tuning sharpness of textures ingame or to measure/predict how much memory-footprint your mods have based on textures. For the average user though, there's no need to engage with any of that - the basic settings for texture-quality are typically fine and all you really have to do is to add the mod to your modlist.
More recently, Performance Fish enables .dds-loading for RimWorld as well. It doesn't offer the same options as Graphics Settings+ does, but is slightly more efficient and also has some pre-set quality-settings which are on average better than the standard settings. There's no real reason to not just use both mods if you want so either - but if all you care is to enable .dds-support, you only need one of those mods to be active.
One other thing to keep in mind is the increased file-size of .dds-files on your hard drive. While the pre-converted files are typically smaller in memory compared to those converted by RimWorld's own method, that doesn't mean that the files themselves are small. In fact, they tend to be multiple times larger than their .png-counterparts natively used by mods. So if you have extremely limited space on your hard drive, you at least want to keep that in mind and potentially limit the conversion of textures to only mods you actively use right now. But if this applies to you, you probably shouldn't have a lot of inactive mods sitting around on your system to begin with - so that's a good chance for you to clean things up!
With how the game works, RimWorld still needs the .png-versions of the textures to be present alongside the .dds-files - at least when using Graphics Settings+ to enable .dds-support. That's because the game will still look for the .png-filepaths first and only then the method will be changed to load the .dds-version instead. This is not true though when using Performance Fish though - because it will re-direct the game immediately to consider the .dds-files as legit textures. While that means that in this case you technically doesn't need the .png-files after conversion, there's also no good reason for the average user to actually delete them. This info is more meant for advanced users and to preserve this mostly unknown fact about these two mods.