Exception WireColor.j3md has been marked as obsolete. Please use Unshaded.j3md instead.

MaterialDef Wire Color {

    MaterialParameters {
        Vector4 Color : Color
    }

    Technique {
        VertexShader GLSL100:   Common/MatDefs/Misc/Unshaded.vert
        FragmentShader GLSL100: Common/MatDefs/Misc/Unshaded.frag

        RenderState {
            FaceCull Off
            Blend Alpha
            AlphaTestFalloff 0.01
            Wireframe On
        }

        Defines {
            HAS_COLOR : Color
        }

        WorldParameters {
            WorldViewProjectionMatrix
        }
    }

    Technique FixedFunc {
        RenderState {
            FaceCull Off
            Blend Alpha
            AlphaTestFalloff 0.01
            Wireframe On
        }
    }

}