Jump to content

32 bit normal maps


Taz1004

Recommended Posts

I have no idea why ED keeps using 32 bit for normal maps. 10 of them in each A10C-II cockpit totaling 650 MB.

 

I changed them to 8 bit and there is absolutely no visual difference. But over 1.2GB VRAM difference. Along with other optimizations I've done to terrain and tree textures.

 

See them full size and the number I circled in red is VRAM allocated to DCS. Also notice lower overall GPU core usage.

 

Default 32 bit

Default.jpg

 

Optimized 8 bit

Optimized2.jpg

 

Download

If you want to test, I packaged it as OvGME compatible mod pack.

THIS PROBABLY WILL NOT PASS IC AND THIS IS ONLY FOR TESTING!!!

I didn't want to offer it as a mod because I'm sure ED will be actively updating A10C-II every patch cycle.

Again, I didn't even test for IC but texture mods usually fail.

 

Taz1004_A10C_II_Optimized TEST


Edited by Taz1004
  • Like 5
  • Thanks 3
Link to comment
Share on other sites

Thanks for the heads up mate, I don't have PS, any recommendation on what to use to down sample them cleanly?

 

I updated the first post with download link.

I did not test for IC but texture mods almost always fail so this is only for testing.

 

I didn't want to offer this as mod since ED probably will be updating A10C-II every patch. And the ideal goal is to get ED to acknowledge these and make optimizations so it doesn't effect IC.

 

I only have A10C and Ka-50 so I can't look but I'm sure if you guys look into other modules like F-16 or FA-18, I bet you'll find more 32bit normal maps. Supercarrier I'm sure.

 

32 normal maps serve absolutely no purpose than eat up your resources. It's basically a bump map. 8 bit provides you with 256 levels of bump. 32 bit give you 16777216 layers of bump. On things like rivets and bevels.


Edited by Taz1004
  • Like 2
Link to comment
Share on other sites

Nice job !

Unfortunately DCS requires more and more resources so good optimization is key (omission of unnecessary/not visible texture details)

 

I know few people will be whining (how DDS is the best/suitable for DCS) but some of my friends do a lot of "downgrade" of textures. non-alpha-DDS to JPG:

High-res JPGs without noticeable visual changes but less disk+memory usage and faster loading time. Strange, but textures without mipmaps looks better usually as well. I am not sure if it's DCS or the GFX card releated but with mipmap usage the lower-resolution mipmap textures will be on/switches onto the polygons too early / too close to the camera - what is disappointing.

 

for example 4K/8K non-alpha DDS to high-quality-same-resolution 4K or 8K conversion to JPG (F-16, F-14, JF-17 and huge map texture files) brings significant performance increase. :idea:


Edited by NRG-Vampire
  • Like 1

sign-pic4.jpg

Link to comment
Share on other sites

good find. i have only 4gb of vram and notice a huge drop in performance between the original a-10c and the upgrade.

i turned down some graphics options and that helped, but it's not ideal.

 

i doubt anyone could notice the difference between 24 and 32 bit normals, so this seems to me like a ridiculous waste of rescources.

i hope these are just an oversight and will get patched.

 

taz, maybe you should open dedicated threads in the general bug section for your terrain and tree findings, because for me it's seems like a bug - someone just having forgotten to compress the WIP textures before putting them in the game...

for people with less than 8gb of vram those missing compression can mean the difference between playable and stutterfest.


Edited by twistking
Link to comment
Share on other sites

This is an awesome find, and such an easy optimization an I agree the changes would be imperceptible. This really should be considered a dcs bug IMO. One script to resample all these and most players in limited hardware would gain more usable vram.

Custom Pit 476 Recruiting

 

i9-12900KF, 32 GB DDR5, Gigabyte Aorus Z690 Master, Gigabyte RTX 2080 Ti, 1TB Sabrent Roket 4+ 2x750GB RAID-0, TrackIR 5 /w clip, CRG9 49” Curved Ultrawide Flight Display+15" Touchscreen+17" Gauges display, Thrustmaster Warthog+7.5cm, Saitek Pro Combat Pedals, Streamdeck, Butt Kicker and pneumatic G-Seat

 

Forums Signature V4_500x100_20220716.png

Forums Signature V4_500x100_20221002.png

Link to comment
Share on other sites

well, there is difference between bumpmaps and normalmaps. bumpmaps need only one channel because they describe merely displacement. normalmaps describe surface normal vectors, which are 3D vectors, for lighting and thus need 3 channels.

 

Of course I know the difference. I called it bump map for simplicity sake. I had exactly same post regarding 32 bit normal maps on Caucasus. And some people didn't understand what normal maps were.

 

