我试图为由四条三次贝塞尔曲线组成的物体绘制内部发光/阴影。要绘制单个贝塞尔曲线,我将其分割成段,然后计算从当前像素到每个线段的距离,最后我将其与ContentBinary
混合:
min
其中// No GL_MAX blending mode in OpenGL ES 2.0
d_min = min(d_min, d)
是每个细分的距离。放大两个线段的混合示例:
当你有~25个代表短贝塞尔曲线的段
时,它的效果相当不错 除了"排水沟"在Bezier曲线和它们各自的渐变相结合的地方。问:如何避免这些瑕疵?是否有更好的方法来绘制内部发光/阴影?
答案 0 :(得分:1)
如何对曲线进行模糊处理,然后将结果隐藏到内部区域?
答案 1 :(得分:0)
请参阅:
它基本上将输入的4顶点几何块转换为具有定义的曲线宽度d
的BEZIER立方。
在一个片段中,您可以获得到曲线ll
的距离的信息,因此您可以直接使用它来阴影您的东西。对于使用白色背景和黑色以及以下几点的情况:
double pnt[]= // cubic curve control points
{
+0.9,-0.8,0.0,
+0.5,+0.8,0.0,
-0.5,+0.8,0.0,
-0.9,-0.8,0.0,
};
我得到了以下输出(d=0.05
):
我只是将顶点着色器中的最终着色线更改为:
l=ll/d; // distance from center of curve 0..1
col=vec4(l,l,l,1.0);
您可以通过l
或sqrt
使pow
线性化,以增强阴影效果...