ValveSoftware / Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
660 stars 76 forks source link

[TF2] [Feature Request] Enable the "No mipmap" flag on the War Paint Groups textures #4803

Open renimg opened 1 year ago

renimg commented 1 year ago

Much like how some textures in the game have the "No mipmap" flag set for them to make sure they're always full quality, I feel like the groups textures for War Paints/Decorated weapons should have the "No mipmap" flag set.

The groups texture is the mapping data texture, with the mipmap flag set there will be much less pixel bleed on slightly lower settings, fixing up issues like this: ezgif com-gif-maker(22) ezgif com-gif-maker(23)

And from testing, the performance impact would be at most ~1 fps with 32 players all holding decorated weapons.

Thespikedballofdoom commented 1 year ago

Could you tell how you tested?

renimg commented 1 year ago

Loading up the worst running map (wutville, around the middle of the map) spawning 31 scout bots with the scattergun out and setting mat_picmip set to -1/0/1/2, and recording the FPS then running the exact same test with the texture for the scattergun with the "no mipmap" flag set, then running mat_picmip -1/0/1/2 again, then comparing the difference in FPS. The only difference I had noticed was ~1 fps. Since I don't have access to 31 people with the War Paint with the most textures (which would be Park Pigmented i think?) I had to approximate a bit, and a single extra texture being forced 2048x2048 would be the best approximation.

gabrielwoj commented 1 year ago

The problem with War Paints is that, when the game is generating the texture for the War Paint at a Low Quality texture setting, it'll obtain the textures needed at the lowest quality. TF2 will grab a bunch of different textures and them assemble them into 1 texture, that becomes your war painted weapons.

This results in the game getting low quality resolutions of the texture to build the war paint texture, and, on top of it, making the war paint texture ALSO low quality.

I know this because, if you open TF2 without looking at your war paints, setting it at "Very High" quality texture setting, looking at a war paint, and setting it back to "Low" quality texture setting, there's a clear difference.

War Paint at Very High Texture Quality settings: image

War Paint at Low Texture Quality settings AFTER it was "built" using Very High quality textures: image

War Paint at Low Texture Quality that was "built" with low-quality textures: image

I would rather suggest making so the game grabs the high quality versions of these textures to build the "war painted texture". This way, it will still look low-res, but not a completely blurry low-res as it is now in-game.

Although I can't extract these built war painted textures, you can look at them via mat_texture_list 1. Here's a few more comparisons:

War Paint at Very High Texture Quality settings: image

War Paint at Low Texture Quality settings AFTER it was "built" using Very High quality textures: image

War Paint at Low Texture Quality that was "built" with low-quality textures: image

As we can see, the textures get extremely blurry when "building" them at already Low Quality Textures, and them reducing the resolution once again after the texture has been built, resulting in just a 128x128 texture. By implementing the suggested feature, making the game "grab" textures in high quality, and then only later applying the low-quality resolution AFTER the texture is generated is the best approach, as it will be at 512x512 as seen on the screenshot.

By the looks of the GIFs you have posted, I haven't seen much difference between No Mipmap and the default one in-game, but it may be because it's for a different weapon and has a different pattern.