https://forums.eagle.ru/showthread.php?t=282743

 

Normal maps actually are basically glorified bump map. It used to be greyscale map that only extruded one direction. Someone clever figured out there're 3 channels to image files to simulate the coordinate system. So they stored offset information of uvw in RGB channels of image files.

 

 

taz, maybe you should open dedicated threads in the general bug section for your terrain and tree findings, because for me it's seems like a bug - someone just having forgotten to compress the WIP textures before putting them in the game...

 

The post I made about 32 bit normal maps on Caucasus above went pretty much unnoticed. These things get optimized if more players request them to. Me keep reporting wont do anything. For example, I reported this bug about trees too but didn't get any acknowledgement from ED.

 

https://forums.eagle.ru/showpost.php?p=4443078&postcount=40


Edited by Taz1004
Link to comment
Share on other sites

i doubt anyone could notice the difference between 24 and 32 bit normals

i dont know whats in the fourth channel, but even if its unused it doesnt matter really. GPUs usually internally access image data as 32bit per pixel for performance reasons (unlike 24bit, its a power of two which is practical for computating pixel offsets and such). truly 24bit textures can decrease performance or even not be supported by the GPU. for example, some opengl implementations convert 24bit textures into 32bit automatically under the hood for these reasons.

 

24bit textures are ugly from technical viewpoint.

CPU: AMD Ryzen 5 1600X

GPU: AMD RX 580

Link to comment
Share on other sites

Why does anything in DCS be higher than 8-bit files? Most displays players has are 8-bit capable only, and 10-bit is even today fairly less capable.

Even today a most used display resolution is Full HD, a 1920x1080.

 

Sure it helps to have a 32-bit colors for gradients, but well done 8-bit is not so bad compared to higher. But that is mainly for gradients like a skies and sun, but not so much for the aircrafts itself.

 

Need to try out this mod as it is interesting idea to downscale all to 8-bit that is just possible be used as such.

i7-8700k, 32GB 2666Mhz DDR4, 2x 2080S SLI 8GB, Oculus Rift S.

i7-8700k, 16GB 2666Mhz DDR4, 1080Ti 11GB, 27" 4K, 65" HDR 4K.

Link to comment
Share on other sites

Why does anything in DCS be higher than 8-bit files? Most displays players has are 8-bit capable only, and 10-bit is even today fairly less capable.

Even today a most used display resolution is Full HD, a 1920x1080.

 

Sure it helps to have a 32-bit colors for gradients, but well done 8-bit is not so bad compared to higher. But that is mainly for gradients like a skies and sun, but not so much for the aircrafts itself.

 

Need to try out this mod as it is interesting idea to downscale all to 8-bit that is just possible be used as such.

4th image in the thread says 32bpp, which would be 32 bits per pixel, not 32 bit per channel. 4 channels with 8 bits per channel = 32 bits per pixel.

CPU: AMD Ryzen 5 1600X

GPU: AMD RX 580

Link to comment
Share on other sites

Why does anything in DCS be higher than 8-bit files? Most displays players has are 8-bit capable only, and 10-bit is even today fairly less capable.

Even today a most used display resolution is Full HD, a 1920x1080.

 

Sure it helps to have a 32-bit colors for gradients, but well done 8-bit is not so bad compared to higher. But that is mainly for gradients like a skies and sun, but not so much for the aircrafts itself.

 

Need to try out this mod as it is interesting idea to downscale all to 8-bit that is just possible be used as such.

 

Exactly. And to me, the texture size is overkill too. We're talking about 4k texture... on 4k monitor.

 

4k texture for diffuse might improve quality but normal maps are just supplement to diffuse texture. For rivets, bevels on gauge dials, grooves on knobs... 4k normal maps for those is just overkill.

The difference in size grows exponentially with each power of two. It's minor difference between 256x256 map and 512x512 map. But difference between 2048x2048 and 4096x4096 is huge.


Edited by Taz1004
  • Like 1
Link to comment
Share on other sites

i dont know whats in the fourth channel, but even if its unused it doesnt matter really. GPUs usually internally access image data as 32bit per pixel for performance reasons (unlike 24bit, its a power of two which is practical for computating pixel offsets and such). truly 24bit textures can decrease performance or even not be supported by the GPU. for example, some opengl implementations convert 24bit textures into 32bit automatically under the hood for these reasons.

 

24bit textures are ugly from technical viewpoint.

 

thanks for the heads up. i was not aware of that.

 

