facebook rss twitter

Review: NVIDIA ForceWare 70 and 75 MIP Boundary Shimmering with GeForce 7800 GT and GTX

by Ryszard Sommefeldt on 2 September 2005, 00:00

Quick Link: HEXUS.net/qabqn

Add to My Vault: x

So what's up with recent drivers?

Remember I talked about filter kernel position, defining what texels you sample? It's that positioning, which calculates the proportion of the MIP chain that you sample (more from one MIP, less from the next, in a fixed ratio), that's got NVIDIA in the bind outlined on the first page. They've apparently moved the sampling ratio to favour texel samples from MIPs further down the chain, undersampling the closest MIP, which results in oversampling the next MIP in the chain. That's a by-product of level of detail selection, which is why LOD clamp appears to help it in some applications, but LOD clamp isn't the global fix.

Shifting the ratio of MIP:nextMIP texel sampling ratio is therefore causing the shimmering, as a product of sampling the most relevant texels, less. The image therefore appears to shimmer, as the hardware gets the texel sampling mix wrong, caused by the driver telling it sample in the wrong place. You see that as a "this colour, no this colour, nope it was the first one, oh my god wrong again!" colour value choice, per pixel, as the hardware struggles to get it right across MIP transitions. The colour values are nearly right, but the aliasing is high enough to notice. "OMG SAMPLE THE RIGHT TEXELS FFS", sums it up nicely.

You can use texture filter test tools to see where the hardware and driver start using MIP levels as you increase LOD (and therefore where in the MIP chain you're sampling from), but they can't tell you the whole story, the driver likely treating such tools differently to how it would a game title. The proof of the issue lies in video and screenshot evidence, playing games.

Owners of any GeForce 7-series card can see the effect for themselves by installing any of NVIDIA's release or BETA drivers prior to 78.03. Set your card to Quality or High Quality mode, which is crucial to understanding the problem, turn on any degree of anisotropic texture filtering in your game, and unless the game does something odd with LOD selection, you'll see texture shimmering at MIP transitions of varying degrees in your game.

Owners of any GeForce 6-series card can select High Quality mode in the driver to reduce the effect, the driver and hardware conspiring to adjust the filtering parameters enough that the shimmering all but disappears and, indeed, should rarely be visible at all.

The fact is that High Quality mode continues to exhibit under and oversampling at MIP boundaries, on GeForce 7-series hardware. Herein lies the chief complaint and the reason for this article's existence. This is at odds with their own Reviewer's Guide documentation which states that High Quality mode disables texture filtering optimisations.

77.77 video

HEXUS.note

HEXUS have videos available that graphically demonstrate the effect in motion. We're working on securing a provider for the videos to allow us to make them freely available if you don't have GeForce 6 or 7-series hardware, but until then we'll have to ask those that genuinely would like a look at the videos to drop a quick email to care@HEXUS.net with a request for the links. We'll get rid of this screening as soon as we've got a more permanent location for them where bandwidth is less of an issue.
Before I discuss what you're looking for in the video, here's some tips to looking at it properly. First, don't use Windows Media Player, or if you do, be sure to scale the video to its original size. WMP9 and 10 have a default setting that makes it expand the video to fit the window, which is usually somewhat full screen. The video's native resolution is 640x480 and was recorded at 60Hz, so you want the video sized to 640x480 and a refresh rate of at least 60Hz to see it properly.

I recommend using Media Player Classic from the guliverkli project hosted on SourceForge. The video was recorded using the excellent FRAPS tool. Big thanks to the guys at Beepa for sorting HEXUS out with a copy that fits our needs. You can download FRAPS from their website, here (fraps.com). The video is nearly 72MB in size, so be sure you want to download it before emailing us for the link and subsequently sucking down on the HEXUS.bandwidth.

What you should see in the video

What you should see, fairly clearly, is a number of lines running across the wood that appear to move with the player, as he runs back and forth along the walkway. Those are the MIP boundaries discussed to death on this page and the previous, where the hardware doesn't sample the texels correctly, causing the pixel colour to be slightly off and the texture to appear to shimmer when you move. Pixel colour is calculated per frame (infact, many times per frame as multiple fragment shader programs are run, per-pixel), so the shimmering is also a product of framerate.

In High Quality mode in NVIDIA's driver, level of detail is clamped to 0.0 by the driver, so the shimmering isn't a result of negative LOD as some have asserted, nor does clamping LOD to 0.0 fix it, as you can see.

The effect is visible in all manner of games titles to varying degrees, depending on your in-game image quality settings. It happens at all degrees of anisotropic filtering, from 2x (32 samples) upwards.

However, since it's clear that High Quality mode works on the GeForce 6-series boards, surely it's just a driver fix? After submitting a bug report to NVIDIA, they confirmed something was up and committed to fixing it. The next page has the result.