我正在试图制作一个圆形的粒子,看起来像是在它的顶部闪耀着光芒。OpenGL:带片段着色器的圆斜角?
这里就是我试图让它看起来像:
这里就是它现在的样子:
不是很好。
由于我使用GL_POINTS,我得到的gl_PointCoord变量,这将使事情变得更容易,但我不知道如何正确地使用它,从而导致了这个烂摊子:
varying lowp vec4 DestinationColor;
void main(void) {
lowp vec2 circCoord = 2.0 * gl_PointCoord - 1.0;
if (dot(circCoord, circCoord) > 1.0) {
discard;
}
gl_FragColor = mix(DestinationColor, vec4(1, 0.5, 0.2, 1), (1.0-gl_PointCoord.t)*(max(abs(gl_PointCoord.t-0.5),abs(gl_PointCoord.s-0.5)))); // the world's worst slowest math
}
我会非常感谢,如果有人能够给我一点帮助,因为我受困于自己可怕的数学技能而陷入困境。
您可以尝试从gl_PointCoord计算片段的法线,然后应用3D闪电计算。 – pleluron
我宁愿避免3D计算,因为这是一个在iOS上运行的2D应用程序......越快越好 – MysteryPancake