Home Unreal Engine

Normal Map Texture Compression Issue

polycounter lvl 11
Offline / Send Message
jocose polycounter lvl 11
Hey everyone,

The image below shows a 512x512 normal map I have applied to these pipes. Obviously the compression is making a mess of things. Is there any way to turn this off?

I know you can use TC_NormalmapUncompressed / V8U8 but it halves my map size and I'm already working at 512x512 if I go lower than that it looks terrible.

Considering this is just for a portfolio piece I would really like to be able to just turn compression off so I can get the best possible quality. Does anyone know of a work around for this?


texutrecompression.gif

Replies

  • Ben Apuna
    Options
    Offline / Send Message
    Well I don't know of any other way than the obvious. Work at double res then import it as TC_NormalMapUncompressed which will half the size.

    Defer Compression will only work until you save the package the texture resides in. Once that package is saved what ever compression settings were set for that texture get applied.

    There might be some INI hack to get TC_NormalMapUncompressed to work without downsizing the texture. I bet Lamont knows how to go about doing that.
  • jocose
    Options
    Offline / Send Message
    jocose polycounter lvl 11
    I thought as much, I believe I also found a forum post stating that you couldn't change anything regarding tc_normalmapuncompressed unless you had engine code :(

    Lets hope that's wrong, I PMed Lamont maybe he has a solution.
  • Lamont
    Options
    Offline / Send Message
    Lamont polycounter lvl 15
    This might help:
    Lamont wrote: »
    Here is a tip to bring out the best in what you've made by giving you access to all the resolution without changing to the wrong LODBias group. You will need to edit two ini files:

    UTGame\Config\DefaultEngine.ini and UTGame\Config\DefaultEngineUDK.ini. A lot of assets fall into the WORLD so look for this line:

    TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=1024,LODBias=1,MinMagFilter=aniso,MipFilter=point)

    You want to change the MaxLODSize...

    TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=2048,LODBias=1,MinMagFilter=aniso,MipFilter=point)

    From there you can change the max res of your textures for whatever LODBias group you want. I would suggest to do this only for demos. Back up your INI files.
    Lamont wrote: »
    UTGame has changed to UDKGame.

    You want to change only this file:

    UDKGame\Config\DefaultEngineUDK.ini
  • jocose
    Options
    Offline / Send Message
    jocose polycounter lvl 11
    Okay so, just for the record, and for anyone else looking into this:
    C:\UDK\UDK-2010-08\Engine\Config\BaseEngine.ini
    	Line 720: bUseMaxQualityMode=False
      C:\UDK\UDK-2010-08\UDKGame\Config\UDKEngine.ini
    	Line 817: bUseMaxQualityMode=False
    
    • I changed both of those to true, and it did nothing to resolve my issue.
    • I also changed the max LOD size like Lamont suggested and it did nothing.

    (I restarted UDK of course in between making these changes).

    The only way I found to "fix" the issue is to turn on "defer compression".


    This leaves me with the conclusion that normal map compression will always result in a loss of quality. So if you are trying to get pixel perfect results it will be pretty much impossible to do inside Unreal.

    The best you can do is to work at double the resolution and use TC_NormalmapUncompressed / V8U8

    This will produce a completely uncompressed normal but will re-sample the entire image when it down rezes it which will blur your edges slightly. This normally wont be an issue but if you are trying to create large seams or something it could be a bit of a problem

    Also be aware that you are going to be using a double the texture resolution if you do this so it may be better to just model the details in rather than use a normal map in the first place.
  • divi
    Options
    Offline / Send Message
    divi polycounter lvl 12
    you could try to import all 3 normal map channels with tc_grayscale and construct the normal map with them. not sure if it will fix your problem, but it gets rid of some compression artifacts. you might have to adjust the texture properties to get results close to what a normalmap with tc_normalmap looks like.
  • Lamont
    Options
    Offline / Send Message
    Lamont polycounter lvl 15
    You change things in UDK, make sure it rebuilds the files it actually uses, those files are just for tweaking. Then when UDK starts it recompiles the files it actually uses.
  • moose
    Options
    Offline / Send Message
    moose polycount sponsor
    I think the easiest solution would be to just make sure DeferCompression is always on - if its only for portfolio renders.

    One thing to make sure you always have it set to ON without having to edit properties requires a little ini tweaking, but in the end you'll love the new feature.

    The August UDK we added Auto-Texture-Reimporting. The cool part about it, is that UDK will listen for file changes in a directory you define in the ini, and then auto-reimport the texture when it changes. At the same time it will default that texture to defer compression to increase import times, so in short, you can use this to a) quickly import & update textures, and b) always have defer comprsesion on :) If you have real-time preview on in the viewport, and you save a TGA, it will be updated before you tab to UDK (4096s may take 1-2 seconds).

    To enable:
    http://udn.epicgames.com/Three/ContentBlog.html#Automatically re-import textures
    Add the directories to the "listen" list in your UDKEditorUserSettings.ini. You can use either absolute or relative (to UnrealEngine3\Binaries\Win64\).
    Here are some examples:
    [FileListener]
    AdditionalFileListenerDirectories=..\..\..\SourceAssetDirectory\
    
    or
    [FileListener]
    AdditionalFileListenerDirectories=D:\Build\SourceAssetDirectory\
    
    Turn the feature on by going to View->Preferences->Auto-Reimport Textures.
    Additional directories can be listened to be using a space-delimited list like:
    [FileListener]
    AdditionalFileListenerDirectories=D:\Build\SourceAssetDirectory\ D:\SuperSecretArtStuff\
    
  • jocose
    Options
    Offline / Send Message
    jocose polycounter lvl 11
    Thanks Moose, I really appreciate the advice guys. Wasn't able to find any information about this else where and learned a ton about UDK from this.
Sign In or Register to comment.