Как создать широтные (горизонтальные) контурные линии в GLSL?

Я стремлюсь к этому эффекту: (только горизонтальные контурные линии):

Я нашелэтот примерОднако это создает горизонтальныйа также вертикальные контурные линии. Я не могу полностью обернуть голову, как призыв кfwidth() генерирует линии.

uniform float gsize;//size of the grid
uniform float gwidth;//grid lines'width in pixels
varying vec3 P;

void main()
{
    vec3 f  = abs(fract (P * gsize)-0.5);
    vec3 df = fwidth(P * gsize);
    float mi=max(0.0,gwidth-1.0), ma=max(1.0,gwidth);//should be uniforms
    vec3 g=clamp((f-df*mi)/(df*(ma-mi)),max(0.0,1.0-gwidth),1.0);//max(0.0,1.0-gwidth) should also be sent as uniform
    float c = g.x * g.y * g.z;
    gl_FragColor = vec4(c, c, c, 1.0);
    gl_FragColor = gl_FragColor * gl_Color;
}

Как бы я изменил этот пример для горизонтальных линий?

Есть ли лучшее решение?

Обновить:

Решение от модифицированного шейдера ниже. Используйте поплавки, используя толькоy значение.

void main() {
            float f  = fract (_pos.y * 15.0);
            float df = fwidth(_pos.y * 15.0);

            float g = smoothstep(df * 1.0, df * 2.0, f);

            float c = g;

            gl_FragColor = vec4(c, c, c, 1.0);
    }

Ответы на вопрос(1)

Ваш ответ на вопрос