7 Replies Latest reply on Mar 23, 2013 8:43 PM by machuidel

    Z-Buffer Fighting (Texture Flickering) in Direct 3D Games

    troff_hudson

      Hi folks, This is my first post in this forum, I'm not a developer (not yet anyway ) just a computer science major.

      Anyway, my PC is struggling with Z-buffer fighting in many of the video games that I play. From wiki: "Z-fighting is a phenomenon in 3D rendering that occurs when two or more primitives have similar values in the z-buffer." The resulting effect is a very annoying flicker caused by the two polygons "fighting" to be displayed

       

      I've found lots of good videos from youtube to demonstrate the problem:

       

      Fallout New Vegas:

      http://www.youtube.com/watch?v=S2iTynDKm1Y

      http://www.youtube.com/watch?v=__lLvJrkEnI

      http://www.youtube.com/watch?v=lRVAXR2yFXA

      http://www.youtube.com/watch?v=7O_6KCtLn84

      http://www.youtube.com/watch?v=KDWzTwXrwBE

      http://www.youtube.com/watch?v=umGW37sti6Y

       

      Skyrim:

      http://www.youtube.com/watch?v=HKfxewncqcg

      http://www.youtube.com/watch?v=orcXIA3gnBg

      http://www.youtube.com/watch?v=IUHvV80xEbQ

      http://www.youtube.com/watch?v=MnDtLIemqKg

      http://www.youtube.com/watch?v=uZw-OeAydko

      http://www.youtube.com/watch?v=KvlYAbWXh8g

      http://www.youtube.com/watch?v=kYjebsn_27g

       

       

      Battlefield 3:

      http://www.youtube.com/watch?v=_kzhqckO1ug

      http://www.youtube.com/watch?v=QGc9dYfEzlI

      http://www.youtube.com/watch?v=U1nNn0YA8Yw

      http://www.youtube.com/watch?v=IcR41cfjf-8

      http://www.youtube.com/watch?v=O88kIvwyJGw

       

      I've also seen Z-buffer fighting in:

      -The walking dead (the video game)

      -Star Wars The old Republic

      -Burnout Paradise City

      -Crysis 2

       

      In fact there's even an entire web page built for people struggling with this:

      http://wiki.step-project.com/Guide:Z-Fighting

       

      Here's my current specs:

      CPU: Phenom II X4 960T

      Mobo: A770E3

      RAM: 2X 4GB Corsair Vengence @ 1333

      OS: Win 7 pro 64 bit

      GPU: AMD RADEON HD 6850

       

       

      Here's what I've tried:

      1. Switching GPU to HD 4870 and finally an Nvidia Quadro 4000D <-- Workstation GPU (same exact effect)

      2. Switching GPU into completely different computer

      3. Reformatting/reinstalling windows

      4. Upgrading Power Supply + Computer Monitor

      5. Applying Game updates

      6. Applying GPU driver updates

      7. Applying Mobo bios updates

      8. Applying Mobo chipset updates

      9. Contacting Game manufacture

      10.Contacting GPU vendor

      11.Contacting AMD support

      12.Contacting Nvidia support

      13.Sending GPU for warranty replacement with Visiontek

      14.Extensive Forum research

       

      Please escalate this post, I really need an expert. As I said, many tech savvy people have thrown up their hands at this one. It'll take a hardware genius to fix this one.

       

      $$$$You want to know the real truth?... I'd never buy an Nvidia card if it meant not having the flicker (and I know many who would feel that way too)... But as it stands, both AMD and Nvidia struggle with this$$$$

       

      Please help.

          • Re: Z-Buffer Fighting (Texture Flickering) in Direct 3D Games
            avk

            Well, I encountered Z-fighting once or two, but, for me, this effect is not as important as for you. The only way to resolve it, IMHO, is to... ignore it. Theoretically, it is developers of the games (mostly) and graphic drivers (less) are responsible for this effect, so if you don't want to ignore it (like almost all people do), then let those developers know about it .

              • Re: Z-Buffer Fighting (Texture Flickering) in Direct 3D Games
                troff_hudson

                thanks avk for replying, its been over a month and your the only one to post a reply. I find it unlikely it's a software issue when the error is present in a number of different game engines. I mean no disrespect, but please take a look at some of my youtube links, the problem is pretty hard to ignore.

                 

                I find it hard to believe that with as many options we have in the catalyst suite, we can't have one like "Force 64 bit z-buffer" <---- maybe that's a bit extreme but seriously we have enthusiasts spending thousands of dollars on computers running quad crossfire 7970's... all for the sake of immersion... is a 64 bit z-buffer really all that bizarre? hell make it 128 bit.... whatever it takes to make the z-buffer precise enough to figure out which texture to display instead of flickering...

                 

                I get it, video game maps are REALLY big.... to compute the location of a 3D model that's half a mile a way it's REALLY complicated... sounds like you'd need a REALLY big z-buffer to accurately determine it's coordinates...

                 

                am I missing something?

            • Re: Z-Buffer Fighting (Texture Flickering) in Direct 3D Games
              machuidel

              You are not the only one. I have been in a similar situation for a while. Paying a lot of money to build a gaming PC and then every game I play I get distracted by annoying z-fighting problems. Thinking my GPU was faulty I bought an new one, without success. The time I spend to fix all those issues can be measured in months (which I could have spend on developing my own games).

               

              Some games I even get this problem when standing close to objects (Fallout). Like this person is having:

              Shimmering / z-fighting door on building: http://img401.imageshack.us/img401/5375/screenshot74e.jpg

              Z-fighting banner on tower in the back: http://img715.imageshack.us/img715/4287/screenshot72a.jpg

              They shimmer / appear / disappear when walking. Clearly these are z-fighting issues. Funny thing is that on YouTube other people do not appear to have this problem making me think the issue is on my side. But after replacing every component in my computer, reinstalling different versions of windows, different drivers etc. I am not that sure anymore.

               

              The only games I play that are not having (or at least noticeable) z-fighting problems are Arma 2, Arma 3 beta and Crysis 1. What they have in common: These are all games made especially for the PC.

               

              Z-fighting issues are not the only problems I am having. For example. I cannot get Skyrim to use Alpha to Coverage:

              http://forums.nexusmods.com/index.php?/topic/521462-shimmering-foilage-vegetation-when-moving/

              This is also a game specific issue as in Fallout 3 and NV the Alpha to Coverage just works.

               

              I tried everything you did except writing the companies. Being a game developer myself these things really annoy me. I develop mostly 2D and 3D voxel/point-cloud games which do not suffer these problems.

               

              Because my screen is having a low pixel-per-inch these problems are really noticeable for me.

               

              Edit: Removed technically incorrect text.

                • Re: Z-Buffer Fighting (Texture Flickering) in Direct 3D Games
                  troff_hudson

                  machuidel,

                   

                  it's very encouraging hearing I'm not the only person that's really annoyed by this problem. Thank you for more information about the problem, at least now I have hope that with the next generation of consoles things will improve on the PC end as developers are not stretched to make modern games work on antiquated hardware.

                   

                  I understand what you're saying, so there's no easy solution on the hardware/driver level to FORCE a higher precision. I just had assumed it would be something like V-Sync, but you know what they say about assuming...

                   

                  Anyways, thanks for your comment...

                   

                  Oh I do have one bit of advice for you or really anyone playing a bethesda game that has issues with z-fighting

                  In the .ini files there is a VERY special value called fNear= or sometimes like in Skyrim I think it's fNearDistance=

                  Now usually the value is set down at like 5 or so... but if you move the value up to say 10 or sometimes 11 or 12, you will see a DRAMATIC decrease in z-fighting. This is because you are pushing the ZNear further out.

                   

                  In order to make this work however you have to edit the default.ini file in the program folder where the .exe is located.

                  Hope this helps you guys out, while the z-fighting is still present, it is WAY better like this.

                   

                  I would move the value up to more like 18 or 20... BUT if you do this the back of your weapons begin to disappear along with walls that are nearby... as literally you're moving the minimum render-able distance further away from yourself

                   

                  DISCLAIMER: I am not a developer, and not a computer engineer, the knowledge I'm giving here is really of my own research and I'm not 100% of its accuracy, it's just how I understand them to be, feel free to correct me.

                    • Re: Z-Buffer Fighting (Texture Flickering) in Direct 3D Games
                      machuidel

                      I deleted (right after I posted it) the part where I talk about linear and non-linear depth-buffers as I felt there were some technical inaccuracies. Looks like that is the part you are mostly referring to in your post. Sorry for deleting it.

                       

                      For other people to understand. I was talking about tricks being used to get higher near precision at the cost of lower far precision. This is usually implemented inside a shader and difficult to identify on a driver level which part is responsible for the depth calculations. The reason I think my text was technically inaccurate: 1) The higher near precision and lower far precision are just a consequence of the perspective calculations 2) The GPU internally manages its own depth-buffers (which can be accessed through frame-buffer objects). I assume (you are not the only one ) it should be possible to force those depth-buffers to be of a higher precision (like on some older video-cards). This will of course not fix those custom depth-buffer shaders.

                       

                      Thank you for the tip about setting the fNear parameter. This will help me a lot.