该原创文章首发于微信公众号:字节流动
未经作者(微信ID:Byte-Flow)允许,禁止转载
今天讲一下绘制心形的两种方式,主要是为了扩展一下绘制复杂形状的思路,为后面讲特效做一些简单的铺垫。
心形绘制可以参考 ShaderToy 上的代码:
https://www.shadertoy.com/view/XsfGRn

上述代码绘制心形,首先将原点从左下角移至屏幕坐标系中央,这样所有片元的向量均以屏幕中心为起点,则向量 uv 就是画布中心与像素点坐标之间的方向向量。
然后利用反正切函数值和当前片元(像素)与屏幕中心点的距离相比较,来确定心形状的边界。GLES 中的反正切函数 atan(p.x,p.y) 取值范围是[-π, π],然后除以 PI 后,取值范围变成了 [-1, 1] 。
void mainImage(out vec4 fragColor, in vec2 fragCoord
本文探讨了使用Shader在OpenGLES中绘制心形的两种方法,通过讲解ShaderToy上的代码展示了如何利用反正切函数和有向距离场(SDF)算法来定义心形边界。同时提到了通过函数曲线绘制心形的另一种思路,并预告了OpenGL & Metal Shader编程系列的后续主题,包括内置变量、函数、图形、距离场和特效等。
订阅专栏 解锁全文
2691

被折叠的 条评论
为什么被折叠?



