Game Texture Tweak for better FPS - Yeah I know, another one



  • Ok gang this one is a bit more complicated but it does work really well but the game is a bit less attractive to look at. But who are we kidding? We want better FPS and playability, who cares about the whistles and bells when you have a potato for a PC? So lets get started…

    Ok guys this one is a bit complicated so after reading this if you want to just copy and paste this in the right location that is fine. What this tweak does is limits UDK use of textures resolutions for the entire game by changing the resolution of all the textures. It will make all the textures in game look less detailed depending on how low you set them. These settings are in the UDKSystemSettings.INI

    Under the first section of SystemSettings you will find these default settings:

    [SystemSettings]

    TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=256,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WorldNormalMap=(MinLODSize=256,MaxLODSize=256,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WorldSpecular=(MinLODSize=256,MaxLODSize=256,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Character=(MinLODSize=128,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_CharacterNormalMap=(MinLODSize=128,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_CharacterSpecular=(MinLODSize=128,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Weapon=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WeaponNormalMap=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WeaponSpecular=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Vehicle=(MinLODSize=512,MaxLODSize=1024,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_VehicleNormalMap=(MinLODSize=512,MaxLODSize=1024,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_VehicleSpecular=(MinLODSize=512,MaxLODSize=1024,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Cinematic=(MinLODSize=256,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Effects=(MinLODSize=128,MaxLODSize=256,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_EffectsNotFiltered=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Skybox=(MinLODSize=512,MaxLODSize=1024,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_UI=(MinLODSize=512,MaxLODSize=1024,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Lightmap=(MinLODSize=512,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Shadowmap=(MinLODSize=512,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,NumStreamedMips=3,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_MobileFlattened=(MinLODSize=8,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_ProcBuilding_Face=(MinLODSize=1,MaxLODSize=1024,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_ProcBuilding_LightMap=(MinLODSize=1,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Terrain_Heightmap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Terrain_Weightmap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_ImageBasedReflection=(MinLODSize=256,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=linear,MipGenSettings=TMGS_Blur5)
    TEXTUREGROUP_Bokeh=(MinLODSize=1,MaxLODSize=256,LODBias=0,MinMagFilter=Linear,MipFilter=Linear,MipGenSettings=TMGS_SimpleAverage)
    PerformedBucketing=True
    OriginalBucket=5
    SoundMinCompressed=3
    TEXTUREGROUP_ColorLookupTable=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)

    What you are going to be changing is the MinLODSize and the MaxLODSize. The Max is the one that controls the resolution of the textures in each of the TextureGroups. I suggest cutting these numbers in half. This will reduce cpu and GPU processing of textures freeing them up for better FPS.

    You have to do this in these increments: 4096 - 2048 - 1024 - 512 - 256 - 128 - 64 - 32

    So for example:
    Default:
    MinLODSize=256,MaxLODSize=4096
    Tweak Change to:
    MinLODSize=128,MaxLODSize=2048

    Do this for all texture groups. Or you can copy and paste the 50% reduction settings. Make sure you make a back up of your UDKSystemSettings.ini first. Then make sure you copy and paste every thing in the exact location and format.
    **
    This is 50% reduction in Texture resolution**

    TEXTUREGROUP_World=(MinLODSize=128,MaxLODSize=128,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WorldNormalMap=(MinLODSize=128,MaxLODSize=128,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WorldSpecular=(MinLODSize=128,MaxLODSize=128,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Character=(MinLODSize=128,MaxLODSize=128,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_CharacterNormalMap=(MinLODSize=64,MaxLODSize=128,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_CharacterSpecular=(MinLODSize=64,MaxLODSize=128,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Weapon=(MinLODSize=128,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WeaponNormalMap=(MinLODSize=128,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_WeaponSpecular=(MinLODSize=128,MaxLODSize=256,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Vehicle=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_VehicleNormalMap=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_VehicleSpecular=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Cinematic=(MinLODSize=128,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Effects=(MinLODSize=64,MaxLODSize=129,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_EffectsNotFiltered=(MinLODSize=1,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Skybox=(MinLODSize=256,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_UI=(MinLODSize=256,MaxLODSize=512,LODBias=1,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Lightmap=(MinLODSize=256,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Shadowmap=(MinLODSize=256,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,NumStreamedMips=3,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=2046,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_MobileFlattened=(MinLODSize=8,MaxLODSize=128,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_ProcBuilding_Face=(MinLODSize=1,MaxLODSize=512,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_ProcBuilding_LightMap=(MinLODSize=1,MaxLODSize=128,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Terrain_Heightmap=(MinLODSize=1,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_Terrain_Weightmap=(MinLODSize=1,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)
    TEXTUREGROUP_ImageBasedReflection=(MinLODSize=256,MaxLODSize=2048,LODBias=0,MinMagFilter=aniso,MipFilter=linear,MipGenSettings=TMGS_Blur5)
    TEXTUREGROUP_Bokeh=(MinLODSize=1,MaxLODSize=128,LODBias=0,MinMagFilter=Linear,MipFilter=Linear,MipGenSettings=TMGS_SimpleAverage)
    PerformedBucketing=True
    OriginalBucket=5
    SoundMinCompressed=3
    TEXTUREGROUP_ColorLookupTable=(MinLODSize=1,MaxLODSize=2048,LODBias=0,MinMagFilter=Aniso,MipFilter=Point,MipGenSettings=TMGS_SimpleAverage)

    Now certainly you can go much lower if you want by cutting the numbers in half again and again but dont push the MinLODSize too small. So copy and paste this first and test it. Tweak more if necessary.

    Good luck and enjoy better FPS



  • Mind posting a screen shot at 50% texture resolution?

    I’m curious and probably others might be as well.

    Thanks!



  • You should post a couple of images, with and without this ‘tweak’.

    You should have ‘stat unitgraph’ running (type it in console). And be within shouting range of 20+ people. THEN you can get some data that verifies if this works or not, or if you are making your game ugly for little to no reason.



  • I have gone a lot further on lowering these resolutions on another machine and the textures are basically muted on a 70% reduction with a very noticeable FPS boost. But here are the pics of before the 50% tweak is on the right and after is on the left. What you will notice is that there is very little difference in quality for this boost in FPS. Granted some areas are more dramatic than others but when you drop it down to 75% it becomes quite significant in FPS.

    [attachment=1:28oayp35]2013-08-20_00001.jpg[/attachment:28oayp35]

    [attachment=1:28oayp35]2013-08-20_00001.jpg[/attachment:28oayp35]


Log in to reply