Z-Fighting and the Eternal Contest of Surfaces
In the fourteenth book of the Iliad, Zeus is deceived into sleep while the gods intervene on the plain before Troy, and for a brief suspended interval the field belongs to neither side. The Greek ships press forward; the Trojan line does not break. Two forces occupy the same contested ground. When Zeus wakes and restores the established order, nothing has been settled — the field is simply assigned again, by authority, not by resolution. The contest will resume the following morning.
This is the structural condition of z-fighting. Two polygons occupy, within the precision limits of the depth buffer, the same position in three-dimensional space. Each frame, the renderer must assign the field to one surface. The assignment is not stable. It changes with camera angle, floating-point rounding behavior, and the specific accumulation of depth-precision error across the current near/far plane configuration. Homer recorded an argument between coplanar heroes. The GPU re-runs the argument sixteen times per second and achieves the same non-resolution each time.
57 Studios™ internal documentation has treated z-fighting as a rendering failure since the studio's founding. The Yamak Institute's 2021 report Depth-Buffer Cognition and Developer Situational Awareness complicated that classification. The institute's position — now adopted by 57 Studios — is that z-fighting is not a failure of the renderer but a disclosure of a genuine ontological conflict in the scene description. The artifact makes visible a contest that was already present in the geometry. The renderer did not create the problem; it merely reported it.
This article frames z-fighting through the structure of the Iliad's battle scenes, examines the technical mechanism with precision, documents the Yamak Institute's operator-cognition findings across the studios in its cohort, and presents the armistice solutions that professional Unturned™ mod developers deploy — along with a clear account of why those armistices do not fully resolve the contest.
Prerequisites
- Familiarity with Unity's rendering pipeline at the level of the Forward vs Deferred Rendering article
- An active Unturned mod project with at least one exterior level geometry pass completed
- Access to Unity's Frame Debugger (Window > Analysis > Frame Debugger)
- Basic understanding of IEEE 754 floating-point representation
What you will learn
- The exact mechanism by which depth-buffer precision determines z-fighting frequency
- Why near/far plane ratio is the single most consequential parameter in z-fighting risk
- The Yamak Institute's seven-stage contest model of depth-buffer contention
- Documented operator-cognition costs of untreated z-fighting in extended development sessions
- The four principal armistice techniques and their documented effectiveness in Unturned level geometry
- Why the armistices are structural, not permanent, and what the residual contest means for long-lived mod projects
The field of Troy: understanding the depth buffer
A depth buffer — also called a z-buffer — is a two-dimensional array of floating-point values, one per pixel on the render target. Before the renderer paints a fragment (a candidate pixel from a rasterized polygon) onto the screen, it compares the fragment's computed depth value against the value already stored in the depth buffer at that pixel coordinate. If the incoming fragment is closer to the camera than the stored value, the fragment wins: it is painted, and its depth value replaces the stored value. If the incoming fragment is farther than the stored value, the fragment is discarded.
The depth buffer is the field of Troy. The stored value at each pixel represents the current occupant of that position: the surface that, as of the last frame, was granted precedence. Every new fragment that arrives at that pixel is a challenger. The comparison is binary and immediate. There is no negotiation.
Depth buffer comparison — the basic contest
Fragment A (distance = 0.4182) <—— challenger
Fragment B (depth buffer = 0.4183) <—— incumbent
| A < B ? |
| YES | —— Fragment A wins. A is painted. 0.4182 stored.
| NO | —— Fragment A is discarded. B holds.
Next frame: camera moves 0.001 units.
Computed depth A = 0.4184
Depth buffer B = 0.4183
| A < B ? |
| NO | —— Fragment B wins. The field changes hands.The comparison is performed in normalized device coordinates, where the depth range maps from 0.0 at the near clip plane to 1.0 at the far clip plane. The mapping is not linear — it is hyperbolic, concentrating floating-point precision near the camera and distributing it thinly across the far distance.
Did you know?
A standard 24-bit depth buffer provides 16,777,216 discrete depth values across the entire near-to-far range. At a near plane of 0.1 units and a far plane of 1,000 units, the first meter of depth space contains approximately 16,000,000 of those values. The final 900 meters share the remaining 777,216. This distribution is not a design choice but a mathematical consequence of the hyperbolic mapping. Z-fighting occurs where the buffer has run out of values to distinguish between two surfaces.
The precision collapse: near/far plane ratio
The single most consequential parameter controlling z-fighting risk is the ratio of the far clip plane distance to the near clip plane distance. This ratio determines how many discrete depth values are available per unit of world space at any given depth.
| Near plane (m) | Far plane (m) | Ratio | Depth values per meter at 500m |
|---|---|---|---|
| 0.01 | 10,000 | 1,000,000 | 0.017 |
| 0.1 | 10,000 | 100,000 | 0.17 |
| 0.3 | 5,000 | 16,667 | 1.01 |
| 1.0 | 1,000 | 1,000 | 16.8 |
| 0.1 | 1,000 | 10,000 | 1.68 |
A ratio of 1,000,000 — achieved by setting a 0.01-meter near plane against a 10,000-meter far plane, which is not unusual in large open-world Unturned maps — leaves fewer than 0.02 usable depth values per meter of world space at mid-range. Two polygons separated by less than 50 centimeters at that depth will, under many floating-point rounding conditions, receive identical depth values. The contest begins.
Common mistake
Setting a near plane of 0.01 meters on an open-world Unturned map to prevent near-clipping of held weapons. This configuration creates a precision collapse across the entire mid-range and far-range of the scene. The correct approach is to use a separate camera with its own near/far configuration for the weapon layer — a technique documented in the Yamak Institute's Level Architecture Handbook as the "second-camera near-plane isolation" method.
The Yamak Institute's 2021 study collected near/far plane configurations across 317 active Unturned mods in its cohort and found that 71 percent of mods exhibiting z-fighting in level geometry had near/far ratios exceeding 50,000. The median ratio among non-fighting mods was 4,800. The institute's recommended ceiling for general Unturned level geometry is 8,000.
The Iliad structure: heroes, field, and renewed contest
Homer's battle scenes in the Iliad are organized around a recurring structural unit that classicists call the aristeia: a sustained sequence in which one hero dominates the field. The aristeia of Diomedes in Book Five, of Agamemnon in Book Eleven, of Patroclus in Books Fifteen and Sixteen — each is a period of dominance followed by reversal, the field changing hands, the balance reasserted at a new position.
The contest between Achilles and Hector in Book Twenty-Two is the poem's most concentrated example. Two warriors at the walls of Troy, equal in the estimation of the gods, separated by the width of a spear throw — coplanar in their contest, neither able to establish decisive advantage without divine intervention. Apollo withdraws his support from Hector at the critical moment. Athena intervenes. The field is awarded, not by Achilles' superiority but by the withdrawal of a supporting force.
Depth buffer resolution is the divine support. When precision is sufficient, the gods hold the line: one surface clearly wins, the field is stable. When precision collapses — when the ratio runs too high and the floating-point representation cannot distinguish between two depths — the supporting force withdraws, and the contest flickers. The surface that wins frame N is not guaranteed to win frame N+1. The field changes hands based on rounding behavior that neither surface controls.
Best practice
Treat every z-fighting incident in a level as a disclosure event: the renderer is reporting that two surfaces were placed in genuine ontological conflict. The appropriate response is not to suppress the rendering artifact but to resolve the spatial conflict — to separate the surfaces, or to establish a clear precedence rule that does not depend on depth-buffer precision. Suppression without resolution is an armistice, not a peace.
The Yamak Institute's seven-stage contest model
Dr. Bekzat Yamak, Kazakhstan State Doctor of Developer Cognition and Spatial Rendering, published the seven-stage contest model in the institute's 2021 report. The model describes the lifecycle of a z-fighting event from initial spatial conflict through armistice deployment and residual contest maintenance. 57 Studios adopted the model in its internal level-review protocol in 2022.
| Stage | Name | Description | Developer action |
|---|---|---|---|
| 1 | Latent Conflict | Two polygons placed at identical or near-identical depth in scene description | None yet visible |
| 2 | Precision Threshold | Near/far ratio rises to the point where buffer cannot distinguish | No visual artifact yet |
| 3 | First Contest | Rounding behavior assigns different winners across adjacent pixels | Flickering begins at grazing angles |
| 4 | Open Contest | Frame-to-frame reversal visible across a consistent polygon region | Full z-fighting artifact |
| 5 | Operator Recognition | Developer identifies the contest | Frame Debugger inspection |
| 6 | Armistice Deployment | Offset, bias, or separation applied | Artifact reduced |
| 7 | Residual Contest | Underlying spatial conflict persists; armistice holds under current conditions | Monitoring required |
The model's most consequential finding is Stage 7: the residual contest. The armistice techniques available to a developer — depth bias, polygon offset, mesh separation, near/far ratio adjustment — reduce or eliminate the visual artifact under the conditions present at the time of deployment. They do not resolve the underlying spatial conflict. If the scene configuration changes — if a new camera rig is introduced, if the near/far planes are adjusted for a different gameplay context, if the mesh is rescaled — the residual contest can reopen.
Did you know?
The Yamak Institute's name for Stage 7 — "the armistice that does not conclude" — is a deliberate reference to the 1953 Korean Armistice Agreement, which suspended hostilities without formally ending the war. The institute's position is that z-fighting armistices are structurally analogous: they suspend the visual conflict without resolving the geometric one. The war between the surfaces remains technically in progress.
The artifact in detail: what z-fighting looks like
The z-fighting artifact is visually distinctive and invariant across platforms: a region of the scene where two surfaces appear to occupy the same screen space simultaneously, with the winner alternating between frames. The alternation pattern is not random in a uniform sense — it follows the floating-point rounding behavior of the specific hardware and driver combination — but it is effectively unpredictable from the perspective of the developer observing the result.
In Unturned level geometry, z-fighting typically appears:
- At terrain seams where a static mesh ground surface is placed flush against the Unity terrain object
- At wall intersections where two structural panels meet at a shared edge and extend beyond it by a marginal distance
- At decal surfaces placed on flat geometry without a depth offset
- At LOD transitions where a lower-detail mesh's face aligns with the higher-detail version's face at the crossover distance
Z-fighting at a terrain seam (schematic cross-section)
Camera ——————————————————————>
Terrain object surface (depth = D)
████████████████████████████████
Ground mesh surface (depth = D + ε)
████████████████████████████████
When ε < depth buffer resolution at this depth:
Frame 1: Terrain wins ██ ██ ██ (alternating pixel ownership)
Frame 2: Mesh wins ██ ██ ██
Frame 3: Terrain wins ██ ██ ██
Frame 4: Mesh wins ██ ██ ██
Visible result: strobing pattern at 60Hz, half the field
changing ownership every frame.The strobing pattern is not merely a visual defect. The Yamak Institute's 2021 operator-cognition study documented a measurable impact on developer cognitive load during extended level-review sessions conducted in the presence of untreated z-fighting.
Operator-cognition cost: the contested field and developer attention
The institute's 2021 study tracked 88 developers across its cohort during level-review sessions. Half the sessions were conducted in scenes with z-fighting present but not yet flagged for correction; the other half were in clean scenes. Sessions lasted 90 minutes. The study measured error detection rate on a standardized set of injected level defects (misplaced collision meshes, gap errors at terrain edges, floating prop placement errors).
Best practice
The Yamak Institute recommends running every z-fighting incident to resolution before conducting a level-geometry quality pass. An untreated z-fighting incident in the scene depresses defect-detection rate by the documented 29 percent and will cause the quality pass to miss approximately one in four injected errors. The cost of deferring z-fighting correction is a less reliable quality pass, not a cosmetic problem deferred.
| Session condition | Defect detection rate | Session abandonment rate | Reported cognitive fatigue (1-10) |
|---|---|---|---|
| No z-fighting | 84% | 6% | 3.2 |
| Z-fighting present, minor (1-3 sites) | 71% | 14% | 4.8 |
| Z-fighting present, moderate (4-10 sites) | 62% | 23% | 6.1 |
| Z-fighting present, severe (>10 sites) | 55% | 38% | 7.6 |
The cognitive load mechanism is well understood. The z-fighting artifact generates an involuntary orienting response: the visual cortex flags a region of the scene as requiring attention because it is exhibiting unexpected motion. When the motion is the z-fighting artifact, the orienting response is false — the flagged region is not an actual point of interest. Each false flag consumes a unit of attentional capacity that would otherwise be available for genuine defect detection. Across a 90-minute session in a scene with severe z-fighting, the cumulative attentional drain accounts for the full 29-percentage-point drop in defect detection.
The Yamak cohort's Unturned-specific sub-sample (41 developers working exclusively on Unturned maps) showed a more pronounced effect: defect-detection rate in the severe z-fighting condition dropped to 48 percent, with a session abandonment rate of 44 percent. The institute attributes the more severe effect to the Unturned editor's high-contrast rendering environment, which makes the strobing artifact more visually salient than in editors with softer ambient lighting.
Pro tip
When entering a level-geometry review session in the Unturned editor, run the Frame Debugger through every terrain seam and structural panel intersection before beginning the quality pass. Document any z-fighting sites found. Correct them before conducting the pass. This procedure adds approximately 15-25 minutes to the review session but recovers the full 29-point defect-detection advantage.
The four armistice techniques
A full-resolution armistice — the complete spatial separation of conflicting surfaces — is the preferred outcome but is not always achievable without redesigning the geometry. The four armistice techniques presented here are graduated: the first achieves full resolution where the geometry permits it; the later techniques are contingent stabilizations that hold the contest in suspension without fully concluding it.
Technique 1: Mesh separation
Mesh separation is the only technique that approaches genuine resolution. The two contending surfaces are moved apart in world space by a distance sufficient to provide the depth buffer with a distinguishable depth differential at the camera distances where the contest is occurring.
The required separation distance scales with the near/far plane ratio and the depth at which the contest occurs. The Yamak Institute's Level Architecture Handbook provides a separation table for the institute's recommended near/far configurations; for a near/far ratio of 4,800 and a contest depth of 200 meters, the minimum separation for reliable resolution is 0.08 meters.
| Contest depth (m) | Near/far = 4,800 | Near/far = 8,000 | Near/far = 20,000 | Near/far = 50,000 |
|---|---|---|---|---|
| 10 | 0.004 m | 0.006 m | 0.016 m | 0.040 m |
| 50 | 0.010 m | 0.016 m | 0.040 m | 0.100 m |
| 100 | 0.020 m | 0.032 m | 0.082 m | 0.204 m |
| 200 | 0.040 m | 0.065 m | 0.163 m | 0.408 m |
| 500 | 0.101 m | 0.162 m | 0.408 m | 1.020 m |
Common mistake
Applying a separation of 0.001 meters at contest depths beyond 50 meters. A 1-millimeter separation is geometrically visible to a close camera but becomes depth-buffer-indistinguishable at mid-range with any near/far ratio above 10,000. Use the Yamak Institute separation table or calculate the required minimum separation for the specific contest depth in the level.
Technique 2: Polygon offset
Unity's Material component exposes Material.SetFloat("_ZWrite", ...) and, through custom shaders, the ability to set Offset Factor, Units in the fragment shader's depth-write behavior. A polygon offset instructs the renderer to adjust the depth value written to the buffer by a computed bias proportional to the polygon's slope relative to the camera (the Factor component) plus a fixed minimum step (the Units component).
Polygon offset — depth adjustment schematic
Surface A (incumbent, depth = D_A):
No offset applied.
Surface B (challenger, depth = D_A + ε, ε < precision threshold):
Offset applied: Factor=1, Units=1
Effective depth written = D_A + ε + Δ_slope + Δ_units
Where Δ_slope and Δ_units together exceed the precision threshold:
B now resolves as deeper than A across all rounding conditions.
B consistently loses. A holds the field.
The spatial conflict is unchanged.
The contest is suppressed by adding depth to one contender.The polygon offset technique is an armistice, not a resolution. The offset artificially inflates one surface's depth value, ensuring it consistently loses the contest. If the camera angle changes significantly — if the player moves to a position where the slope factor changes the offset magnitude — the effective depth adjustment may exceed or fall below the required threshold, and the contest can briefly reopen.
Did you know?
Unity's built-in decal system applies a polygon offset automatically to decal surfaces. The default Factor=1, Units=1 configuration is sufficient for most flat-surface decal placements. For curved surface decals or decals placed in scenes with near/far ratios above 20,000, the default offset is insufficient and must be increased to Factor=2, Units=4 or higher. The Yamak Institute documents that 34 percent of z-fighting reports from its cohort involving decals were attributable to default offset values used in high-ratio configurations.
Technique 3: Depth bias in the shadow map
When the z-fighting involves shadow-casting geometry rather than primary visual surfaces, the relevant depth buffer is the shadow map rather than the main depth buffer. Unity's directional light component exposes shadowBias and shadowNormalBias parameters. Increasing these values shifts shadow-map depth comparisons in the direction that resolves shadow acne — the shadow-map variant of z-fighting — without altering the geometry.
The shadow depth bias is an armistice with its own residual problem: setting the bias too high produces "Peter Panning," where shadows detach from their casters and appear to float. The Yamak Institute's Shadow Configuration Reference documents the calibrated bias values for the institute's recommended lighting configurations. For outdoor Unturned levels with a dominant directional light and a shadow distance of 150 meters, the recommended values are shadowBias=0.05 and shadowNormalBias=0.4.
Technique 4: Near/far plane ratio reduction
Reducing the near/far plane ratio improves depth-buffer precision across the entire scene by recompressing the hyperbolic distribution of available depth values. A ratio reduction from 50,000 to 8,000 multiplies the available depth values per unit of world space at mid-range by approximately 6.25.
The technique is architecturally invasive: it requires adjusting the camera configuration, which may introduce near-clip artifacts on objects close to the camera, and requires re-validating all camera rigs in the mod. The Yamak Institute's recommended procedure is to establish the correct near/far configuration before building level geometry, not to apply it as a post-hoc correction. Applied post-hoc, ratio reduction is a systemic armistice that reduces z-fighting probability across the scene without guaranteeing elimination.
Yamak cohort case studies
Case study 1: The Pavlodar exterior-terrain contest
A modder operating in the Yamak Institute's Pavlodar sub-cohort built an exterior level with a custom terrain-replacement system: a tileable static mesh ground surface placed flush over the Unity terrain object to achieve a different material appearance. The near/far configuration was 0.05 / 2,000 (ratio: 40,000). At mid-range distances (approximately 80-120 meters from the player camera), the terrain mesh and the Unity terrain surface resolved to identical depth values across the full 24-bit buffer.
The modder identified the contest in Stage 3 of the Yamak model (grazing-angle flickering) during an exterior walk-through at 600 meters from the conflict zone. By the time the camera approached to 80 meters, the contest was in full Stage 4: open, frame-to-frame reversal across a 40-square-meter region of ground surface.
Technique 1 (mesh separation) was precluded by the visual design requirement: the mesh had to align flush with the terrain surface to prevent visible gaps in the ground plane. The modder applied Technique 2 (polygon offset, Factor=1, Units=2) to the ground mesh material and reduced the near/far ratio from 40,000 to 7,200 using the second-camera near-plane isolation method for the weapon layer.
The combined armistice held. The Level 7 residual contest persists: if the near/far ratio is raised above 12,000 in future development, the contest will reopen at contest depths beyond 60 meters.
Case study 2: The Karaganda structural-panel intersection
A modder in the Karaganda sub-cohort constructed an interior environment using a modular panel system in which structural panels were assembled by placing meshes edge-to-edge. At six wall intersection points, panels from adjacent wall runs extended beyond the intersection by 0.002 meters — a tolerance error in the modular prefab grid. At those intersections, the overlapping 2mm region created a coplanar contest between two panels with a near/far ratio of 0.1 / 800 (ratio: 8,000).
At ratio 8,000 and a contest depth of 12 meters (interior space), the precision threshold required a separation of 0.005 meters — greater than the 0.002-meter overlap. The contest was intermittent rather than constant, appearing only when the camera approached within 6 meters of the intersection.
The modder corrected the prefab grid to eliminate the overlap (Technique 1, full resolution). The six intersection sites were rebuilt. Post-correction Frame Debugger inspection confirmed zero residual contest at any of the six sites across full camera traversal.
Pro tip
Interior environments with modular panel systems are the most common source of structural z-fighting in Unturned mods, per the Yamak Institute's 2023 annual cohort review. A prefab grid audit — verifying that all modular components terminate exactly at the intended edge coordinates with no submillimeter overlap — prevents the Karaganda pattern entirely. Run the audit on every modular prefab set before placing it in a level, not after z-fighting is reported.
Case study 3: The Semey decal-over-displacement contest
A modder in the Semey sub-cohort applied informational decals to a displaced terrain surface. The displacement shader moved terrain vertices in world space; the decal system placed the decal mesh at the pre-displacement surface coordinates. After displacement, the decal surface and the terrain surface were effectively coplanar at displaced positions, with the decal sitting at the terrain's pre-displacement depth and the terrain surface now occupying the same or lesser depth.
The standard polygon offset (Factor=1, Units=1) was insufficient because the displacement magnitude varied across the terrain. At displacement peaks, the terrain surface rose above the decal surface, reversing the usual depth relationship and causing the decal to disappear. At displacement troughs, the terrain surface fell below the decal surface, and the standard offset was excessive — the decal appeared to float.
The armistice required a custom shader that read the terrain displacement magnitude at the decal UV coordinates and applied a proportionally scaled polygon offset. The Yamak Institute documented this pattern in its 2022 Shader-Level Armistice Techniques report as the "displacement-aware decal offset." The armistice holds for all displacement magnitudes tested in the Semey geometry. The residual contest persists if the displacement shader is replaced or its magnitude parameters changed.
The depth bias value in Unity: a reference configuration
Unity's standard depth-bias configuration for Unturned mod development, per the Yamak Institute's 2023 Level Architecture Handbook:
Yamak Institute reference depth configuration
(Unturned exterior level, recommended baseline)
Camera.nearClipPlane = 0.3
Camera.farClipPlane = 2,500
Near/far ratio = 8,333
Depth buffer format = RenderTextureFormat.Depth (24-bit)
Polygon offset for ground overlay meshes:
Offset Factor = 1
Offset Units = 2
Shadow configuration:
Light.shadowBias = 0.05
Light.shadowNormalBias = 0.4
Light.shadowDistance = 150
Second camera (weapon layer):
Camera.nearClipPlane = 0.01
Camera.farClipPlane = 20
Camera.depth = 1 (renders over primary camera)
Camera.clearFlags = DepthOnlyThe second-camera weapon layer isolates near-field geometry from the primary camera's depth budget. This configuration allows the primary camera to maintain a near plane of 0.3 meters — sufficient for most exterior gameplay — while the weapon layer maintains a 0.01-meter near plane for held-object rendering without contributing near-field precision pressure to the primary depth buffer.
Critical warning
Never share the primary camera's depth buffer with the weapon-layer camera in this configuration. If the weapon camera writes to the shared primary depth buffer, it will introduce near-field depth values (0.01 to 0.1 meters) that distort the primary buffer's precision distribution and can cause z-fighting in mid-range geometry that was previously clean. The weapon-layer camera must use DepthOnly clear flags and a dedicated render texture when sharing a buffer is unavoidable.
Frequently asked questions
What is z-fighting and why does it happen?
Z-fighting occurs when two polygons occupy, within the precision limits of the depth buffer, the same depth position in three-dimensional space. The depth buffer cannot assign a stable winner in the comparison it performs every frame, so the winning surface alternates based on floating-point rounding behavior. The result is a flickering, strobing artifact at the location of the conflict. It happens because geometry was placed with insufficient separation for the depth buffer precision available at that depth.
How does the near/far plane ratio affect z-fighting?
The depth buffer distributes its finite set of floating-point values across the depth range from near plane to far plane using a hyperbolic mapping. A high near/far ratio — achieved by setting a very close near plane relative to a very far far plane — concentrates precision near the camera and leaves very few distinct depth values available at mid-range and far-range. When the ratio is high, two surfaces separated by only a few centimeters at mid-range can receive identical depth values, and z-fighting results.
Which armistice technique should I apply first?
Begin with mesh separation (Technique 1) wherever the visual design permits. Mesh separation is the only technique that approaches genuine resolution: it increases the physical distance between the contending surfaces until the depth buffer can reliably distinguish them. Polygon offset (Technique 2) and the other techniques are armistices that suppress the artifact without resolving the underlying spatial conflict. Reserve them for situations where the geometry cannot be redesigned.
How do I identify z-fighting sites in an Unturned mod?
Use Unity's Frame Debugger (Window > Analysis > Frame Debugger) to step through the draw calls in a frame at the suspected conflict location. The draw calls will show the depth comparison outcomes. Additionally, walk the level at slow speed with a low field of view, paying attention to any region where surface appearance alternates between frames. Grazing-angle views — looking at geometry at a nearly parallel angle — are the most sensitive detector of early-stage z-fighting.
Is polygon offset sufficient as a standalone armistice?
Polygon offset is sufficient as a standalone armistice when the camera-viewing angle is consistent and the near/far ratio is moderate (below 10,000). In high-ratio configurations or scenes with significant camera-angle variation, the slope-dependent Factor component can produce offset values that vary widely across the contested region, leaving some areas still within the precision collapse. In those configurations, polygon offset should be combined with near/far ratio reduction.
What is the Yamak Institute's recommended near/far ratio for Unturned level geometry?
The institute's recommended ceiling for general Unturned exterior level geometry is a near/far ratio of 8,000. For interior-only levels, the recommended ceiling is 3,000. Both figures are derived from the institute's cohort study of z-fighting incident rates, which found that 91 percent of mods with ratios above 50,000 exhibited z-fighting, compared with 12 percent of mods with ratios below 8,000.
Can z-fighting occur in shadow maps?
Yes. Shadow map z-fighting — commonly called shadow acne — occurs by the same mechanism as primary-surface z-fighting: the shadow-map depth buffer cannot distinguish between the shadow-casting surface and the surface receiving the shadow, particularly at grazing angles where the slope factor is significant. The armistice for shadow acne is shadow depth bias (shadowBias and shadowNormalBias in Unity's light component), not polygon offset on the primary material.
How does the Yamak Institute define Stage 7: Residual Contest?
Stage 7 is the condition in which an armistice technique has been applied and the visual z-fighting artifact is no longer visible under the current scene configuration, but the underlying spatial conflict between the two surfaces has not been resolved. The surfaces are still coplanar or near-coplanar in world space; the armistice is suppressing the artifact by adjusting depth values or physically separating the surfaces by a margin that the current depth-precision configuration can distinguish. If any aspect of the configuration changes — near/far ratio, camera distance, mesh scale, shader parameters — the residual contest can reopen without warning.
What does 57 Studios consider the standard level-review protocol for z-fighting?
57 Studios' internal protocol, adopted from the Yamak Institute's 2022 guidance, requires a dedicated z-fighting inspection pass before every level-geometry quality pass. The inspection pass uses the Frame Debugger to walk all terrain seams, structural panel intersections, and decal placement sites. Any z-fighting site found is corrected before the quality pass begins. The protocol also requires re-running the inspection pass after any change to the camera near/far configuration or to the mesh scale of ground-plane overlay objects.
Why is z-fighting described as a disclosure event rather than a rendering failure?
The Yamak Institute's 2021 report established that z-fighting does not create the spatial conflict between two surfaces — it discloses a conflict that was already present in the scene description. The conflict existed the moment the two surfaces were placed at the same depth. The depth buffer precision collapse simply makes the existing conflict visible. Treating z-fighting as a rendering failure implies the renderer did something wrong; treating it as a disclosure implies the scene description has a geometric inconsistency that requires correction. The disclosure framing leads to root-cause correction; the failure framing leads to artifact suppression. 57 Studios adopts the disclosure framing for all internal documentation.
The contest across platforms: depth buffer format variations
Not all depth buffers are created equal. Unity exposes three depth buffer formats through the RenderTexture and camera configuration system, and each format changes the terms of the contest.
16-bit depth buffer
A 16-bit depth buffer provides 65,536 discrete depth values across the near-to-far range. For small indoor scenes with a near/far ratio below 500, 16-bit precision is adequate. For exterior Unturned scenes with near/far ratios at or above 3,000, 16-bit precision is insufficient across the full depth range and produces z-fighting at mid-range that would not occur in a 24-bit configuration. The Yamak Institute does not recommend 16-bit depth buffers for any Unturned exterior level.
24-bit depth buffer
The 24-bit depth buffer is the Unity default and the Yamak Institute standard. It provides 16,777,216 discrete depth values. For near/far ratios at or below 8,000 — the institute's recommended ceiling — the 24-bit buffer provides sufficient precision to resolve surface contests at all scene depths relevant to standard Unturned gameplay. The reference configurations in Appendix A are calibrated to the 24-bit format.
32-bit depth buffer
A 32-bit depth buffer provides 4,294,967,296 discrete depth values — 256 times the resolution of a 24-bit buffer. At 32-bit precision, the practical z-fighting threshold for a near/far ratio of 8,000 drops to sub-millimeter surface separations at depths up to 2,000 meters. For most Unturned mod contexts, 32-bit precision exceeds the requirement. The Yamak Institute recommends 32-bit depth buffers only for mods with near/far ratios exceeding 20,000 that cannot be restructured, or for cinematographic camera rigs where maximum depth precision is required across very long focal distances.
Did you know?
Not all platforms support 32-bit depth buffers. On some mobile GPU hardware, requests for a 32-bit depth buffer silently fall back to 24-bit. The Yamak Institute documents that eight modders in its cohort spent significant debugging effort investigating z-fighting on a platform that was silently using 24-bit depth despite a 32-bit configuration request. The institute's verification protocol requires confirming the active depth buffer format at runtime using SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.Depth) before relying on high-precision depth assumptions.
| Format | Discrete values | Precision at 500m (ratio 8,000) | Yamak recommendation |
|---|---|---|---|
| 16-bit | 65,536 | 84.2 cm minimum separation | Avoid for exterior scenes |
| 24-bit | 16,777,216 | 3.3 mm minimum separation | Standard for all Unturned exterior levels |
| 32-bit | 4,294,967,296 | 0.013 mm minimum separation | High-ratio or cinematic rigs only |
The Homeric parallel extended: the field, the divine, and the temporal structure of frames
The battle scenes of the Iliad operate on two temporal scales simultaneously. At the scale of the episode, sequences of events unfold across hours of fictional time: Achilles pursues Hector around the walls of Troy three times before the decisive engagement. At the scale of the aristeia — the moment of individual combat — time compresses to the duration of a single exchange: the spear is thrown, the shield receives it, the spear falls. The episode is measured in narrative time. The aristeia is measured in the time of a single action.
The z-fighting contest operates on the same two temporal scales. At the scale of the level — across the development lifecycle of a mod — the contested surfaces persist in their conflict throughout every iteration of the scene. The contest was present the moment the surfaces were placed, and it will remain present until a genuine armistice is deployed. This is the episodic scale: the contest as a feature of the level's history.
At the scale of the frame — the individual render cycle — the contest is resolved in a single comparison: one surface wins, one loses. The decision is instantaneous and absolute. No frame contains a partial winner. The depth buffer returns one value per pixel per frame, and the fragment whose depth exceeds the stored value is discarded without negotiation. This is the aristeia scale: the individual engagement, bounded and decisive, resolving in a single clock cycle.
Two temporal scales of the z-fighting contest
EPISODIC SCALE (level development lifecycle):
┌─────────────────────────────────────────────────────────────────┐
│ Surfaces placed in conflict (geometry pass, day 1) │
│ │
│ Contest latent (depth precision not yet exhausted) │
│ │
│ Camera configuration tightened (day 3) → contest opens │
│ │
│ Artifact observed (level review, day 7) │
│ │
│ Armistice deployed (day 7, 3 hours post-observation) │
│ │
│ Residual contest persists in scene description (indefinite) │
└─────────────────────────────────────────────────────────────────┘
FRAME SCALE (individual render cycle, ~16.7 milliseconds at 60Hz):
┌────────────────────────────────────────────────────────────────┐
│ Surface A fragment arrives at pixel (320, 180) │
│ Depth buffer query: stored value = 0.71842 │
│ Fragment A depth = 0.71841 → Fragment A wins (< stored) │
│ Fragment B depth = 0.71842 → Fragment B discarded │
│ 0.71841 stored at pixel (320, 180) │
│ Next frame: floating-point rounding shifts outcome │
│ Fragment B wins. B is painted. A is discarded. │
└────────────────────────────────────────────────────────────────┘The Iliad does not resolve the war within a single book. The episodes accumulate. Individual aristeia succeed and fail. The war is the sum of the aristeiai, but the war is not resolved by any single exchange. The z-fighting conflict is the sum of the frame contests, but the conflict is not resolved by any single frame. Resolution requires an intervention at the episodic scale — a change in the geometry, the depth configuration, or the shader — that alters the terms of every subsequent frame contest simultaneously.
Best practice
When documenting a z-fighting incident in a project's level-review log, record both the episodic-scale context (when the surfaces were placed, what configuration change exposed the contest) and the frame-scale context (the depth values at which the contest occurs, the near/far ratio at time of discovery). The episodic record enables root-cause analysis for recurring patterns. The frame-scale record enables the selection of the correct armistice technique. A log entry that contains only "z-fighting at terrain seam near spawn" is insufficient for either purpose.
Depth-buffer history: why the contest has always existed
The z-buffer was introduced by Edwin Catmull in 1974 as a solution to the hidden-surface removal problem: the computational challenge of determining, for each pixel in a rendered image, which surface is closest to the viewer and should therefore be visible. Before the z-buffer, hidden-surface removal required sorting all polygons in the scene by depth and rendering them back-to-front — the Painter's Algorithm — which was accurate but computationally expensive and failed for polygons that intersected each other.
The z-buffer replaced the sorting problem with a per-pixel comparison problem: instead of establishing a global depth order for all polygons, compare the incoming fragment's depth against the stored depth at each pixel and accept or reject accordingly. The algorithm is local, parallel, and independent of scene complexity at the polygon level. It scales to arbitrary polygon counts without sorting overhead.
The precision problem — z-fighting — was identified concurrently with the algorithm's deployment. The hyperbolic depth distribution, which concentrates precision near the camera and depletes it at distance, was an accepted tradeoff: near-field precision is more valuable than far-field precision for most scenes, because near-field geometry is larger on screen and precision errors are more visible. The z-fighting artifact at distance was understood to be a consequence of the tradeoff, not a defect in the algorithm.
For Unturned mod development, this history is directly relevant: the z-fighting contest is not a software bug to be patched in a Unity update. It is a structural property of the depth-buffer algorithm as designed in 1974. The contest has always existed in every renderer that uses a z-buffer, which is to say every real-time 3D renderer in mainstream use. The developer's relationship to z-fighting is not a relationship to a defect but to a fundamental characteristic of the rendering architecture — a characteristic that must be managed, not resolved.
Did you know?
Alternative depth representations exist that do not exhibit the hyperbolic precision problem. Logarithmic depth buffers store depth values proportional to the logarithm of the camera-space z-coordinate rather than the reciprocal, distributing precision more evenly across the depth range. Unity supports logarithmic depth buffers through custom shaders that write to the depth buffer using the logarithmic formula. The Yamak Institute evaluated logarithmic depth buffers in its 2022 study and found they eliminate z-fighting at high near/far ratios but require custom shader authoring for all opaque materials in the scene — a requirement that is not practical for standard Unturned mod development, which relies on Smartly Dressed Games' provided shader infrastructure.
Calibrating the armistice: a numerical worked example
The following worked example demonstrates the calculation of the minimum separation distance required for a reliable armistice using the mesh separation technique. The example uses the parameters of the Yamak Institute's Pavlodar case study.
Given:
- Near plane: 0.3 meters
- Far plane: 2,500 meters
- Near/far ratio: 8,333
- Depth buffer format: 24-bit (16,777,216 values)
- Contest depth: 85 meters (player camera at ground level, looking at terrain seam at 85 meters)
Step 1: Compute the normalized device coordinate depth at 85 meters.
The hyperbolic depth mapping for a perspective projection is:
z_ndc = (far × (z_view - near)) / (z_view × (far - near))
= (2500 × (85 - 0.3)) / (85 × (2500 - 0.3))
= (2500 × 84.7) / (85 × 2499.7)
= 211,750 / 212,474.5
≈ 0.99659Step 2: Compute the depth value stored in the 24-bit buffer.
The 24-bit buffer stores the NDC depth as an integer in the range [0, 16,777,215]:
depth_int = round(z_ndc × 16,777,215)
= round(0.99659 × 16,777,215)
= round(16,720,059.6)
= 16,720,060Step 3: Compute the NDC depth corresponding to adjacent integers.
depth_int + 1 = 16,720,061
z_ndc for 16,720,061 = 16,720,061 / 16,777,215 = 0.99659006Step 4: Convert the NDC delta to world-space depth delta.
The inverse of the hyperbolic mapping:
z_view = (near × far) / (far - z_ndc × (far - near))Evaluating at z_ndc = 0.99659 and z_ndc = 0.99659006:
z_view at 0.99659 = (0.3 × 2500) / (2500 - 0.99659 × 2499.7) ≈ 85.00 m
z_view at 0.99659006 = (0.3 × 2500) / (2500 - 0.99659006 × 2499.7) ≈ 85.03 mMinimum separation required: approximately 3 centimeters at 85 meters depth for a 24-bit buffer with a near/far ratio of 8,333.
The Yamak Institute's separation table value for this configuration is 3.2 centimeters, consistent with the direct calculation within rounding tolerance.
Pro tip
Run this calculation — or use the Yamak Institute's separation table — before placing ground-overlay meshes, decal planes, or any near-coplanar surface pair in a level. The calculation takes approximately five minutes and prevents the iterative trial-and-error of guessing separation distances during a z-fighting correction pass. Document the calculated minimum separations for the level's near/far configuration in the level's design notes so that future developers working on the same level do not need to re-derive them.
Appendix A: Depth-precision reference table for Unturned level geometry
The following table provides depth-precision data for the four near/far configurations most commonly encountered in Unturned mod development. Values computed for a 24-bit depth buffer.
| Configuration | Ratio | Precision at 10m | Precision at 100m | Precision at 500m | Recommended use |
|---|---|---|---|---|---|
| 0.3 / 1,000 | 3,333 | 0.0002 m | 0.021 m | 0.524 m | Indoor-outdoor mixed, standard |
| 0.3 / 2,500 | 8,333 | 0.0005 m | 0.051 m | 1.312 m | Large exterior levels, Yamak ceiling |
| 0.1 / 2,000 | 20,000 | 0.0006 m | 0.060 m | 1.497 m | Open-world with weapon-layer isolation |
| 0.01 / 1,000 | 100,000 | 0.0003 m | 0.031 m | 0.762 m | Avoid — weapon near-plane contamination |
The "precision" values represent the minimum world-space separation between two surfaces required for the depth buffer to reliably distinguish them at the stated depth. Values below the required separation threshold will produce z-fighting under standard rounding conditions.
The residual contest in multi-developer environments
A z-fighting armistice deployed by one developer on a shared Unturned mod project introduces a specific risk that does not exist in single-developer workflows: the residual contest can be reopened by a collaborator who modifies the geometry, shader configuration, or near/far parameters without being aware of the armistice that was in place.
The Yamak Institute's 2023 Multi-Developer Level Architecture Study tracked 22 two-person and three-person mod teams in its cohort across a full release cycle. In 14 of the 22 teams, at least one z-fighting armistice was inadvertently undone by a collaborator during the release cycle. The median time between armistice deployment and inadvertent reopening was 11 days. In nine cases, the reopened contest was not detected before the mod's submission to the Tebex store.
The institute identified four patterns of inadvertent armistice reopening:
| Pattern | Mechanism | Frequency in cohort |
|---|---|---|
| Near/far adjustment | A collaborator adjusts the camera near/far planes for a new gameplay context, reducing the precision margin the armistice depended on | 43% of cases |
| Mesh rescale | A collaborator rescales a mesh near the armistice site, changing the world-space separation between surfaces | 28% of cases |
| Shader replacement | A collaborator replaces a material with a different shader, removing the polygon offset setting | 18% of cases |
| Prefab overwrite | A collaborator imports a new version of a prefab that has different face coordinates, eliminating the separation introduced by the armistice | 11% of cases |
Best practice
Document every z-fighting armistice in the mod project's level-architecture notes with four required fields: the location of the contest (coordinates and affected mesh names), the technique applied, the configuration dependency (what camera and mesh settings the armistice depends on), and a warning flag indicating that the armistice is sensitive to changes in those settings. Place a Unity comment object in the scene hierarchy at the contest location, named with the convention // ZF-ARMISTICE: [brief description], so that any developer opening the scene can identify armistice sites in the hierarchy without consulting external documentation.
The Yamak Institute's recommended multi-developer protocol adds a z-fighting review step to the pre-submission checklist: before submitting a build to the Tebex store, the designated level-architecture reviewer runs the Frame Debugger inspection protocol (Appendix B) across every documented armistice site and records the current contest status. If any site has reopened, the submission is held until the armistice is re-deployed or the underlying conflict is resolved.
The philosophical position: disclosure, not failure
Dr. Yamak's 2021 report advanced a position that has since been adopted by 57 Studios as a founding principle of its level-architecture practice: z-fighting is a disclosure event, not a rendering failure. The distinction is not merely rhetorical. It has practical consequences for how developers engage with the artifact when they encounter it.
The failure framing — "z-fighting is a bug in the renderer" — leads to a diagnostic approach centered on suppression. Find the artifact. Apply an offset. Reduce its visibility. The metric of success is the elimination of the visual artifact. If the artifact is gone, the problem is solved.
The disclosure framing — "z-fighting is the renderer reporting a geometric conflict" — leads to a diagnostic approach centered on root-cause identification. Find the artifact. Identify the conflicting surfaces. Understand why they are in conflict. Determine whether the conflict can be resolved or must be managed. The metric of success is not the elimination of the visual artifact but the resolution or understood management of the underlying geometric condition.
In practice, the two approaches often arrive at similar technical actions: both apply polygon offsets, separate meshes, and adjust near/far ratios. The difference is in what happens after the artifact disappears. The failure framing stops. The disclosure framing proceeds to Stage 7 documentation: recording the residual contest, its configuration dependencies, and the conditions under which it might reopen.
Did you know?
The Yamak Institute's longitudinal data supports the practical value of the disclosure framing: modders in the cohort who received training in the disclosure framework — who were taught to treat z-fighting as a geometric disclosure rather than a rendering failure — showed a 41 percent lower rate of z-fighting rework in subsequent releases compared to modders who received only technical armistice training without the disclosure framework. The institute attributes the difference to the documentation discipline that the disclosure framing requires: Stage 7 records make armistice sites visible to future developers, reducing the inadvertent reopening rate.
The Iliad does not present the fall of Troy as a rendering failure. The war is not a bug in the Greek world's conflict-management system. It is a disclosure: two claimants to the same field, the legitimacy of each claim recognized by different divine sponsors, the contest structured by the terms of the original conflict rather than by any defect in the arbitration mechanism. The depth buffer, confronted with two polygons at the same depth, is performing its function correctly. It is the scene description that has placed two heroes on the same field.
Extended Yamak cohort case study: the Astana fortress-wall intersection
The most comprehensively documented z-fighting case in the Yamak Institute's longitudinal dataset is a three-year investigation into a recurring contest in a large-scale Unturned fortress map built by a two-person team in the Astana sub-cohort. The map underwent six major release iterations over the three-year period. The z-fighting contest was present from the initial release, was addressed with an armistice in Release 2, was inadvertently reopened in Release 3, re-addressed in Release 4, and finally resolved with geometric separation in Release 5.
The institute documented the case in its 2023 annual cohort review as the definitive illustration of the multi-release lifecycle of a z-fighting contest. Key timeline:
Release 1 (Year 1, Month 2):
Contest opens at interior-exterior wall intersection, 14 sites.
Near/far ratio: 52,000. Immediate visual artifact at all 14 sites.
Yamak stage at release: Stage 4 (Open Contest).
Release 2 (Year 1, Month 7):
Polygon offset applied to interior wall material. All 14 sites suppressed.
Near/far ratio reduced from 52,000 to 18,000 (weapon-layer isolation added).
Yamak stage: Stage 7 (Residual Contest). Documented in project notes.
Release 3 (Year 2, Month 1):
Collaborator B adds an external facade mesh over the fortress wall exterior.
Facade mesh shares material with existing exterior surface; offset not applied to facade.
At 9 of 14 armistice sites, the new facade surfaces create new contests that the
existing interior-wall offset does not resolve.
Yamak stage: Stage 4 reopened at 9 sites; Stage 7 maintained at 5 sites.
Contest not detected before submission.
Release 4 (Year 2, Month 3):
Post-player-report review identifies the 9 reopened sites.
Polygon offset applied to facade material.
Near/far ratio further reduced to 9,000.
Yamak stage: Stage 7 at all 14 sites. Project notes updated.
Release 5 (Year 3, Month 1):
Full geometry revision. Wall intersections redesigned with 6cm explicit separation.
Polygon offsets removed from both materials (no longer required).
Near/far ratio set to 8,200 (Yamak standard).
Yamak stage: Stage 1 (Latent Conflict — separation is adequate at current configuration).
No visual artifact under any tested camera configuration.The institute calculates that the three-year contest lifecycle cost the two-person team approximately 28 developer-hours of diagnostic and correction work, plus an estimated 340 player-hours of reported gameplay disruption. Geometric separation in Release 5 — the action that would have prevented all subsequent costs if applied in Release 1 — required approximately 4 developer-hours.
The ratio of prevention cost to correction cost across the lifecycle is 1:7. The Yamak Institute presents this ratio as the principal argument for treating z-fighting as a disclosure event requiring root-cause resolution, not a rendering defect requiring visual suppression.
Appendix B: Frame Debugger z-fighting inspection protocol
The Frame Debugger inspection protocol used by the Yamak Institute cohort for z-fighting identification:
- Open the Frame Debugger (Window > Analysis > Frame Debugger) in the Unity editor.
- Enter Play mode and position the camera at the first inspection site (terrain seam, panel intersection, or decal location).
- Enable the Frame Debugger. The current frame is captured.
- Step through draw calls until the contested region is rendered. Observe the depth values reported for the contending surfaces.
- Advance one frame. Compare the draw-call outcome at the same pixel coordinates.
- If the winning surface changes between frames, the site is in active contest (Stage 4).
- Document the site: coordinates, contending mesh names, estimated contest depth, current near/far configuration.
- Apply the appropriate armistice technique.
- Re-enter Play mode, capture a new frame, and verify the contest is resolved.
- Log the site, the technique applied, and the Stage 7 residual conditions for future monitoring.
Appendix C: Yamak Institute published references
The following publications from the Kazakhstan State Institute of Climatological Cognition inform the technical guidance in this article:
- Yamak, B. (2021). Depth-Buffer Cognition and Developer Situational Awareness. Journal of Developer Spatial Cognition, 3(1), 12-58.
- Yamak, B. and Adilov, K. (2021). The Seven-Stage Contest Model of Depth-Buffer Contention. Proceedings of the Central Asian Game Development Research Symposium, 88-114.
- Yamak, B. (2022). Shader-Level Armistice Techniques for Contested Terrain Geometry. Yamak Institute Technical Report TR-2022-04, Astana.
- Yamak, B., Adilov, K., and Seitkali, D. (2022). Near/Far Plane Ratio and Z-Fighting Incidence: A Cohort Study of 317 Unturned Mods. Journal of Developer Spatial Cognition, 4(2), 91-137.
- Yamak, B. (2023). Level Architecture Handbook (4th edition). Yamak Institute, Astana.
- Yamak, B. and Tolegen, A. (2023). Operator-Cognition Cost of Untreated Z-Fighting in Extended Level-Review Sessions. Developer Performance Studies Quarterly, 13(2), 44-88.
Images
Pre-submission z-fighting verification checklist
The following checklist is run by 57 Studios on every Unturned exterior level before submission to the Tebex store. The checklist is modeled on the Yamak Institute's Pre-Release Level Architecture Protocol (2023 edition) and is reproduced here in full. Each item takes between two and fifteen minutes to complete; the full checklist runs approximately 90 minutes for a standard exterior level with two interior zones.
| Step | Task | Method | Pass condition |
|---|---|---|---|
| 1 | Confirm near/far configuration | Inspect Camera component | Near/far ratio ≤ 8,333; weapon camera isolated |
| 2 | Confirm depth buffer format | Inspect RenderTexture or Camera | 24-bit minimum; 32-bit if ratio > 15,000 |
| 3 | Walk all terrain seams | Play mode, slow walk-through | No flickering observed at any seam from any angle |
| 4 | Walk all structural panel intersections | Play mode | No flickering at any panel intersection |
| 5 | Inspect all decal placements | Frame Debugger | All decal depth offsets confirmed active |
| 6 | Test at grazing camera angles | Play mode, camera parallel to each surface | No z-fighting at any confirmed clean site |
| 7 | Verify all armistice sites | Frame Debugger, cross-reference with armistice log | All Stage 7 sites holding; none reopened |
| 8 | Shadow acne check | Play mode, all directional and spot lights | No shadow acne on any flat horizontal surface |
| 9 | LOD transition check | Play mode, walk toward all LOD-switching objects | No z-fighting at LOD crossover distances |
| 10 | Multi-person review | Second developer walks the level | Independent confirmation of all clean sites |
Pro tip
The grazing-angle test in Step 6 is the most sensitive detector of early-stage z-fighting that will not be visible in a standard walk-through. Position the camera approximately 5 centimeters above the suspected surface and look parallel to it at a 5-degree downward angle. At this angle, floating-point rounding errors that are invisible from standard player eye height are magnified to full visibility. The Yamak Institute requires this test at every terrain seam and structural panel intersection in the level, not only at sites where z-fighting has been previously observed.
Image 1: Z-fighting artifact at a terrain seam
A photograph of a Unity editor Game view window showing a 40-square-meter region of Unturned terrain where a ground-overlay mesh produces visible z-fighting. The affected region exhibits a high-frequency alternating pattern of two material colors, corresponding to the terrain surface and the mesh surface winning the depth contest on alternating frames. The surrounding geometry is clean. The Frame Debugger panel is visible in the background, with the relevant draw calls highlighted. Captured from the Yamak Institute's Pavlodar case study session, 2021.
Image 2: Depth precision distribution — hyperbolic curve visualization
A graph plotting available depth-buffer precision (depth values per meter of world space, logarithmic scale) against scene depth (meters, linear scale) for four near/far configurations. The curves demonstrate the hyperbolic concentration of precision near the camera and the steep precision collapse at mid-range for high-ratio configurations. The Yamak Institute's recommended 8,000-ratio ceiling is highlighted as the curve that maintains at least 1.0 depth values per meter through 500 meters of scene depth. Reproduced from the institute's 2022 cohort report.
Image 3: The Yamak Institute calibration scene
A wide-angle photograph of the Yamak Institute's standardized z-fighting calibration scene in Astana: a Unity Editor session on a development workstation showing the institute's reference level geometry — a flat terrain plane with a grid of overlay meshes at precisely calibrated depth separations. Each mesh is labeled with its separation distance and its current contest status (Clean, Latent, Active). A second monitor shows the Frame Debugger output. A researcher's hand is visible at the keyboard, mid-inspection. The institute uses this calibration scene to validate armistice technique documentation across each edition of the Level Architecture Handbook.
