在GLSL中绘制圆弧

3df52oht  于 2022-10-18  发布在  其他
关注(0)|答案(1)|浏览(162)

我已经知道怎么画圆圈了。但我真的被困在如何让它真正成为一条弧线上。最后,我希望能够指定开始和结束Angular 。然后,圆弧应该从底部开始,偏移起点Angular ,然后继续,直到达到终点Angular 。
这就是我画圆的方式:

vec2 uv = textureCoords * 2.0 - 1.0;
float distance = sqrt(dot(uv,uv));
float OD = 0.7;
float ID = 0.5;
float ODC = smoothstep(OD, OD - 0.01, distance);
float IDC = smoothstep(ID, ID + 0.01, distance);
float alpha = ODC * IDC;
if(alpha < 0.001)
    discard;
FragColor = vec4(0.5, 0.5, 0.5, alpha);

然后我试着摆弄:

float g = uv.y / dist;
float sector = 0.5 - g / 2.0;

但我似乎不能很好地得到Map……

wsewodh2

wsewodh21#

float angle = (atan(uv.x, uv.y) + pi) / (pi * 2);
if(alpha < 0.001 || angle < 0.25 || angle > 0.5)
    discard;

明白了,但也许有人有更好的解决方案。

相关问题