Shader2D: 一些2D效果的Shader实现

刚刚开源了自己积累的一些2D效果的Shader实现,项目GitHub地址。效果在下面列出,我使用的Unity版本是5.3.5p8(当前已更新到5.6.0f3),可用不低于此版本的unity打开查看。需要注意的是,我的实现初衷在于原理的理解,并未斟酌优化,如果项目中使用请考虑优化。本文会不定期更新,添加新研究的效果。后面如果有时间,我可能会开一系列博客详细写写每个效果的原理和实现细节,欢迎朋友和我一起讨论。(P.S. 如果对你有帮助,别忘了点GitHub右上角的star,谢谢!)

  • Blur 效果: 模糊 原理: 采样附近上下左右四个相邻像素的颜色,与当前像素颜色按比例混合(简单滤波) 
    Blur 
    原图(左)                               模糊效果图(右)
  • BlurBox 效果: box模糊 原理: 采样周边8个相邻像素的颜色,与当前像素颜色按平均比例混合(Box滤波器)
  • BlurGauss 效果: 高斯模糊 原理: 采样周边8个相邻像素的颜色,与当前像素颜色按比例混合(高斯滤波器)
  • Sharpen 效果: 拉普拉斯锐化 原理: 先将自身与周围的8个象素相减,表示自身与周围象素的差别,再将这个差别加上自身作为新象素的颜色 
    BlurSharpen 
    原图(左上)、Laplace锐化(右上)、模糊-Box过滤器(左下)、模糊-高斯过滤器(右下)

  • CircleHole 效果: 圆形遮挡过场动画 原理: 圆形遮盖随时间缩小,用于过场动画 
    CircleHole

  • EarthRotate 效果: 地球旋转动画 原理: 天空盒,UV动画。这个漂亮的实现来自风宇冲的blog 
    http://blog.sina.com.cn/lsy835375 
    Earth

  • Emboss 效果: 浮雕 原理: 图像的前景前向凸出背景。把象素和左上方的象素进行求差运算,并加上一个灰度(背景)。 
    Emboss 
    原图(左)、浮雕效果(右)

  • Pencil 效果: 铅笔画描边 原理: 如果在图像的边缘处,灰度值肯定经过一个跳跃,我们可以计算出这个跳跃,并对这个值进行一些处理,来得到边缘浓黑的描边效果,就像铅笔画一样。 
    Pencil 
    原图(左)、铅笔画(右)

  • Fade 效果: 渐隐 原理: 根据距离渐隐渐现 
    Fade

  • Flash 效果: 闪光特效 原理: 叠加平行四边形亮光带,随时间运动划过图片,就像一束光带飘过 
    Flash

  • Gray 效果: 灰化 原理: 0.3*R, 0.59*G, 0.11*B 
    Gray 
    原图(左)、灰化(右)

  • OldPhoto 效果: 老照片 原理: r = 0.393*r + 0.769*g + 0.189*b; g = 0.349*r + 0.686*g + 0.168*b; b = 0.272*r + 0.534*g + 0.131*b; 
    OldPhoto 
    原图(左)、旧照片效果图(右)

  • HexagonClip 效果: 正六边形裁剪 原理: 
    HexagonClip 
    原图(左)、正六边形裁剪(右)

  • Mosaic 效果: 马赛克 原理: n x n方块内取同一颜色 
    Mosaic 
    原图(左)、马赛克效果图(右)

  • InnerGlow 效果: 内发光 原理: 采样周边像素alpha取平均值,叠加发光效果
  • OutterGlow 效果: 外发光 原理: 采样周边像素alpha取平均值,给外部加发光效果(1-col.a可避免内部发光) 
    Glow 
    内发光、外发光
  • RoundRect 效果: 圆角 原理: 最简单的笨方法,效率差
  • RoundCorner 效果: 同上 原理: 比较巧妙的算法,效率高。详见: 
    http://www.cnblogs.com/jqm304775992/p/4987793.html 
    RoundRect 
    原图(左)、圆角1(中)、圆角2(右)

  • Saturation 效果: 调整饱和度 原理: RGB转HSL,增加S再转回RGB 
    Saturation 
    原图(左)、提高饱和度(右)

  • SectorWarp 效果: 扇形映射 原理: 采样图片上的点,映射到一个扇形区域中 
    SectorWarp 
    原图(左)、扇形映射(右)

  • SeqAnimate 效果: 序列帧动画 原理: 从mxn的动画图片中扣出当前帧动作图 
    SeqAnimate

  • Shutter 效果: 百叶窗 原理: 划定窗页宽度,2张纹理间隔采样 
    Shutter

  • Twirl 效果: 旋转效果 原理: 旋转纹理UV坐标,越靠近中心旋转角度越大,越往外越小
  • TwirlEffect 效果: 旋转效果 原理: 旋转纹理UV坐标。相比上一个,这个没有根据距离调整角度,并且演示了屏幕后处理特效 
    Twirl 
    原图(左)、旋转(右)

  • Vortex 效果: 旋涡效果 原理: 旋转纹理UV坐标。相比Twirl,离中心越远,旋转角度越大。 
    Vortex 
    原图(左)、旋涡效果(右)

  • HDR 效果: HDR效果 原理: 让亮的地方更亮,同时为了过渡更平滑柔和,亮度采用高斯模糊后的亮度(灰度值) 
    HDR 
    原图(上)、HDR效果(下)

  • WaterColor 效果: 水彩画 原理: 随机采样周围颜色,模拟颜色扩散;然后把RGB由原来的8位量化为更低位,这样颜色的过渡就会显得不那么的平滑,呈现色块效果。 
    WaterColor 
    原图(左)、水彩画效果(右)

  • Wave 效果: 波浪效果 原理: 让顶点的Y轴按正弦或余弦变化。 
    Wave

  • WaterRipple 效果: 水滴波动效果 原理: 正弦波,越远波长越长,振幅越小。 
    WaterRipple 
    原图(左)、水滴波动效果(右)


