Jump to content
  • 0

[WIP] DDSopt & Texture Overhauls


z929669

Question

  • Answers 1.7k
  • Created
  • Last Reply

Top Posters For This Question

Recommended Posts

  • 0

@Ethatron

I realize this is a somewhat low priority change, but could we possibly get the ability to change the default settings of DDSopt? Preferably with the option to change between presets via a drop-down, or a sub menu? At the moment I'm resorting to keeping the forums window up on a second machine and keeping a few instances of DDSopt running so I don't loose the settings I like (and will never remember).

Link to comment
Share on other sites

  • 0

I'm seeing some visual glitches with the vanilla optimized textures. Smoke appears distorted and npc's suffer white pixelated blotches, particularly along the face. This occurs when ONLY the vanilla optimized textures are installed (as a compressed archive within Wrye Bash); no other textures are present, not even the optimized DLC packs.

 

I extracted, then optimized the bsa's (with the HD fixes) as per the instructions in this thread (and as general guidelines, the wiki) with 8.0 of DDSopt using the settings suggested in the earlier post linked to from the original post. I can only assume i've made a mistake. Or is this process somehow currently obsolete? I will upload some screenshots if this doesn't stand out as an obvious mistake on my part.

 

Also, I realize the step guide for DDSopt is in need of an update, but I doubt the guides are at fault for my texture distortions.

Hmm, well I had a similar issue.   There is something going on with smoke textures and DDSopt but I left for xmas vacation before I could test it more thoroughly (curently without computer for another week or so) although I only saw it when I had RCRN active.

 

eg: Some pixelation and compression artifacts using the current settings posted in this thread.  Anyway, its likely a user error, but I was wondering a bit about whether it might be a version difference as well.

Link to comment
Share on other sites

  • 0

@Ethatron

I realize this is a somewhat low priority change, but could we possibly get the ability to change the default settings of DDSopt? Preferably with the option to change between presets via a drop-down, or a sub menu? At the moment I'm resorting to keeping the forums window up on a second machine and keeping a few instances of DDSopt running so I don't loose the settings I like (and will never remember).

DDSopt remembers the settings used from the previous instance; however, I think that you are asking if settings can be saved into custom "profiles"?  Maybe so that you can save the settings you used for a particular run under a particular profile name?
Link to comment
Share on other sites

  • 0
It's a beta' date=' there can always be a bug (regardless the state anyway :^), if you can find the white pixelated blotches with the preview-tab I can see if I can reproduce it.[/quote']

Sorry, I didn't really give you much information there.

 

This is 00013255.dds before and after optimization using max compression (textures\actors\character\facegendata\facetint\skyrim.esm\)

Posted Image  Posted Image

 

They seem to be compression artifacts. Around half of the character .dds appear this way. I was aware that problems may appear with the body textures, so no surprise there. However, landscape and sky textures also suffer from this. A few examples (I found these in-game);

 

Posted Image  Posted Image

 

Again, no other modifications are installed; it's a fresh skyrim install. The original settings used, in post #430 of this same thread by z929669: https://forum.step-project.com/showthread.php?tid=228&pid=15687#pid15687 I'm still hesitant to blame the beta, but I get the same results when using different compression settings. I'm still playing with different settings, and i'll amend this post if I find a solution, and forward more questions if I have them to z929669. Thanks for the program, guides, and help.

Link to comment
Share on other sites

  • 0

@Ethatron


Many compressed rectangular textures (e.g., 2048x1024) have bottom mipmaps of 1x1 where we expect to see a minimum of 2x1. When such textures are processed by DDSopt, sure enough, the lowest 1x1 mip is dropped. DDSopt now also has a setting to prevent this behavior.

Q1: Do these lower 1x1 mips play any role on what we see in game, and if not, why is there a DDSopt setting to retain them?

Link to comment
Share on other sites

  • 0

No z DDSopt does not save my settings at all. Every time I close it it opens with the default settings. These settings Seem to be hard coded, because I can't find any registry settings for DDSopt, nor are there any places in the INI that can change them.

