How To Unlock Rage's High Resolution Textures With A Few Simple Tweaks
October 5, 2011
By Andrew Burnes
id Software’s Rage launched to critical acclaim yesterday, though some PC gamers were perturbed by the lack of in-game configuration options. The reason for this is that the game dynamically adjusts detail levels at all times to try and maintain an optimum balance between performance and graphical fidelity. Throughout this piece you will find reference to higher resolution textures, which is what we believed the game to be loading when it was first written, but we have since discovered that id Tech 5 is far more complicated than that. However, such is the level of complexity that we believe 'texture resolution,' as used below, is relatable and easy to understand. We must make clear, however, that id Software has not in any way hobbled the PC version of the game, or held back high quality textures. Rather, the underlying technology requires refinement to make better use of the 12GB of high quality textures already available, as we conclude later.
In Search Of Higher Fidelity
At this year’s E3 trade show id Software founder, and all round technical guru, John Carmack, told PC Gamer that the PC version of Rage is able to support higher resolution textures: “The consoles are limited because they don’t have enough memory and on the PS3 you can’t go larger than a 4096 squared texture. There’s a lot of scenes that really need more than that on there, so a lot of scenes sort of hit an upper limit on the consoles, where on the PC where we can use an 8k by 8k texture for that we can bring in higher fidelity. So even if you’re running the PC version at 720p resolution you’ll get crisper graphics on there, and if you crank it all the way up to run at 1080p or higher then you can push twice, probably closer to three times the unique pixels the consoles can.”
With that in mind, some gamers noted on forums that the visible textures on their high-end graphics cards were obviously not 8k, perhaps because of an Auto-Balancer error, and so people began experimenting with configuration files and console tweaks in the hope of forcing the textures to the level mentioned by Carmack.
Not long later, ‘angular graphics’ on the NeoGAF forum discovered that creating a .cfg configuration file in C:\Program Files (x86)\Steam\steamapps\common\rage\base was the solution. Be aware, however, that you will almost certainly require a video card with 1.5GB of Video RAM to enable 8K textures, other graphical niceties and GPU Transcoding, though it may also work on systems with just 1GB of VRAM if said options are toned down. To discover how much VRAM your graphics card has open the NVIDIA Control Panel, click on ‘System Information’ on the bottom left, and then scroll down the list to ‘Dedicated video memory.’ The amount of VRAM is displayed in Megabytes, with 1.5GB being displayed as 1536MB.
Name the file rageconfig.cfg and add the following text using the Notepad application, located in All Programs > Accessories:
If you have 3GB of Video RAM, you can modify the configuration file’s first four lines to end with 16384, instead of 8192, which will enable Rage’s 16K textures, though as we don’t have a suitably-equipped GPU to hand we cannot offer any guarantees as to the game’s stability or visual fidelity when using this modification. Update: We have now tested the 16384 configuration on a 3GB GeForce GTX 580 and can detect no improvements whatsoever. Based on our new understanding of id Tech 5 it may be possible to see benefits from 16384 at the very highest resolutions in the most demanding situations.
If you’re unsure of how to set up the configuration file follow these steps:
- Right click in the empty white space in C:\Program Files (x86)\Steam\steamapps\common\rage\base (if you are using Windows XP or 2000 the path will be C:\Program Files\Steam\steamapps\common\rage\base)
- Left click ‘New’
- Left click ‘Text Document’
If the file that appears is named New Text Document.txt:
- Enter rageconfig.cfg in the dialog box and click off to accept the change
- Double click on rageconfig.cfg in the base folder
- If you are prompted to pick an application to open the file with, tell Windows you will chose the application yourself, then select Notepad among the options and open the file
- Paste in the configuration from above, hit Ctrl+S on your keyboard, and then close the file
- Load Rage
If the file that appears is named New Text Document:
- Click off to accept the naming
- Double click on New Text Document to open it
- Paste in the configuration from above
- Click ‘File,’ then ‘Save As’
- In the ‘File Name’ box type rageconfig.cfg and click ‘Save’
- Close the file
- Load Rage
The ‘8192’ referenced on the first four lines relates to John Carmack’s aforementioned 8k texture quote, forcing Rage to display 8k textures at all times, overwriting the Auto-Balancer. ‘angular graphics’ also retrieved a slide from a tech presentation regarding id Software’s id Tech 5 engine, which powers Rage. In the slide, id Software states that their engine can support 4x Anisotropic Filtering, so the config file also enables the quality-enhancing technique via the final two lines of text, in addition to the amount of Antialiasing specified in Rage’s in-game Video Option menu.
Using the configuration file we revisited several Rage save games, observing the difference in in-game fidelity when using it. To further ensure the accuracy of our results we manually switched the first four lines of the configuration file to use 4096 4k textures and reloaded the exact same saves, and then removed the file entirely to revert to the Auto-Balancer.
Based on our observations there does appear to be an error or two with the Auto-Balancer - though disabled for the screenshots, the on-screen frame rate display never moved below Rage’s sixty frames per second cap with 8k textures enabled, so why does the Auto-Balancer need to utilize lower-resolution assets? Perhaps it's overly-conservative to ensure that the frame rate never fluctuates? Regardless of the reason, the lack of detail is especially noticeable on the speed limit sign to the right and the ‘Loft Finder’ billboard above the collapsed building.
As mentioned, we visited other areas of the game also, primarily to judge the veracity of our results and observations. In outdoor areas packed with detail the results were identical, but in enclosed areas, such as the Mayor’s office in Wellspring, there was absolutely no difference between any of the three detail levels. In larger enclosed areas there was a difference in visual fidelity, albeit to a far lesser extent.
Rage GPU Transcoding
Since the original publication of this article we've been chatting to our engineers and can now share new information about GPU Transcoding variables that can increase your frame rates, improve in-game visual fidelity, and reduce texture streaming issues.
How GPU Transcoding Works
CUDA is NVIDIA's parallel computing architecture. It enables dramatic increases in computing performance by harnessing the power of the graphics card to perform tasks that would take significantly longer on a CPU. In Rage, id Software uses a compressed texture format to hold tens of gigabytes of assets in 12GB of files in the game’s virtualtextures directory. Each time a texture is required in-game it is uncompressed via DXT, a texture compression algorithm originally developed by S3 Graphics, a company known for its Savage GPUs in the late 90s.
As this process requires a significant amount of computational power, and is used every second as the player moves around the world, the CUDA GPU Transcoding feature offloads much of the work from the CPU to ensure that is completed as quickly as possible in an attempt to prevent texture streaming and pop-in issues. As the GPU has to also render the in-game graphics, the CPU is left with 25-40% of the calculations, which as you’ll see later can be tweaked to further improve streaming performance.
Config File Variables
Below are a number of configuration options that can be added to the start of rageconfig.cfg, an explanation of how they work and what they do, and the variables to use in concert with them.
This is the variable that is tied to the GPU Transcode option in the in-game menu. 0 is off, 1 is on, and 2 is forced, which cannot be set in-game. When the setting is 1, the game continuously monitors the time spent rendering on the GPU and the time spent transcoding textures. If it detects that the game is likely starting to render too slowly, it dramatically cuts back the amount of GPU transcoding to prevent the game frame rate from becoming sub-optimal. When it detects that there are spare GPU cycles it slowly raises the transcoding rate until a balance is found. As such, GPU Transcoding can be enabled on four-year-old GPUs with little to no impact on the frame rate or in-game texture streaming. The heuristic isn't perfect because the load can change drastically from one second to the next, and the data that the game receives is slightly delayed, which is why it’s impossible to say that GPU Transcoding will never impact your frame rate.
It can be overwritten however by setting the value in the config file to 2. In this case, vt_useCudaTranscode will always try to do all the work on the GPU, which can cause frame rate disruptions, especially when rendering Rage at higher resolutions on slower GPUs. However, if a user feels that image fidelity is more important than a constant sixty frames per second, this is perfectly acceptable to use, though it is only recommended for users of GeForce 500 series GPUs.
This is the budget in milliseconds that the CUDA GPU Transcode feature uses to determine when to increase or decrease workload. The default threshold is 14 milliseconds, which is well below the 16.6 needed to maintain sixty frames per second. This is deliberately conservative to err on the side of caution to ensure that even in the most demanding situations the frame rate remains rock-solid. For users seeking the absolute best image quality, the threshold can be raised, and for those seeking a consistent frame rate, lowered.
vt_maxPPF controls the maximum number of texture pages the engine will try to transcode in a frame. The default value is 128, which is also the max. For reference, those 128 texture pages are the equivalent of a texture 2048x1024 in size. The challenge is that the transcode ‘work’ lives as jobs, and if too many are submitted in a single frame it might be two or more frames before they complete. If the CPU is too slow this can cause a delay between the jobs being submitted and completed, thereby making the pop-in worse.
The ideal situation is where the engine manages to submit and complete a set of jobs every frame. If your CPU isn’t fast enough, reducing the pages per frame (vt_maxPPF) or turning on GPU Transcode can help. Reducing the pages per frame prevents missed frames by reducing the workload, and turning on GPU Transcode reduces the CPU load per page. Working together, the texture streaming problems are reduced greatly, if not eliminated.
Bethesda and id Software recommend that users experiencing texture streaming issues add vt_maxPPF 16 to their rageconfig.cfg in an attempt to alleviate these issues, or vt_maxPPF 8 if the system being used only has a Dual Core CPU.
If these values do not improve the texture streaming performance consider lowering the Anti-Aliasing setting in the in-game options menu. For example, you may observe slow texture streaming at high resolutions such as 2500x1600 with Anti-Aliasing set to 16X. In some cases lowering the level of Anti-Aliasing to 8X fixes the problem in concert with the above changes, but lowering settings further may also be required. Alternatively, or in addition, you can lower the resolution.
Rage is a fantastic-looking game when tweaked and we’re hopeful that id Software can iron out the kinks in its Auto-Balancer to allow all gamers to see its beauty.