GLSL Параметрический Кривый Плоттер

Несмотря на то, что я регулярно просматриваю этот сайт, я не часто задаю вопросы, надеюсь, я все сделал по правилам, и мой вопрос не слишком расплывчатый.

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

Мне удалось создать элементарный элемент путем итерации параметра и рисования круга для каждой вычисленной позиции.

Вы можете найти (рабочий и закомментированный) код здесь: https://www.shadertoy.com/view/4djczm

Вот мои вопросы:

  • Я хотел бы нарисовать это с линией. Из того, что я понял, я вижу два разных способа сделать это:

1) вычисляя расстояние между каждым пикселем и вычисленной позицией внутри цикла, накапливают вычисленное значение в переменной с плавающей запятой и затем рисуют кривую, используя пошаговую функцию. Я попытался сделать это, и кажется, что я вычисляю только расстояние для одной позиции:

#define PI 3.14

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = -1. + 2.*fragCoord.xy / iResolution.xy;
    uv.x *= iResolution.x/iResolution.y;
    vec3 color = vec3(0.);
    vec2 pos;
    float dist;

    for(float t=-2.; t<2.02; t+=.02){

        pos.x = sin(4.*t+(iGlobalTime));
        pos.y = cos(6.*t);

        dist += 1.-sqrt(pow((uv.x-pos.x),2.)+pow((uv.y-pos.y),2.));

        color += vec3(dist);


    }//for

    fragColor = mix(vec4(0.0), vec4(1.0), dist);

}

2) Путем рисования отрезка линии между каждым последовательным положением параметра

Я нашел эту реализацию, которая, кажется, делает то, что я пытаюсь достичь, но я не совсем понимаю, почему они используют предыдущую позицию параметра.

https://www.shadertoy.com/view/XdSGzh

  • Есть ли способ сделать такую ​​функцию без цикла for, управляющего параметром?

Последняя точность: я подаю в суд только на фрагментный шейдер, потому что моя цель - загрузить его на программное обеспечение VJing, которое управляет фрагментными шейдерами

Хорошего дня!

0 ответов

Другие вопросы по тегам