If you spend enough time building in Unity, you start to see the same visual bugs over and over again. Weird shadows, flickering textures, scenes that look washed out for no apparent reason — we've all been there.
When you're trying to ship a game, spending hours debugging a shadow artifact is the last thing you want to do.
Over time I've built up a mental cheat sheet for diagnosing these issues quickly. Here are the 10 most common ones, what causes them, and the fastest way to fix each.
1. Shadow Artifacts (Stripes or "Acne")
The cause: Shadow bias or precision issues. The object is casting a shadow on itself.
The fix: Increase the Shadow Bias and Normal Bias on your light source.
If you push the bias too high, the shadow will detach from the object (known as "Peter Panning"). Dial it back just enough until the acne disappears.
2. Jagged or Pixelated Shadows
The cause: Low shadow resolution.
The fix: Go to Quality Settings and increase Shadow Resolution. If you're using a Directional Light, tweaking Shadow Cascades can dramatically improve quality near the camera.
3. Light Bleeding Through Walls
The cause: Light leaking — usually caused by thin meshes or bias settings that are too high.
The fix: Check shadow bias and normal bias first. If those are fine, ensure your meshes have actual thickness. Single-sided planes are notorious for light leaks.
4. Objects Look Too Dark or Flat
The cause: Missing Global Illumination or an incomplete lighting setup.
The fix: Ensure you have ambient light or skybox lighting active. If you're using static geometry, baking your lighting usually solves this and adds much-needed depth.
5. Overbright or Washed Out Scene
The cause: Exposure or Post-Processing Tonemapping issues.
The fix: Check your Post-Processing Volume — specifically Auto Exposure and Color Grading/Tonemapping. Default auto-exposure can go wild in high-contrast scenes.
6. Flickering Textures (Z-Fighting)
The cause: Depth precision issues where two faces occupy the exact same space.
The fix: Make sure your meshes aren't perfectly overlapping. If they aren't, adjust the Near and Far Clip Planes on your Camera. Moving the Near Clip Plane further away increases depth precision.
7. Blurry Textures at an Angle
The cause: Texture import settings — specifically filtering.
The fix: Select the texture in your Project window and increase the Anisotropic Filtering level. This keeps textures sharp when viewed at oblique angles like roads or floors.
8. Sudden Performance Drops in Complex Scenes
The cause: High overdraw (drawing transparent pixels on top of each other) or too many objects pushing the GPU.
The fix: Implement LODs (Level of Detail), use GPU Instancing for repeated objects, and check your overdraw in the Scene window's draw mode selector.
9. Too Many Draw Calls (CPU Bottleneck)
The cause: Unbatched objects. The CPU is telling the GPU to draw too many individual things.
The fix: Enable Static Batching for non-moving objects. For dynamic objects sharing the same material, ensure GPU Instancing or Dynamic Batching is enabled.
10. Weird Lighting or Dark Patches on Meshes
The cause: Broken or inverted normals on the 3D model.
The fix: Select the model in your Project window, go to Import Settings, and set Normals to Calculate instead of Import. If that doesn't work, recalculate normals in Blender or Maya.
Quick Reference
| Symptom | Cause | First thing to check |
|---|---|---|
| Shadow stripes / acne | Self-shadowing | Shadow Bias on light |
| Jagged shadows | Low resolution | Quality Settings → Shadow Resolution |
| Light through walls | Thin mesh / high bias | Mesh thickness + bias values |
| Flat / dark objects | Missing GI | Ambient light or baked lighting |
| Washed out scene | Post-processing | Auto Exposure / Tonemapping |
| Flickering textures | Z-fighting | Near/Far Clip Planes |
| Blurry angled textures | Filtering | Anisotropic Filtering level |
| Performance drops | Overdraw / GPU load | LOD + overdraw view |
| Too many draw calls | Unbatched objects | Static/Dynamic Batching |
| Dark patches on mesh | Bad normals | Import Settings → Normals: Calculate |
I ran into almost all of these while building out my recent multiplayer projects. Once you learn to recognize the symptoms, fixing them becomes second nature.
What rendering issue trips you up most? Got a bug that's driving you crazy right now? Drop a screenshot in the comments and I'll do my best to help diagnose it.
Currently building a Unity WebGL multiplayer library in public — socketio-unity. Follow along to see more of the technical hurdles I run into.








Top comments (0)