however taz's point is still valid: 600mb of normal maps is madness. supersizing the albedo maps may show on very high resolution displays, but normal maps not so much.

 

please, ED have a look at that. or fix VRram management, or -even better- do both!

  • Like 1
Link to comment
Share on other sites

Yep. :thumbup:

 

I hope this time ED pays attention, it's a well presented report on a real issue.

Last time that something similar to this was discussed it was moved (and forgotten) to the "Wishlist" forums:

https://forums.eagle.ru/showthread.php?t=283674

 

The normal/bump mask overkill sizes, also unnecessary in so many Diffuse textures, and also DDS textures saved as DXT5 when DXT1 would have been correct (i.e, using transparency settings when there's none in use), are on the verge of absurd in a game/sim title that is already extremely resource hungry.

 

There's a lot of neglecting in regards to DDS formats, sizes and (as Daz clearly shows here) also bit-depth in normal maps.

I don't even think it's a matter of discussion, as changing this will bring only benefits for everyone, there are no downsides.


Edited by LucShep

CGTC Caucasus retexture mod  |  A-10A cockpit retexture mod  |  Shadows reduced impact mod  |  DCS 2.5.6  (the best version for performance, VR or 2D)

DCS terrain modules_July23_27pc_ns.pngDCS aircraft modules_July23_27pc_ns.png  aka Luke Marqs; call sign "Ducko" =

Spoiler

Win10 Pro x64 | Intel i7 12700K (@5.1/5.0p + 3.9e) | 64GB DDR4 @3466 CL16 (Crucial Ballistix) | RTX 3090 24GB EVGA FTW3 Ultra | 2TB NVMe (MP600 Pro XT) + 500GB SSD (WD Blue) + 3TB HDD (Toshiba P300) + 1TB HDD (WD Blue) | Corsair RMX 850W | Asus Z690 TUF+ D4 | TR PA120SE | Fractal Meshify C | UAD Volt1 + Sennheiser HD-599SE | 7x USB 3.0 Hub | 50'' 4K Philips 7608/12 UHD TV (+Head Tracking) | HP Reverb G1 Pro (VR) | TM Warthog + Logitech X56 

 

Link to comment
Share on other sites

+1

ED, please. Across the board, including 3rd party developers.

- Jack of many DCS modules, master of none.

- Personal wishlist: F-15A, F-4S Phantom II, JAS 39A Gripen, SAAB 35 Draken, F-104 Starfighter, Panavia Tornado IDS.

 

| Windows 11 | i5-12400 | 64Gb DDR4 | RTX 3080 | 2x M.2 | 27" 1440p | Rift CV1 | Thrustmaster Warthog HOTAS | MFG Crosswind pedals |

Link to comment
Share on other sites

Not bit related, but do you know how I can find and edit the normal textures? All the normals I find are either pinkish or or greenish.

 

Cockpit:

Eagle Dynamics\DCS World\Mods\aircraft\A-10C_2\Cockpit\Textures

 

Exterior:

Eagle Dynamics\DCS World\CoreMods\aircraft\A-10\Textures

 

 

Exterior normals are greenish because blue channel is black for some reason, while standard is to leave it white. I'm not sure how dcs engine handles blue channel, but it doesn't really matter.

 

Anyway, I agree with OP, lot of DCS textures contain additional channel of data that serves no purpose no matter how it's being compressed, and while we can fix it locally, IC makes life more difficult. Even worse, dds alpha channel cannot be sampled into rgb compression, it require its own set of data, so you end up with double bpp.

 

And please, please, please, do not ever use .jpg for textures.


Edited by =4c=Nikola

Do not expect fairness.

The times of chivalry and fair competition are long gone.

Link to comment
Share on other sites

Not bit related, but do you know how I can find and edit the normal textures? All the normals I find are either pinkish or or greenish.

 

You can use Nvidia's Texture Tools. Standalone version.

https://developer.nvidia.com/nvidia-texture-tools-exporter

 

 

Another option is Microsoft Visual Studio. You can get the Community version for free altho it'll take quite a bit of disk space.

https://visualstudio.microsoft.com/vs/community/

 

You need to follow this install guide and install correct components.

https://docs.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=vs-2019

 

I believe components required for texture editing are:

.NET desktop development and Game development with C++

 

 

You can do resizing and resampling just within Visual Studio. It does have editing but very rudimentary.

You can open texture, save as uncompressed image format such as TGA. Then edit from program like Gimp. Reimport to Visual Studio and save as dds file.

 

Keep in mind BC7 compression is newest and most efficient. But I noticed some of DCS texture require them to be BC3. Usually older textures like Caucasus ground.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...