Opengl 片段着色器平滑不透明度

Opengl 片段着色器平滑不透明度,opengl,shader,fragment-shader,Opengl,Shader,Fragment Shader,我想要实现的是非常简单的 a center point a radius a color 在圆心处画一个圆,填充给定的颜色 圆心为100%颜色,颜色沿半径逐渐淡出 以下是我所取得的成就 (bgColor:10,20,30,255,lightColor:100,100,30,255): 片段的着色器代码: #ifdef GL_ES precision highp float; #endif uniform vec2 center; uniform vec4 lightColor; unifo

我想要实现的是非常简单的

a center point
a radius
a color
在圆心处画一个圆,填充给定的颜色

圆心为100%颜色,颜色沿半径逐渐淡出

以下是我所取得的成就

(bgColor:10,20,30,255,lightColor:100,100,30,255):

片段的着色器代码:

#ifdef GL_ES
precision highp float;
#endif

uniform vec2 center;
uniform vec4 lightColor;
uniform float lightRadius;

void main()
{
    float distance = abs(distance(center, gl_FragCoord.xy));
    gl_FragColor = vec4(lightColor * (1.0 - 1.0 / lightRadius * distance));
}
问题是颜色从中心到边缘的褪色并不平滑(但在上面的屏幕截图中似乎也很明显)

我想知道是否有办法使它成为一个平滑的淡出圆圈


任何建议都将不胜感激,谢谢:)

简单回答:如果我想做这样的smth,我会使用经过调整的phong照明。我认为向量数学更适合梯度。
目前,您可以尝试将
1.o
更改为
1.0LF
。这是
#版本400核心
东西

?是的,我指的是那些涟漪…这种现象被称为“带状”。如果带状困扰您,一种解决方法是在片段着色器中实现某种“抖动”技术。