Link to comment
Share on other sites

  • 0
No z DDSopt does not save my settings at all. Every time I close it it opens with the default settings. These settings Seem to be hard coded' date=' because I can't find any registry settings for DDSopt, nor are there any places in the INI that can change them.[/quote']

Run DDSOpt as an administrator and it will remember your settings.

Link to comment
Share on other sites

  • 0
No z DDSopt does not save my settings at all. Every time I close it it opens with the default settings. These settings Seem to be hard coded' date=' because I can't find any registry settings for DDSopt, nor are there any places in the INI that can change them.[/quote']

Wierd. I placed all of my DDSopt downloaded files into a directory and set up a shortcut to the 64-bit exe that I run from my desktop. All of my settings stick from session to session. Are you running the exe as a stand alone? Is the ini along side the exe? Are you using the Nexus version?

EDIT: :ninja:

Link to comment
Share on other sites

  • 0
@Ethatron

I realize this is a somewhat low priority change' date=' but could we possibly get the ability to change the default settings of DDSopt? Preferably with the option to change between presets via a drop-down, or a sub menu? At the moment I'm resorting to keeping the forums window up on a second machine and keeping a few instances of DDSopt running so I don't loose the settings I like (and will never remember).[/quote']

It should store settings to this: "HKEY_LOCAL_MACHINE, "Software\\Bethesda Softworks\\DDSopt", if not then you use a nasty Anti-Virus which blocks it? Can't imagine anything else which could prevent registry-writes, not even UAC prevents it I think.

DDSopt remembers the settings used from the previous instance; however' date=' I think that you are asking if settings can be saved into custom "profiles"?  Maybe so that you can save the settings you used for a particular run under a particular profile name?[/quote']

Uh, five billion years ago I had profile-support in an ini for NIFopt. Maybe it makes a revival once the command-line mode is implemented fully again.

It's a beta' date=' there can always be a bug (regardless the state anyway :^)' date=' if you can find the white pixelated blotches with the preview-tab I can see if I can reproduce it.[/quote'']

Sorry, I didn't really give you much information there.

 

This is 00013255.dds before and after optimization using max compression (textures\actors\character\facegendata\facetint\skyrim.esm\) [...] I'm still hesitant to blame the beta, but I get the same results when using different compression settings. I'm still playing with different settings, and i'll amend this post if I find a solution, and forward more questions if I have them to z929669. Thanks for the program, guides, and help.

Don't hesitate to blame the beta (which is even a beta preview LOL). That of course was a fat bug in the single-colour matcher. Meanwhile I also found another bug, coding DXT3s into DXT5-surfaces when the source was uncompressed. Both just stupid "hurry, hurry, publish it"-errors (means a "+" was a "|" and stuff with that level of complexity). :lol: Ah well, I reworked the whole core in a week or so, can happen.

Fixed version uploaded on the Nexus.

Link to comment
Share on other sites

  • 0

@Ethatron


Many compressed rectangular textures (e.g., 2048x1024) have bottom mipmaps of 1x1 where we expect to see a minimum of 2x1. When such textures are processed by DDSopt, sure enough, the lowest 1x1 mip is dropped. DDSopt now also has a setting to prevent this behavior.

Q1: Do these lower 1x1 mips play any role on what we see in game, and if not, why is there a DDSopt setting to retain them?

 

A1: Well, lower mip-levels are selected by the filtering-hardware on your graphics-card, when surface angles are very steep, or when the total scale of the texture becomes smaller. Just think about when it happens for 1x1: you got some object on screen which is so tiny that the entire texture is displayed at less than 1 pixel screen-space! If you have tri-linear filtering enabled, sadly this happens already when the smaller extent (x or y) hits 1 px (width or height), with anisotropic filtering this basically only happens when the entire texture-size falls below 1 px² area. Now it is not obviously clear to me if Skyrim would even display any objects below 1 px size. The probability of it to happen appears rather low.

Anyway, if the situation occurs then the graphics-card hammers only on a single texel, but (!) compressed textures have a minimum block-size of 4x4, damn. Regardless that only one texel is requested, 16 are decompressed - well, not really, but the memory of the block is read completely, no memory-system reads bits from the chips, mostly entire 64bit lines as smallest unit. Performance-wise there is very little difference if you tri-linearly filter 1 texel or 4, as the bottle-neck is the memory-latency, and the block is already in on-chip cache - you probably even pay a penalty for having 3 full blocks for the lowest mips (1x1 expanded to 4x4, 2x2 expended to 4x4 and then 4x4), as you hit the memory thrice (800 clocks + 800 clocks + 800 clocks) and you clutter the cache a bit with it.

That's why I just prefer to throw all mips below 4x4 blocksize out.

Link to comment
Share on other sites

  • 0

@Ethatron

I realize this is a somewhat low priority change, but could we possibly get the ability to change the default settings of DDSopt? Preferably with the option to change between presets via a drop-down, or a sub menu? At the moment I'm resorting to keeping the forums window up on a second machine and keeping a few instances of DDSopt running so I don't loose the settings I like (and will never remember).

It should store settings to this: "HKEY_LOCAL_MACHINE, "Software\\Bethesda Softworks\\DDSopt", if not then you use a nasty Anti-Virus which blocks it? Can't imagine anything else which could prevent registry-writes, not even UAC prevents it I think.

 

HKEY_LOCAL_MACHINE is a protected area of the registry, so you need Administrator rights to write to it. Anyone with UAC turned off will have no problem, but if UAC is turned on it will not be able to write. I have UAC turned on and DDSOpt wasn't remembering my settings either until I ran as Administrator.

 

An alternative would be to store the settings in HKEY_CURRENT_USER (maybe HCU\Software\DDSOpt).

Link to comment
Share on other sites

  • 0

@Ethatron


Many compressed rectangular textures (e.g., 2048x1024) have bottom mipmaps of 1x1 where we expect to see a minimum of 2x1. When such textures are processed by DDSopt, sure enough, the lowest 1x1 mip is dropped. DDSopt now also has a setting to prevent this behavior.

Q1: Do these lower 1x1 mips play any role on what we see in game, and if not, why is there a DDSopt setting to retain them?

A1: Well, lower mip-levels are selected by the filtering-hardware on your graphics-card, when surface angles are very steep, or when the total scale of the texture becomes smaller. Just think about when it happens for 1x1: you got some object on screen which is so tiny that the entire texture is displayed at less than 1 pixel screen-space! If you have tri-linear filtering enabled, sadly this happens already when the smaller extent (x or y) hits 1 px (width or height), with anisotropic filtering this basically only happens when the entire texture-size falls below 1 px² area. Now it is not obviously clear to me if Skyrim would even display any objects below 1 px size. The probability of it to happen appears rather low.

Anyway, if the situation occurs then the graphics-card hammers only on a single texel, but (!) compressed textures have a minimum block-size of 4x4, damn. Regardless that only one texel is requested, 16 are decompressed - well, not really, but the memory of the block is read completely, no memory-system reads bits from the chips, mostly entire 64bit lines as smallest unit. Performance-wise there is very little difference if you tri-linearly filter 1 texel or 4, as the bottle-neck is the memory-latency, and the block is already in on-chip cache - you probably even pay a penalty for having 3 full blocks for the lowest mips (1x1 expanded to 4x4, 2x2 expended to 4x4 and then 4x4), as you hit the memory thrice (800 clocks + 800 clocks + 800 clocks) and you clutter the cache a bit with it.

That's why I just prefer to throw all mips below 4x4 blocksize out.

It sounds like you are suggesting that these very small mip-levels (below 4x4) do not supply any significant quality information to the rendered image in-game and that eliminating these 3 lower levels will provide some measure of performance gain with no perceptible cost of quality. If so ...

Q1.1:

  Why does DDSopt only strip the one (1x1 only) and not the three lower mip-levels from the compressed output?
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.