Shader 编程:绘制心形

本文探讨了使用Shader在OpenGLES中绘制心形的两种方法,通过讲解ShaderToy上的代码展示了如何利用反正切函数和有向距离场(SDF)算法来定义心形边界。同时提到了通过函数曲线绘制心形的另一种思路,并预告了OpenGL & Metal Shader编程系列的后续主题,包括内置变量、函数、图形、距离场和特效等。
摘要由CSDN通过智能技术生成

该原创文章首发于微信公众号:字节流动
未经作者(微信ID:Byte-Flow)允许,禁止转载

今天讲一下绘制心形的两种方式,主要是为了扩展一下绘制复杂形状的思路,为后面讲特效做一些简单的铺垫。

心形绘制可以参考 ShaderToy 上的代码:
https://www.shadertoy.com/view/XsfGRn
在这里插入图片描述

上述代码绘制心形,首先将原点从左下角移至屏幕坐标系中央,这样所有片元的向量均以屏幕中心为起点,则向量 uv 就是画布中心与像素点坐标之间的方向向量。

然后利用反正切函数值和当前片元(像素)与屏幕中心点的距离相比较,来确定心形状的边界。GLES 中的反正切函数 atan(p.x,p.y) 取值范围是[-π, π],然后除以 PI 后,取值范围变成了 [-1, 1] 。

void mainImage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节流动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值