z-fighting problem with shaders

Hi, I have a set of muscles in Unity with a standard fade shader applied and for each muscle I have a texture map with an alpha channel and a normal map. The muscles overlap each other and aren’t rendering in the correct depth order and I keep seeing weird artifacts as seen here:https://i.gyazo.com/a4ab8a10d015321aef5921f5cd8c9d8e.gif. Apparently, this is a common zdepth rendering problem with transparency shaders. I have tried to address this by using this shader (http://wiki.unity3d.com/index.php?title=AlphaVertexLitZ) or writing in a zOff as per this discussion (Transparency render issue - Questions & Answers - Unity Discussions). However, the AlphaVertexLitZ shader doesn’t support normal maps and the zOff in shader isn’t working for me. I am looking for a solution where I can incorporate texture map with its alpha channel, normal map, and correct rendering depth. I am aware that all of these may be a long shot but any suggestions are appreciated!

There are some code solutions to this… but they tend to be very complicated and often need engine-level support.

Honestly, the best way to solve this problem is not with code, but with art. Unity doesn’t sort triangles by depth, but it does sort objects by depth. So if you separate your transparent mesh into separate meshes on separate objects, then it can resolve their depths and draw them in the correct order to maintain the correct visual.

yes, each muscle is a separate object. I have the transparent shader because my texture maps have an alpha channel which allows the portions of the muscle to fade out as they approach their attachment sites to bone and other muscle -so it looks like they fade into fibres rather than solid chunkiness. I also have visibility sliders in the UI which allow the user to change the opacity of any object from opaque to completely transparent, so even if I changed the muscle material to opaque inititially I run into the same problem with the visibility sliders.

OK thank you! I also got another suggestion to remove the back of the meshes (so it would just be one-sided surface, no volume)