How To Fix Z Fighting Blender

If you’ve ever seen a flickering, shimmering mess on your models in Blender, you’ve encountered z fighting. Learning how to fix z fighting blender is a key skill for creating clean, professional renders and real-time visuals.

How To Fix Z Fighting Blender

Z fighting is a common rendering artifact. It happens when two or more surfaces occupy nearly the same 3D space. Your graphics card can’t decide which one is in front. This causes a distracting flicker as they fight for visibility pixel by pixel.

It’s a technical issue, but the solutions are straightforward. You just need to understand why it happens. Then, you can apply the right fix for your situation.

What Causes Z Fighting in the First Place?

To fix the problem, you need to know the root cause. Z fighting is all about depth precision. The “Z” refers to the Z-buffer, or depth buffer.

This is a part of your computer’s memory. It stores the distance of each pixel from the camera. When two surfaces have almost identical depth values, precision errors occur. The renderer gets confused and flickers between them.

Here are the most common culprits:

  • Overlapping Geometry: This is the number one cause. If you have two planes or faces sitting directly on top of each other, they will fight.
  • Extremely Large or Small Scale: A scene that is kilometers wide or millimeters tiny can stretch the limits of the depth buffer’s precision.
  • Viewing Distance: Objects very far from the camera can suffer from a lack of depth precision in that range.
  • Duplicate Objects: Accidentally having two copies of a mesh in the exact same location.
  • Boolean Operations: Sometimes, a Boolean modifier can leave behind messy, overlapping geometry.

Method 1: The Simplest Fix – Separate Your Geometry

Often, the answer is obvious. Check for surfaces that are touching. The easiest solution is to simply move one of them.

For example, if you have a floor plane and a rug plane both at Z=0, they will fight. Just select the rug and move it up slightly (e.g., 0.001 units). This creates a clear depth difference.

Use this approach for walls meeting floors, decals on surfaces, or any paired geometry. A tiny nudge is usually all it takes.

Method 2: Adjust the Clip Start and End Values

This is a powerful fix, especially for large or small scenes. Every camera in Blender has Clip values. These define the nearest and farthest distance it can see.

If the ratio between Clip End and Clip Start is too huge, precision suffers. Bringing them closer together improves depth accuracy.

  1. Select your camera.
  2. Go to the Object Data Properties tab (the green camera icon).
  3. Find the “Clipping” section.
  4. Increase the “Clip Start” value. Bring it as close to your scene as possible without clipping objects in the foreground.
  5. Decrease the “Clip End” value. Bring it as close to the farthest object as you can.

A good rule is to keep the ratio under 100,000:1. For a Clip Start of 0.1m, try to keep Clip End under 10,000m. This dramatically reduces z-fighting on distant terrain or large architecture.

Method 3: Fix Scale and Origin Issues

Working at an extreme scale can break many things, including depth precision. If your scene is massive, consider scaling everything down.

  1. Select all objects in your scene (A).
  2. Press Ctrl+A and choose “Scale.” This applies the scale transformation, resetting it to 1.
  3. Then, scale the entire selection down by a factor (like 0.001). Work in units that are comfortable, like 1 Blender unit = 1 meter.

Also, check your object origins. An origin far from the mesh geometry can sometimes cause calculation weirdness. Use Object > Set Origin > Origin to Geometry to fix this.

Method 4: Check for and Remove Duplicates

Accidental duplicates are a classic source of z fighting. You might have pressed Shift+D and not noticed the copy.

Blender has a handy tool to find these.

  1. Go to the “Select” menu in the 3D Viewport.
  2. Choose “Select All by Trait” > “Duplicate Geometry.”
  3. If anything is selected, you have duplicates. Press M to merge them.
  4. Choose “By Distance” in the merge menu. Ensure the merge distance is small but sufficient.

This will collapse any overlapping vertices from copies. It’s a good cleanup step for any project.

Method 5: Use the Decimate Modifier for Booleans

Boolean modifiers are notorious for creating non-manifold and overlapping geometry. If z fighting appears after a Boolean, the resulting mesh is likely the problem.

A useful trick is to use a Decimate modifier after the Boolean to clean it up.

  1. Apply your Boolean modifier first (if the mesh looks correct).
  2. Add a Decimate modifier.
  3. Set it to “Planar” mode.
  4. Adjust the “Angle Limit” slightly (like 1 degree). This will merge faces that are nearly coplanar, removing tiny overlaps and fixing the fight.