参考

  1. Java Image Filters http://www.jhlabs.com/index.html 一款基于Java的图像处理类库,在图像滤镜特效方面,非常强大,几乎提供了PS上大部分的图像特效,比如反色、扭曲、水波等效果。本文一些效果的算法参考了此项目。

  2. 数字图像处理 随便一本高校用的教材即可。

  3. 其它一些参考已经在具体效果的原理中列出。如有遗漏请指出,谢谢。

Shadero Sprite is a real time node-based shader tool for Unity 5, 2017 and 2018 NEW! Forum : https://forum.vetasoft.store/ Discuss with us about Shadero Sprite and more ! Description Shadero Sprite is a real time node-based shader editor. Shadero was made to be a real production time saver. Beautiful and fast, it creates many astonishing effects with the several premade and fully optimized node effects. Shadero will increase the number of the premade effects in every update. No code required. Features - Ultimate tools for 2D Shader Editor - Node based editor - Real time preview - Source code included - Load/Save project - Optimised shader - Fog Support - HDR Support - Visual selection node preview - Light Support - Blend Mode support - Normalmap with light Support - Preview directly the scene - Works with Unity UI - Many premade effects (+100) - Help Tutorial in editor - Project examples - Unity 5 and 2017 and 2018 compatible - Support Anima 2D - Support Render Texture - Support Mesh Renderer - Generate a Sprite - Create Morphing - And much much more ! http://www.shadero.com New version 1.7.0 see version history Version 1.1 - Add Node: UV > FX (UV) > Sprite Sheet Animation - Add Node: UV > FX (UV) > Pixel - Add Node: UV > FX (UV) > Fish Eye - Add Node: UV > FX (UV) > Pinch - Add Node: UV > FX (UV) > Kaleiodoscope - Add Node: Generate > Shape > XRay - Add Node: Generate > Shape > Donuts - Add Node: Generate > Shape > Lines - Add Node: Generate > Shape > Noise - Add Node: RGBA > Color > Turn Metal - Add Node: RGBA > Color > Turn Gold - Add Node: RGBA > Color > Turn Transparent - Add Node: RGBA > Color > HDR Control Value - Add Node: RGBA > Color > HDR Create - Add Force Change Parameters to the Build Shader Node (Experimental) - Add Lightning Support - Fix Node: UV > FX (UV) > Pixel XY precision - Fix new Shader Project that keep the preview material issue - Fix Auto variable order issue when you add the same node Any Feedback, error reports, questions or suggestions, please contact us at support@vetasoft.com If you like Shadero Sprite you can rate it on the asset store, it would be very helpful. Any idea or suggestions to improve Shadero Sprite? Feel free to contact us at : support@vetasoft.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值