Shader 编程:绘制心形

该原创文章首发于微信公众号:字节流动
未经作者(微信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)
{
   
    
    
  vec2 uv 

猜你喜欢

转载自blog.csdn.net/Kennethdroid/article/details/132529580