You can then apply the Decimate modifier for a clean mesh.

Method 6: Material and Viewport Settings

Sometimes, the issue is specific to the viewport shading mode. Eevee and Cycles also handle depth slightly differently.

Viewport Depth Precision

In Solid shading mode, you can adjust the depth precision for complex scenes.

  1. In the 3D viewport, find the “Viewport Shading” menu.
  2. Click the down arrow to open the options panel.
  3. Under “Options,” find “Depth of Field.”
  4. Increase the “Max Threshold” value. This can sometimes reduce viewport flicker, though it’s not a final render fix.

Material Transparency and Blend Modes

Transparent materials with “Alpha Blend” mode can cause sorting issues. This looks like z fighting but is a transparency depth sorting problem.

Switch transparent materials to “Alpha Hashed” or “Alpha Clip” blend mode if possible. This often solves the flickering for things like fences, hair cards, or foliage.

Method 7: The Nuclear Option – Manual Mesh Cleanup

If nothing else works, you may have a corrupt or messy mesh. You need to manually inspect and fix it.

  1. Enter Edit Mode on the problematic object.
  2. Select all vertices (A).
  3. Go to Mesh > Clean Up > Merge By Distance. This merges vertices that are extremely close together.
  4. Also try Mesh > Clean Up > Degenerate Dissolve. This removes edges and faces with no area.
  5. Look for internal faces or non-manifold geometry (select Select > Select All by Trait > Non Manifold). Delete or fix these areas.

This process ensures your geometry is watertight and free of hidden overlaps.

Preventing Z Fighting in Your Projects

An ounce of prevention is worth a pound of cure. Follow these habits to avoid z fighting from the start.

  • Model with Intention: Avoid placing faces directly on top of each other. Use a slight offset.
  • Mind Your Scale: Start your project with a sensible unit scale (Edit > Preferences > Scene Units). Stick to real-world scales where possible.
  • Set Camera Clips Early: When setting up your camera shots, adjust the Clip Start and End as your first step.
  • Check for Duplicates: Make it a habit to run the “Select Duplicate Geometry” tool before finalizing a model.
  • Apply Transforms: Regularly use Ctrl+A to Apply Rotation & Scale on your objects.

FAQ: Common Questions About Z Fighting

Why is my Eevee render showing z fighting but Cycles is fine?

Eevee, as a real-time engine, uses different depth precision techniques than the ray-traced Cycles. It’s often more susceptible. The fixes are the same, but pay special attention to camera clip ranges and scale in Eevee projects.

I fixed it in the viewport, but my final render still flickers. Why?

The viewport and render engines can use different settings. Make sure you’ve adjusted the Clip values on the render camera, not just the viewport camera. Also, check that you haven’t just hidden the problem in the viewport with depth threshold settings.

Does z fighting happen in game engines like Unity or Unreal too?

Yes, absolutly. Z fighting is a universal computer graphics issue. The principles are identical. In game engines, you’ll use techniques like polygon offset (sometimes called “depth bias”) on materials, or manually adjusting mesh placement, just like in Blender.

Can a graphics card cause z fighting?

Not typically. While a driver issue could theoretically cause artifacts, z fighting is a mathematical precision problem, not a hardware fault. A fix in software (Blender) will solve it on any capable GPU. If a scene looks correct on one machine but not another, double-check the camera and scale settings are identical.

Is there a way to just increase the depth buffer size globally?

No, the depth buffer precision is fixed by the graphics API (like OpenGL or Vulkan). It’s usually a 24-bit or 32-bit buffer. You can’t directly increase its size in Blender. Instead, you must manage your scene’s depth range wisely using the Clip Start/End method, which is how you optimize for the available precision.

My terrain is flickering where objects meet it. What gives?

This is classic overlapping geometry. Your terrain mesh and the object’s bottom faces are likely occupying the exact same space. Use the “nudge” method: select the object and move it up slightly along the Z-axis. Even a tiny amount, like 0.0001 units, can be enough to resolve the conflict without being visually noticeable.

Z fighting can be frustrating, but it’s always solvable. Start by checking for overlapping faces and adjusting your camera clip. For large scenes, revisit your scale. With these tools, you can eliminate that distracting flicker and ensure your renders look crisp and professional. Remember, clean modeling and sensible scene setup are the best long-term defenses against this common issue.