From your screenshot it looks like that “missing” tile is not rendering at all (it’s just the black background), not merely “shading wrong”. If that’s the case:
Flipping normals in a material will NOT make a back-culled triangle render.
Backface culling is based on triangle winding order, not the normal vector.
So if that one element was authored/generated with reversed winding, it will disappear on a one-sided material no matter what you do with VertexNormalWS.
If it’s a thin surface and you want both sides visible:
- In the material Details, enable Two Sided.
That alone should make the “missing” element show up.
If it shows up but lighting looks inverted, then do the proper two-sided normal fix:
- Use TwoSidedSign (this is the correct “front/back” signal in materials)
- If you are feeding a tangent-space normal map into Normal:
Nodes:
TwoSidedSign → multiply NormalMap RG (X,Y) by it, keep B (Z) the same.
- Re-append to float3 and plug into Normal.
Conceptually:
NormalTS = float3(N.x * TwoSidedSign, N.y * TwoSidedSign, N.z)
This fixes “inside-out” lighting on the back side.
Important: TwoSidedSign is effectively a pixel (per-fragment) frontface test. You won’t get a reliable equivalent in the vertex stage.
If you don’t want Two Sided, the only real fix is:
- in DCC: flip faces / recalc normals, or
- in your procedural mesh code: reverse index order for those triangles
(swap i1 and i2 so winding matches the rest).
That’s the correct fix for “one element disappears”.
In your graph you’re doing:
dot(VertexNormalWS, (1,0,0)) → step → lerp between N and -N
That only flips based on whether the normal points toward +X vs -X. It’s not testing “flipped relative to the surface” or “front/back face”, so it won’t reliably catch the bad piece.
Also: even a perfect normal flip still won’t change culling.
If your shader uses normal components as weights (triplanar / axis blend / etc.), flipped normals can create negative weights and you get black.
In that case, don’t “detect flipped”, just make it sign-invariant:
- Use Abs(VertexNormalWS) (or Abs of the normal you’re using) for weights.
When you enable Two Sided, does the missing element appear?
- Yes → it’s reversed winding / backface culling. Fix mesh or keep Two Sided + TwoSidedSign normal fix.
- No → then it’s not culling; it’s your material math (likely normal-based weighting/mask), and
Abs() is usually the fix.
If you tell me whether it appears with Two Sided, I’ll give you the exact minimal node graph for your case.