shader画圆

这篇博客介绍了如何使用Unity的Shader来绘制圆形。通过分析和修改`step(length(i.uv),0.3)`,调整圆心位置,解决圆被拉伸的问题,并增加颜色与数量控制,最终实现了三原色圆圈的效果。" 108176681,9351870,24点游戏算法解析:递归解法,"['算法', '数学游戏', '递归算法']
摘要由CSDN通过智能技术生成

前言

shaderToy上的效果很是华丽,但是我们一口吃不了大胖子,只能慢慢来,从简单从基本做起,那么率先出场的是圆!
以下是我们在本文要实现的效果图:

我们所想要绘制的圆

Unity实现

首先我们先在unity中新建一个ImageEffectShader.
然后我们直接修改frag函数如下:

fixed4 frag (v2f i) : SV_Target
{
    return step(length(i.uv),0.3);
}

虽然这张图不是我们想要的效果,但是这个方法可以让我们很轻松的实现画圆。
那么我们先来理解下这个方法,也就是 step(length(i.uv),0.3) 这一句的含义.

length(v)
返回一个向量的模,即sqrt(dot(v,v)).

step(a,x)
如果x小于a则返回0,否则返回1.

在上图中我们是直接返回i.uv(屏幕坐标)的模,然后再与0.3(圆的半径,你可以随意定自己想要的半径)进行比较,如果0.3小于此模,则为0(黑色),否则为1(白色)。


那么接下来我们开始修改一些参数来达到我们想要的效果,在修改之前我们先分析一下现在的效果有哪些不对的地方,这样我们才能有针对的去做修改。

  1. 圆心的位置不对
  2. 圆看起来不完整
  3. 圆看起来不是我们想要的正圆
  4. 圆的颜色和数量不对

那么接下来我们一个个来修改,第1点和第2点其实是一个问题,就是圆心位置,如果我们把圆放在屏幕中间位置,半径小一些就不会出现不完整了。
好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值