虽然我经常浏览这个网站,但我不经常发帖,我希望我按照规则做了所有事情,而且我的问题也不是太模糊。
我正在尝试在GLSL中的片段着色器上实现参数曲线绘图仪。 (同样,我只是从着色器编程开始,所以它可能是一个非常棒的问题)
我设法通过迭代参数并为每个计算位置画一个圆来制作一个基本的。
您可以在此处找到(工作和评论)代码:https://www.shadertoy.com/view/4djczm
以下是我的问题:
1)通过计算每个像素与计算的距离 循环内的位置,在浮点数中累积计算值 变量,然后使用步进函数绘制曲线。 我尝试这样做,似乎我只计算一个t位置的距离:
#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
最后的精度:我只是起诉片段着色器,因为我的目标是将其上传到管理片段着色器的VJing软件上
祝你有个美好的一天!