Anisotropic filtering is something that no matter the game, I always crank to the highest sestting because it can REALLY make a visual difference, for basically no performance penalty. Some games can look 5 or more years older if you disable it
Basically since I'm playing games(so over 2 decades) I have always done it this way. No idea why in 2023 AFx16 isn't the default option, no matter the preset.
Small technical addition that Philip likely skipped for brevity: The right picture at 3:03 is something called RIP-Mapping which doesn't actually get used by most (all?) games. If you look at the VTF files from source games they will only store textures as MIP-Maps (left picture). Instead, when enabling anisotropic filtering, your GPU will automatically pick and combine the relevant pixels from the different MIP-Map levels to give you the correct result.
exactly, the anisotropic filtered versions don't actually exist. Their pixels are calculated dynamically in the GPU when the shader decides at which coordinates it likes to sample the texture and then immediately rendered to screen.
@@NikkiDimesYT Yes, sort of. It is worse as it only stores horizonally and vertially stretched textures, so it doesn't work as well if you look at the texture diagonally.
He clearly is one of the few RUclipsrs insane enough to dig deeply into this but do so in an actually entertaining way. I'd appreciate even more of this settings menu deep dive stuff
Wow! I never actually knew what anisotropic filtering was actually doing except for making textures look better at steep angles and at a distance until this video! An actual explanation of how it works was a welcome surprise! I am curious about the vram implications though due to how many more versions of each texture there are.
It's not that much of a big deal in practise. Textures are often secondary to the various buffers etc in terms of VRAM usage anyway, and the mipmaps are of course smaller than the original texture. If anything it has more of an impact on memory bandwidth, due to the many samples it takes from the different textures
Someone else commented that the texture is not really stored that way, but it just takes e.g. 16 samples of the next best mipmap level (or mixes 2 mipmap levels, as trilinear does) and averages them, to emulate a 16x higher downscaling along only one axis. If it was stored, you can calculate it with an infinite series. For normal mipmapping it is 1 + 1/4 + 1/16 + ... = 1.333 times the original ram usage (each step dividing by 4), essentially almost free. For storing all anisotropic versions it would be that, but each of the levels would store further copies halfed in resolution infinitely, for each axis, so 1.3333 as before * (1 + 2*(1/2 + 1/4 + 1/8...)) = 4 times the original texture storage space. - Which explains why it's not done. Can also visually confirm with the images shown in the video. The impact it would have would of course depend on how many textures the game loads to the GPU in the first place.
i'd reallllly prefer for them to not hide the texture filtering option within the model/texture detail option. additionally, I'd prefer if they gave us two separate options for model and texture detail lol. i've been wanting that for years. why those settings are even combined is a mystery to me.
Yeah it's strange. I'm guessing it's because anisotropic filtering is one those things people barely understand. I've heard myths about x16 causing performance issues and that you should set it to x8, despite the fact the x16 barely hurts your performance.
This is something i despise skyrim for Which is a very niche problem because for the longest time i've wanted to make a retro style skyrim, which would be super easy to do just by turning all the textures to 32x32, but the forced texture filtering (which i still don't think is any way to turn off) just makes everything into mud at low resolution textures. Only way to achieve the same effect would be making high res textures look like low res. But that removes the bonus of increased performance.
@@kniazjarema8587 I've done a whole lot of googling (and I'm good at it) and have asked a handful of people about it but barely anything even mentions texture filtering. I think it's just a really hard coded thing that can't be changed.
Now I understand the settings.. slightly more! Thank you Philip! You always explain and show things in a wonderful manner, btw. I always wondered what these magical options did.
It's a shame to admit but as an 3D Environment Artist with 10y of experience I had very simplified understanding of what texture filtering is, thank you @3kliksphilip :D
Not even just CS settings, but mainly just ONE setting. I don't care for CS (similarly to him) but I love tuning in because I love Source and finally being able to get our hands on Source 2 is really exciting.
Thank you Phillip! I have been whacking this setting up to the max without a second thought about what it is or what it does for nearly two decades because I like big numbers, now I finally know what it has been doing.
Philip is one of the few people who could make an eight minute and six seconds long video about texture filtering and have it be interesting and entertaining at the same time.
Programmer here. Bilinear filtering is done via blending a pixel between the same mip map levels (texture LODs) Trilinear filtering is filtering between two mip levels to then filter between the pixel source and that. Anisotropic filtering is when you trilinear filter in regards to depth (uses division which is slow at scale). Texels are a fancy way of saying a pixel with a coordinate on a texture. The way textures are drawn is going from the top left (coordinates for u and v are 0, 0) to the bottom right (where the coordinates are 1,1). You can interpolate a pixel by getting the u and v coordinates and multiplying it by the texture's height and width, as the uv coordinates almost serve as a ratio to how far in the texture that texel is. This is why MipMaps also work, because it is independent of the size. Each setting builds on top of the other which is why they are ordered the way they are, and the more steps you do the better the image will look at the end
Junior(?) tech art here. I think you meant that bilnear filtering is interpolating in 2 axis (blending between texels on the same MIP level) while trilinear does it on 3 axis (the third one being between two adjacent MIP levels).
My internet has been super slow as of the past few days so I had to watch this in 144p. One of the most confusing things to watch when you cant tell any difference between the settings but ill just take your word for it and crank up those settings. Iv usually defaulted to using 2x for "performance" not that I ever tested it
I will always remember feeling like a BALLER when I finally turned on 16x on counter-strike: source in 2006. I had finally gotten a PC that was worth more than a moldy bagel and a lightly used tissue.
The reason they fixed it in Source 2 is because of VR. There's more looking at objects at weird angles in VR, and you're playing at a lower resolution per eye which is what the texture filtering is tied to, not the total resolution of both eyes. The flaws become much more apparent in VR.
i am always flabergasted at how finely you get to tune AF for how little of an perfomance impact it has. seemingly a selection between of (for super low end pc`s) trilinear and on (meaning 16x AF) would be more than sufficient.
The reason you can't get anisotropic filtering past 16 times is because It's one of the few things aside from MSAA that is determined by hardware. There's dedicated hardware inside the graphics card to do texture filtering. Most things you see in game use shaders and our programmable, but for things like texture reads, they can be extremely slow if implemented in software and are used often enough that it's not recommended.
Fun fact: Dolphin the GameCube/Wii emulator has encountered a problem related to this. Some games suffer from video corruption issues, _but_ not all of them _and_ only on Nvidia GPUs, apparently due to differences in the texture filtering hardware between the GameCube's GPU and modern Nvidia GPUs. They "solved" this by implementing an option _that bypasses the native texture filtering hardware of the GPU and lets them manually sample the textures_, so basically what you just said you shouldn't do. Going by the benchmarks they posted on their blog, it actually isn't quite as slow as you'd expect, but still a hefty performance hit (and it sacrifices anisotropic filtering, as it isn't implemented in the manual texture sampling method yet).
Been using 16x ever since I saw a comparison of HL2's many different settings variantions in a very detailed website. The Anisotropic page there would show you that anything below 16x sucks, even 8x looks kinda meh, so now I always put 16x if there's an option available
This has been a setting I just throw to 8x because it was the lowest setting games still looked good on, thanks for exploring it more! Also, regarding the resolution changing how texture filtering behaves in CS2, I suspect it could be using the display resolution to decide which textures to display, rather than the render resolution.
As far as I recall we make the distinction between "pixels" and "texels" to avoid confusion between the pixels in the actual texture and the pixels occupied by the texture when it is plastered on an object somewhere on your screen. This means you can reason about the performance cost of each filtering type independent of the screen resolution used by the user, or the screen real estate occupied by the object
@@3kliksphilip In the example you show in the video, we happen to have an anisotropically mapped texture that closely resembles the distortion present in the scene. Of course this is rarely the case in reality, so we take multiple samples from projections close to the one present in the scene to estimate the true pixel value. Implementations vary, however, as sampling of such textures is done in hardware, and varies from platform to platform, so it is impossible to say exactly what the algorithm is. The OpenGL spec (EXT_texture_filter_anisotropic) for the anisotropic extension details one possible way of doing it, if you are interested. Edit: I saw your pinned comment, it looks like you figured it out yourself :) I really enjoy these types of videos, it's often difficult to find very detailed comparisons between different techniques outside very specific and often convoluted examples.
5:00 Phillip... Thank you for doing subtitles on your videos, and thank you even more for having a sense of humor about it. That two-too swap made me double take, you sly dog ;)
Texture Filtering, Anti-Aliasing, Ambient Occlusion, and their (the former 2) different subsettings. These used to confuse the hell out of me. Whenever I need to tweak settings for performance I'd search up what these terms meant, and then immediately forget them afterwards. Nowadays I seem to retain the info better in my mind :)
kilks I just want to say how amazing your videos have been over the years. Your style has always been so unique and authentic and no one could ever replicate it. I really appreciate the hard work you put into your videos
It's worth running a benchmark if the game allows it (it used to be common in older games, not anymore unfortunately.) But you can always look at "tweaking guides" or try some yourself.
Thank you for such a clear demonstration of Antistropic Filtering and it's impact! I only kinda knew what it did and figured it was simply loading textures at a higher resolution further away and therefore being a demanding setting. Pleasantly surprised. ALSO YEAH WHAT WAS UP WITH THAT WITH MANKIND DIVIDED? That pissed me off to, to no end, I specifically remember asking WHY.
*Thank you* for demonstrating what a negligible impact anisotropic filtering has on performance. It extremely irritates me how many games to this day default to lower than 16x anisotropy, and how many don't even give you the option of correcting it. And I seem to recall seeing recently some sort of "optimized settings" guide recommend lowering it.
Anisotropic is in most cases hardware supported, and the hardware support caps out at 16x. APIs allow this to go up to 64x, but as of yet not a single GPU supports anything above 16.
Always wondered what those setting did apart from one looking good and the rest looking bad. Never bothered to look it up either. THIS IS WHY YOU ARE AMAZING PHLIPPY. stuff you wonder about, but never want to actively look for. then you come along and it's always a nice watch and now you know! thank you a helellelelelela lot mate
When you showed the Mipmapping comparison, sea of thieves came to mind. Keeping the detail of the waves near you while it seems amazingly transitioned the further it out is hard to pull off since the sea is all you're really looking at.
What an amazing explanation :o I always felt that the setting looks better but couldnt tell you why. This video just told me that the difference is way more obvious and I shouldve caught it at some point tbh
Ever since GTA V came out, I have known what this setting is, since the effects of having it set at anything other than max is VERY apparent on the roads.
By the way, the reason why FSR fixed the partial texture blurring is due to something called MIP bias. MIP bias offsets the borders where the game switches to a higher MIP level (smaller version of the texture). This increases image sharpness, but can cause a bit of aliasing in textures. FSR does that because it does a better job with oversharpened textures. Otherwise the FSR result would be much blurrier.
3kliksphilip i watch your videos for years now (subscribed since 2015 i think) and i always take great joy in the small details/jokes/emphathisesesssess you do like the sirocco one in this video, thank you for that (and your videos)
Great explanation, I always knew that texture filtering basically improves the image quality for approximately zero cost, but I never really looked into how it works. For CSGO I actually have it set to Bilinear in the hope that mushy textures will make my opponents easier to see though, lol.
Been using 16x Anisotropic filtering since when I discovered the setitng. A very quick google search revealed that the performance impact is so little on modern GPUs, you might as well just force it to 16x and forget about it. Back in the DDR and DDR2 GPUs days this could offer a performance hit. But ever since the first GDDR4 and 5 GPUs dropped... it's just not making a significant enough performance difference to lower it because the GPUs can work with anisotropic filtering very well.
Been a while, but I remember some demo where you could crank anisotrophic filtering (and other filters) up way past 16x and then play around with textures at all sort of distances and angles. I think it was 3DCenter filter tester. Not sure if that still runs on modern drivers/windows though.
I also remember a demo available in nvidia or amd drivers back in early 2000s where they showed a 3d scene with a fly by and let you adjust settings like texture filtering and msaa. It also highlighted and zoomed in on areas that would change the most, it was super cool.
Another great video! edit: I mean I even enjoy watching you cook but still :D I always thought it was just my eyes trying to see the difference between 2x, 4x and 8x AA
I've seen so many game devs butcher this setting. LIke low/medium/high graphics presets having 2/4/8x anisotropic, instead of cranking it to 16x from medium and up. Also i could have sworn i played a game that had 32x anisotropic. Can't remember for the life of me which though.
VRAM, Philip. The answer is VRAM. 8x use only half the amount of VRAM (in stored textures), and graphics cards only started going into 8GB/12GB VRAM last decade or so.
Back when I was first playing Half Life 2 on a crappy laptop with a Core 2 Duo and getting somewhere around 15-20 fps, I found that texture filtering was the singular setting I could max out, because it made no difference to my framerate but it did make a noticeable improvement to the graphics. Ever since then, I've treated it as "set it and forget it" turning it to the max that every game will let me put it at. And I still don't really understand why it's even a setting honestly, it feels like at this point it should just be set to 16x (or dare I say, maybe 32x?) at the game engine level and just left there.
Wow, I just assumed that because it makes such a huge graphical difference, the setting had a high performance impact and since my rig was underpowered when I bought it back in the stone age, I have always set it to the lowest setting and just dealt with the smeared distant textures. After seeing this, I'll definitely see if I can get away with cranking that up since it does make a night and day difference to the graphical quality. It would be neat if one of the kliks channels could do a whole video dedicated to obscure graphics settings. I've figured out many of them over the years, trying to squeeze every last drop of performance out of this rapidly rotting potato, but every now and then I'll go through the settings of a game to try to optimize and get some word/letter salad setting with no explanation of what it does or how it will effect performance. I love it when games have little a help bubble that pops up when you mouse over settings to tell you what the setting sets and how big a performance hit you can expect from the higher options.
Fun source engine fact with texture filtering. Vtf have a flag that when enabled forces anisotropicx4 filtering for that texture on bilinear and trilinear settings. The oversight is that it does not get applied for anisotropicx2. So for very specific circumstance you can have something filter worse on higher settings than lower.
I believe the use of Parallax Occlusion Mapping in Deus Ex MD causes the AF setting to impact performance more than it should. POM + 16xAF + 4K probably gets ~10% ish less performance than POM + 8xAF + 4K.
One thing to keep in mind about anisotropic filtering is that all those extra cut-down resolutions take up extra VRAM, which might be at a premium in games that already have a crazy amount of high-res texture and model data to begin with. And also that, in Source at least, those textures aren't even stored in the game files the way the square mipmaps are, but are actually generated by the engine. Presumably because it cuts down on load times. I'd be interested in knowing how it works in other engines. I'd bet that some of them store the aniso mipmaps in the game files, and others store _neither_ version, just the high-res originals.
FSR and other upscalers use a mipmap bias so that the game still uses the higher resolution textures even though the render res is lower. You can do this manually as well on Nvidia GPUs using the Nvidia Profile Inspector.
From an avid gamer on PC for over half my life. I've just referredto this effect as "Merging the blocks apart" HL1 has a great example of this where in later states above ground everything that isn't the floor looks so ridgid and blocky Almost looks minecrafty if you get really close. I felt it just smooshed all those texture blocks into a more realistic look. Must say for my first video of the day, that was not just entertaining but a good bit of source history.
I knew the difference and always played with it on Bilinear in CS:GO. I’ve done so because I felt it made characters on the screen more visible at a distance. Ever since they started reworking CS maps I’ve felt like they kept adding more and more unnecessary complex details everywhere, which made characters less and less visible overall (Nuke, Dust 2, Cache), Inferno is probably the only reworked map I enjoy playing, because it overall has a cleaner style, more balanced color palette (and probably closer distances). It takes away from the competitive gameplay experience of the game for me. 🤷♂️
I've been setting this to 16x since it became a thing and never looked back. 8x if I'm optimizing performance but never lower. It's FPS impact ranges from nothing to negligible.
Hey Phillip, my friends and I got to play against you on an overpass game the other day. It was a pleasure to play against you whilst using your music kit, even though we lost.
A texel is a pixel in texture space. So say if you have a 64x64 piece of geometry, with 512 pixel texture applied to it, this piece of geometry would have 512 texels. If you made this 128x128 instead, with the same 512 pixel texture, you'd still have 512 texels, just at 4x the size. What this filtering does primarily, is it helps take that texel (a pixel in 3D space) and rasterise it into a 2D image. If you ever wondered why PS1 graphics often had that shimmery look to textures in 3D space, it's because there was basically no filtering at all, so often times what a rasterised pixel in the 2D image would rapidly switch between different texels.
Whenever I install my graphics drivers, I jump into 3D settings and force AF 16x for all programs. It rarely has issues in games (Minecraft actually has black borders around blocks for some reason), but for games that don't have a dedicated setting or don't support AF, it's great.
Minecraft is definitely a game that could benefit from anisotropic filtering built-in, and one that has little excuse not to use it. Textures only go down to 1/16 their max resolution to begin with, the pixels are huge, and the game takes up almost no VRAM so there's plenty to spare.
For Java edition Optifine can provide anisotropic filtering properly. Although last time i checked it was extremely CPU-bound for reasons unknown to me.
Anisotropic filtering is something that no matter the game, I always crank to the highest sestting because it can REALLY make a visual difference, for basically no performance penalty. Some games can look 5 or more years older if you disable it
At this point, the game should just default it to 16x and remove the option to change it all together.
Basically since I'm playing games(so over 2 decades) I have always done it this way.
No idea why in 2023 AFx16 isn't the default option, no matter the preset.
True
I set it to zero because I like it looking older that way
Apparently it can cause additional input lag in cs
I have used Anisotropic 16x filtering since I got my ATI 9600 Pro back in the mid 2000s. It didn't have much of a performance impact then either.
it only stresses memory bandwith, that's why
I used to crank it on integrated graphics that were like the HD4000. No penalty, huge improvement.
It can have a huge performance impact on games where changing the setting also changes LOD.
@@VRazorGaming I hate it when gamedevs merge different but similar settings into one.
@@VRazorGaming Name a game that has LOD level adjustments under the umbrella of anisotropic filtering, I genuinely don't know one.
Small technical addition that Philip likely skipped for brevity:
The right picture at 3:03 is something called RIP-Mapping which doesn't actually get used by most (all?) games. If you look at the VTF files from source games they will only store textures as MIP-Maps (left picture). Instead, when enabling anisotropic filtering, your GPU will automatically pick and combine the relevant pixels from the different MIP-Map levels to give you the correct result.
exactly, the anisotropic filtered versions don't actually exist. Their pixels are calculated dynamically in the GPU when the shader decides at which coordinates it likes to sample the texture and then immediately rendered to screen.
I take it RIP mapping is kind of akin to doing anisotropic filtering in software, then?
Thanks for the explanation :)
@@NikkiDimesYT Yes, sort of. It is worse as it only stores horizonally and vertially stretched textures, so it doesn't work as well if you look at the texture diagonally.
That's neat.
2:30 - it means 16 times the detail
Especially when you look at lightwood laminate
It's also 4 times the size!
Lightwood laminate! Lightwood laminate! Lightwood laminate!
what did you bought with your 500 Atoms ?
Please have mercy Todd!
16 bits, 8 bits, 4 bits
The effort Philip puts to simplify the explanation of the video settings is very welcoming and highly appreciated. 👍
He clearly is one of the few RUclipsrs insane enough to dig deeply into this but do so in an actually entertaining way.
I'd appreciate even more of this settings menu deep dive stuff
Wow! I never actually knew what anisotropic filtering was actually doing except for making textures look better at steep angles and at a distance until this video! An actual explanation of how it works was a welcome surprise! I am curious about the vram implications though due to how many more versions of each texture there are.
It's not that much of a big deal in practise. Textures are often secondary to the various buffers etc in terms of VRAM usage anyway, and the mipmaps are of course smaller than the original texture. If anything it has more of an impact on memory bandwidth, due to the many samples it takes from the different textures
Someone else commented that the texture is not really stored that way, but it just takes e.g. 16 samples of the next best mipmap level (or mixes 2 mipmap levels, as trilinear does) and averages them, to emulate a 16x higher downscaling along only one axis.
If it was stored, you can calculate it with an infinite series. For normal mipmapping it is 1 + 1/4 + 1/16 + ... = 1.333 times the original ram usage (each step dividing by 4), essentially almost free.
For storing all anisotropic versions it would be that, but each of the levels would store further copies halfed in resolution infinitely, for each axis, so 1.3333 as before * (1 + 2*(1/2 + 1/4 + 1/8...)) = 4 times the original texture storage space. - Which explains why it's not done. Can also visually confirm with the images shown in the video. The impact it would have would of course depend on how many textures the game loads to the GPU in the first place.
@@TheCatOfWarCSGO still in the background sharing amazing info as always
i'd reallllly prefer for them to not hide the texture filtering option within the model/texture detail option. additionally, I'd prefer if they gave us two separate options for model and texture detail lol. i've been wanting that for years. why those settings are even combined is a mystery to me.
Yeah it's strange. I'm guessing it's because anisotropic filtering is one those things people barely understand. I've heard myths about x16 causing performance issues and that you should set it to x8, despite the fact the x16 barely hurts your performance.
This is something i despise skyrim for
Which is a very niche problem
because for the longest time i've wanted to make a retro style skyrim, which would be super easy to do just by turning all the textures to 32x32, but the forced texture filtering (which i still don't think is any way to turn off) just makes everything into mud at low resolution textures.
Only way to achieve the same effect would be making high res textures look like low res. But that removes the bonus of increased performance.
@@Verchiel_ Have you reached out to modders in skyrim modding community? maybe they know a thing or two that can help you resolve your issue.
@@kniazjarema8587 I've done a whole lot of googling (and I'm good at it) and have asked a handful of people about it but barely anything even mentions texture filtering. I think it's just a really hard coded thing that can't be changed.
@@Verchiel_maybe just edit the config manually
Now I understand the settings.. slightly more! Thank you Philip! You always explain and show things in a wonderful manner, btw. I always wondered what these magical options did.
It's a shame to admit but as an 3D Environment Artist with 10y of experience I had very simplified understanding of what texture filtering is, thank you @3kliksphilip :D
well i mean it's not your job to do texture filtering luckily, you just provide the textures
It'd be more of a problem for a tech artist, so don't worry :D
(junior(?) tech art here)
3kliks is truly the best youtuber. Who else can make you want to watch a 10 minute video about csgo settings?
Not even just CS settings, but mainly just ONE setting. I don't care for CS (similarly to him) but I love tuning in because I love Source and finally being able to get our hands on Source 2 is really exciting.
Thank you Phillip! I have been whacking this setting up to the max without a second thought about what it is or what it does for nearly two decades because I like big numbers, now I finally know what it has been doing.
Philip is one of the few people who could make an eight minute and six seconds long video about texture filtering and have it be interesting and entertaining at the same time.
Programmer here.
Bilinear filtering is done via blending a pixel between the same mip map levels (texture LODs)
Trilinear filtering is filtering between two mip levels to then filter between the pixel source and that.
Anisotropic filtering is when you trilinear filter in regards to depth (uses division which is slow at scale).
Texels are a fancy way of saying a pixel with a coordinate on a texture. The way textures are drawn is going from the top left (coordinates for u and v are 0, 0) to the bottom right (where the coordinates are 1,1). You can interpolate a pixel by getting the u and v coordinates and multiplying it by the texture's height and width, as the uv coordinates almost serve as a ratio to how far in the texture that texel is. This is why MipMaps also work, because it is independent of the size.
Each setting builds on top of the other which is why they are ordered the way they are, and the more steps you do the better the image will look at the end
Junior(?) tech art here.
I think you meant that bilnear filtering is interpolating in 2 axis (blending between texels on the same MIP level) while trilinear does it on 3 axis (the third one being between two adjacent MIP levels).
@@unfa00 Yes, you're correct. Updated the original comment for the typo
@@hawns3212 Thanks! Glad I could help :)
finally a video on uber shaders
Almost
I identify with that rant at the end of the video so hard. You'd think devs would know graphics settings better than this.
My internet has been super slow as of the past few days so I had to watch this in 144p. One of the most confusing things to watch when you cant tell any difference between the settings but ill just take your word for it and crank up those settings. Iv usually defaulted to using 2x for "performance" not that I ever tested it
I will always remember feeling like a BALLER when I finally turned on 16x on counter-strike: source in 2006. I had finally gotten a PC that was worth more than a moldy bagel and a lightly used tissue.
The reason they fixed it in Source 2 is because of VR. There's more looking at objects at weird angles in VR, and you're playing at a lower resolution per eye which is what the texture filtering is tied to, not the total resolution of both eyes. The flaws become much more apparent in VR.
i am always flabergasted at how finely you get to tune AF for how little of an perfomance impact it has. seemingly a selection between of (for super low end pc`s) trilinear and on (meaning 16x AF) would be more than sufficient.
yeah for real. of all the options devs DON'T give us, and that's the one they choose
The reason you can't get anisotropic filtering past 16 times is because It's one of the few things aside from MSAA that is determined by hardware. There's dedicated hardware inside the graphics card to do texture filtering.
Most things you see in game use shaders and our programmable, but for things like texture reads, they can be extremely slow if implemented in software and are used often enough that it's not recommended.
Fun fact: Dolphin the GameCube/Wii emulator has encountered a problem related to this. Some games suffer from video corruption issues, _but_ not all of them _and_ only on Nvidia GPUs, apparently due to differences in the texture filtering hardware between the GameCube's GPU and modern Nvidia GPUs.
They "solved" this by implementing an option _that bypasses the native texture filtering hardware of the GPU and lets them manually sample the textures_, so basically what you just said you shouldn't do. Going by the benchmarks they posted on their blog, it actually isn't quite as slow as you'd expect, but still a hefty performance hit (and it sacrifices anisotropic filtering, as it isn't implemented in the manual texture sampling method yet).
You probably could do some testing on the Texture Filtering option in CS2 by forcing it in the Nvidia control panel to a specific setting
Been using 16x ever since I saw a comparison of HL2's many different settings variantions in a very detailed website. The Anisotropic page there would show you that anything below 16x sucks, even 8x looks kinda meh, so now I always put 16x if there's an option available
This has been a setting I just throw to 8x because it was the lowest setting games still looked good on, thanks for exploring it more! Also, regarding the resolution changing how texture filtering behaves in CS2, I suspect it could be using the display resolution to decide which textures to display, rather than the render resolution.
4:56 the pun on "two" and "too" is lovely, and i'm proud for noticing it
I was listening to Deus Ex ambience prior to clicking on your video, so 7:13 threw me for a loop. I thought I was going mad!
As far as I recall we make the distinction between "pixels" and "texels" to avoid confusion between the pixels in the actual texture and the pixels occupied by the texture when it is plastered on an object somewhere on your screen. This means you can reason about the performance cost of each filtering type independent of the screen resolution used by the user, or the screen real estate occupied by the object
@@3kliksphilip In the example you show in the video, we happen to have an anisotropically mapped texture that closely resembles the distortion present in the scene. Of course this is rarely the case in reality, so we take multiple samples from projections close to the one present in the scene to estimate the true pixel value. Implementations vary, however, as sampling of such textures is done in hardware, and varies from platform to platform, so it is impossible to say exactly what the algorithm is. The OpenGL spec (EXT_texture_filter_anisotropic) for the anisotropic extension details one possible way of doing it, if you are interested.
Edit: I saw your pinned comment, it looks like you figured it out yourself :) I really enjoy these types of videos, it's often difficult to find very detailed comparisons between different techniques outside very specific and often convoluted examples.
Fantastic with the music! Don't even need to pull up the playlist myself. Also, great video as always, loved it
You really are great at explaining things in an easy-to-understand and engaging way. Thanks for the videos :)
Thanks for updating the existing guides from 2013 and 2017. This guide is very good!
5:00 Phillip... Thank you for doing subtitles on your videos, and thank you even more for having a sense of humor about it.
That two-too swap made me double take, you sly dog ;)
I've never seen a more simplier and more understandable Anisotropic filtering explanation
Thanks!
Texture Filtering, Anti-Aliasing, Ambient Occlusion, and their (the former 2) different subsettings.
These used to confuse the hell out of me. Whenever I need to tweak settings for performance I'd search up what these terms meant, and then immediately forget them afterwards. Nowadays I seem to retain the info better in my mind :)
ambient occlusion isn't even related to textures, it's the shadow between two contact areas
kilks I just want to say how amazing your videos have been over the years. Your style has always been so unique and authentic and no one could ever replicate it. I really appreciate the hard work you put into your videos
It’s a setting I always thought causes massive frame loss. Thanks for clearing it up!
It's worth running a benchmark if the game allows it (it used to be common in older games, not anymore unfortunately.) But you can always look at "tweaking guides" or try some yourself.
Thank you for such a clear demonstration of Antistropic Filtering and it's impact! I only kinda knew what it did and figured it was simply loading textures at a higher resolution further away and therefore being a demanding setting. Pleasantly surprised.
ALSO YEAH WHAT WAS UP WITH THAT WITH MANKIND DIVIDED? That pissed me off to, to no end, I specifically remember asking WHY.
*Thank you* for demonstrating what a negligible impact anisotropic filtering has on performance. It extremely irritates me how many games to this day default to lower than 16x anisotropy, and how many don't even give you the option of correcting it. And I seem to recall seeing recently some sort of "optimized settings" guide recommend lowering it.
I love how your technical videos can be so hilarious and engaging!
Thank you, I finally understand the settings of CSGO. I am now complete.
Anisotropic is in most cases hardware supported, and the hardware support caps out at 16x. APIs allow this to go up to 64x, but as of yet not a single GPU supports anything above 16.
The original Serious Engine supports up to 128x AF somehow, but yeah hardware can only use up to 16x.
Always wondered what those setting did apart from one looking good and the rest looking bad.
Never bothered to look it up either. THIS IS WHY YOU ARE AMAZING PHLIPPY. stuff you wonder about, but never want to actively look for.
then you come along and it's always a nice watch and now you know! thank you a helellelelelela lot mate
When you showed the Mipmapping comparison, sea of thieves came to mind. Keeping the detail of the waves near you while it seems amazingly transitioned the further it out is hard to pull off since the sea is all you're really looking at.
Great! Wish you touched on input lag 'rumous' linked to anisotropic filtering.
Ooh. Same with antialiasing! I am addicted to finding the lowest possible input lag.
Thanks for explaining!
I always knew what these settings do visually but never understood it in detail.
What an amazing explanation :o
I always felt that the setting looks better but couldnt tell you why. This video just told me that the difference is way more obvious and I shouldve caught it at some point tbh
Ever since GTA V came out, I have known what this setting is, since the effects of having it set at anything other than max is VERY apparent on the roads.
By the way, the reason why FSR fixed the partial texture blurring is due to something called MIP bias.
MIP bias offsets the borders where the game switches to a higher MIP level (smaller version of the texture). This increases image sharpness, but can cause a bit of aliasing in textures.
FSR does that because it does a better job with oversharpened textures. Otherwise the FSR result would be much blurrier.
3kliksphilip i watch your videos for years now (subscribed since 2015 i think) and i always take great joy in the small details/jokes/emphathisesesssess you do like the sirocco one in this video, thank you for that (and your videos)
videos like this are why ive been watching philip since 2015
That 16x anisotropic filtering truly is eyegouchingly beautiful, in the words of a wise man
Two my favorite games at thumbnail, I don`t what video about I am just here and watching it all!
Great explanation, I always knew that texture filtering basically improves the image quality for approximately zero cost, but I never really looked into how it works. For CSGO I actually have it set to Bilinear in the hope that mushy textures will make my opponents easier to see though, lol.
Been using 16x Anisotropic filtering since when I discovered the setitng. A very quick google search revealed that the performance impact is so little on modern GPUs, you might as well just force it to 16x and forget about it. Back in the DDR and DDR2 GPUs days this could offer a performance hit. But ever since the first GDDR4 and 5 GPUs dropped... it's just not making a significant enough performance difference to lower it because the GPUs can work with anisotropic filtering very well.
6:53 Made me chuckle.
Really informative video, thank you!
Been a while, but I remember some demo where you could crank anisotrophic filtering (and other filters) up way past 16x and then play around with textures at all sort of distances and angles. I think it was 3DCenter filter tester. Not sure if that still runs on modern drivers/windows though.
I also remember a demo available in nvidia or amd drivers back in early 2000s where they showed a 3d scene with a fly by and let you adjust settings like texture filtering and msaa. It also highlighted and zoomed in on areas that would change the most, it was super cool.
Short and informative, this is really nice!
Another great video!
edit: I mean I even enjoy watching you cook but still :D
I always thought it was just my eyes trying to see the difference between 2x, 4x and 8x AA
I thought texture filtering was how the texture itself is displayed, so I'm completely wrong here :D you learn something new every day
I actually learnt something! Thanks Philip.
I've seen so many game devs butcher this setting. LIke low/medium/high graphics presets having 2/4/8x anisotropic, instead of cranking it to 16x from medium and up.
Also i could have sworn i played a game that had 32x anisotropic. Can't remember for the life of me which though.
I think this is why you can overwrite this kind of settings via the driver settings.
I was looking for this one day wondering what it did. thank you for making video about it
I Antialiased and MipMapped all over the place
1:59 Antystrophic Philtering 🤣🤣🤣 i love you❣
Anisotropic 16x is always great. Love using it.
Between you and WarOwl. Most goated CSGO youtubers.
i never even realized its 'Anisotropic' before philip points it out. Always read it 'Antistropic'
The "antistrophic" part felt like I was being called out LOL
VRAM, Philip. The answer is VRAM. 8x use only half the amount of VRAM (in stored textures), and graphics cards only started going into 8GB/12GB VRAM last decade or so.
Honestly, you could make videos of this length talking about every setting individually and I would watch every one.
Back when I was first playing Half Life 2 on a crappy laptop with a Core 2 Duo and getting somewhere around 15-20 fps, I found that texture filtering was the singular setting I could max out, because it made no difference to my framerate but it did make a noticeable improvement to the graphics. Ever since then, I've treated it as "set it and forget it" turning it to the max that every game will let me put it at. And I still don't really understand why it's even a setting honestly, it feels like at this point it should just be set to 16x (or dare I say, maybe 32x?) at the game engine level and just left there.
glad 3kliksphilip is willing to shout out small creators likes 2kliksphilip, what a benevolent man
Wow, I just assumed that because it makes such a huge graphical difference, the setting had a high performance impact and since my rig was underpowered when I bought it back in the stone age, I have always set it to the lowest setting and just dealt with the smeared distant textures.
After seeing this, I'll definitely see if I can get away with cranking that up since it does make a night and day difference to the graphical quality.
It would be neat if one of the kliks channels could do a whole video dedicated to obscure graphics settings. I've figured out many of them over the years, trying to squeeze every last drop of performance out of this rapidly rotting potato, but every now and then I'll go through the settings of a game to try to optimize and get some word/letter salad setting with no explanation of what it does or how it will effect performance. I love it when games have little a help bubble that pops up when you mouse over settings to tell you what the setting sets and how big a performance hit you can expect from the higher options.
the world has decided that _16 samples per texel_ is as high as you should crank this setting guys
Fun source engine fact with texture filtering. Vtf have a flag that when enabled forces anisotropicx4 filtering for that texture on bilinear and trilinear settings.
The oversight is that it does not get applied for anisotropicx2. So for very specific circumstance you can have something filter worse on higher settings than lower.
I believe the use of Parallax Occlusion Mapping in Deus Ex MD causes the AF setting to impact performance more than it should. POM + 16xAF + 4K probably gets ~10% ish less performance than POM + 8xAF + 4K.
3:14 Survival of the smartest graphics Dell Rig? I love that video its agenda is timeless
One thing to keep in mind about anisotropic filtering is that all those extra cut-down resolutions take up extra VRAM, which might be at a premium in games that already have a crazy amount of high-res texture and model data to begin with. And also that, in Source at least, those textures aren't even stored in the game files the way the square mipmaps are, but are actually generated by the engine. Presumably because it cuts down on load times. I'd be interested in knowing how it works in other engines. I'd bet that some of them store the aniso mipmaps in the game files, and others store _neither_ version, just the high-res originals.
Something I've always wondered about but never bothered to look up explained in an enjoyable 3kliksphilip video? Lets fucking go.
never click on a philip video this fast, clicked before the thumbnail loaded
FSR and other upscalers use a mipmap bias so that the game still uses the higher resolution textures even though the render res is lower. You can do this manually as well on Nvidia GPUs using the Nvidia Profile Inspector.
From an avid gamer on PC for over half my life. I've just referredto this effect as "Merging the blocks apart" HL1 has a great example of this where in later states above ground everything that isn't the floor looks so ridgid and blocky Almost looks minecrafty if you get really close. I felt it just smooshed all those texture blocks into a more realistic look.
Must say for my first video of the day, that was not just entertaining but a good bit of source history.
I knew the difference and always played with it on Bilinear in CS:GO. I’ve done so because I felt it made characters on the screen more visible at a distance.
Ever since they started reworking CS maps I’ve felt like they kept adding more and more unnecessary complex details everywhere, which made characters less and less visible overall (Nuke, Dust 2, Cache), Inferno is probably the only reworked map I enjoy playing, because it overall has a cleaner style, more balanced color palette (and probably closer distances). It takes away from the competitive gameplay experience of the game for me. 🤷♂️
I could listen to the background music for HOURS. Will you ever make a 1 hour mix?
What is the name of the music?
I don't exactly remember when, maybe 4 - 5 years ago, but, I've dreamt of watching this video.
i love some minecraft in my counter strike
no waayyy i love your videos dude!
@@roggotherogue2906 thanks!
Thank you Philip for teaching me how to pronounce anisotropic.
Hi Philip, I wish there was one of you for every topic
always wondered what that option was, great video :3
i love the way your desktop icons are placed
love your music kit!
I learned what Texture Filtering did from Far Cry 5 because it shows a display of what things look like in video settings.
I saw that easter egg at 5:00 where you swapped two and too in the captions!
Well done on the 1M Philip. Well Deserved!
2:40 made me laugh so hard, nice vid 3kliks can't wait for the CS2 coverage :D
epic gamer phillip with the clunch as always
I've been setting this to 16x since it became a thing and never looked back. 8x if I'm optimizing performance but never lower. It's FPS impact ranges from nothing to negligible.
Is that a new version of Crossing Those Islands at 5:35? Like it a lot!
Hey Phillip, my friends and I got to play against you on an overpass game the other day. It was a pleasure to play against you whilst using your music kit, even though we lost.
philip still plays CS:GO??
@@TheCatOfWarCSGO Our thoughts exactly
For years I didnt know that the correct term was "mipmapping", thanks
A texel is a pixel in texture space. So say if you have a 64x64 piece of geometry, with 512 pixel texture applied to it, this piece of geometry would have 512 texels. If you made this 128x128 instead, with the same 512 pixel texture, you'd still have 512 texels, just at 4x the size. What this filtering does primarily, is it helps take that texel (a pixel in 3D space) and rasterise it into a 2D image.
If you ever wondered why PS1 graphics often had that shimmery look to textures in 3D space, it's because there was basically no filtering at all, so often times what a rasterised pixel in the 2D image would rapidly switch between different texels.
Whenever I install my graphics drivers, I jump into 3D settings and force AF 16x for all programs.
It rarely has issues in games (Minecraft actually has black borders around blocks for some reason), but for games that don't have a dedicated setting or don't support AF, it's great.
Minecraft is definitely a game that could benefit from anisotropic filtering built-in, and one that has little excuse not to use it. Textures only go down to 1/16 their max resolution to begin with, the pixels are huge, and the game takes up almost no VRAM so there's plenty to spare.
For Java edition Optifine can provide anisotropic filtering properly. Although last time i checked it was extremely CPU-bound for reasons unknown to me.