Outline shader inverted on one mesh only, could be importing wrong?

Godot Version

4.3.stable

Question

I have an outline shader that works on literally every mesh in my game. It uses the cull_front mode. For some reason on the ribbon mesh on this character, the outline is inverted.

If I set the shader to cull_back, it works on the ribbon mesh but not on anything else.

I genuinely have no idea why it’s happening and it’s driving me insane. The normals aren’t inverted in blender - inverting them doesn’t fix a thing. Neither does recalculating. I copied the mesh from the character .blend into another file and exported, and when I applied the shader it worked?? Copying the fixed mesh over the ribbon in the character scene also doesn’t work.

I know this isn’t a shader issue, and by the looks of it, it’s not a mesh issue either. What could be causing this??

More context - flipping normals does this.

Without the shader, the model looks like this. It looks inverted but inverting it fixes nothing.

This seems like a modelling issue in Blender. Would you mind attaching a picture of how it looks in Blender (or just the .blend file)? It would be nice to know:

  • What the topology of the mesh looks like i.e. a picture of the mesh vertices.
  • The orientation of the face normals.
How to show face orientation in Blender

What happens if you increase the vertex density of the mesh (with a subdivision modifier or similar); does it still behave the same?

1 Like

The normals are fine, flipping them doesn’t fix the issue either. It only has this issue in Godot.

Have you tried disabling LOD? it worked for me sometimes with some mesh weirdness