【Unity】ShaderGraph的五个2D案例:动态液化柔和扭曲、带描边的溶解、漩涡扭曲、动态平面水、同心圆波纹

本文主要是介绍【Unity】ShaderGraph的五个2D案例:动态液化柔和扭曲、带描边的溶解、漩涡扭曲、动态平面水、同心圆波纹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

液化柔和扭曲

有参考M.studio的水面案例 链接

他的方法有个致命缺点,就是右侧会有横线
在这里插入图片描述
出现这个问题是因为UV出了问题,他为了控制波纹强度就给噪声图乘了个强度值strength,但也导致uv的offset不再是0 ~ 1中间,而是0 ~ streng,所以输出的图的x在1-strength ~ 1处就会有横线,我的解决办法是增大噪声图的tilling来把横线挤出去
在这里插入图片描述

  • 新发现:用于扭曲的噪声图乘在Vertex Position上效果会更好
  • 开销更小,编辑模式下终于不卡了,坏处就是只有Sprite才能用,UI用不了
  • 这个Position结点我找了半天
  • 注意扭曲后的Position需要减去Strength/2,否则会由于和噪声图相乘后整体变小而整体向左下角移动

改进后的

带描边的溶解

效果:
原图
强度为0.3

在这里插入图片描述
更新:
原来的版本在应用于非正方形的sprite上后可能发生Voronoi被拉伸的效果,解决方法是把Voronoi结点的UV改成世界空间,搜Position就能找到

漩涡扭曲

直接用twist节点,开放中心坐标和强度两个变量,很简单,适合对圆形物体使用
在这里插入图片描述

平面水

参考unity官方案例,夏洛特做过介绍,B站链接

  • 有透明的叠加效果和水面的白色象征泡沫
  • 类似乐克乐克的水效果,但是水面的变化少了很多,毕竟用的是simple noise放大许多之后step,真不知道怎么做细节了……
  • 虽然有控制水面高度的参数,但是实际上水面的变化非常大,这让我很不满意
  • replace color节点好神奇
  • 白色泡沫的变化不够organic 我也很不满意
    在这里插入图片描述

平面水升级版

在这里插入图片描述
在这里插入图片描述

最终效果-静态

最终效果-搭配Animation做出的动态

  • 和第一版平面水的最大区别在与水面起伏幅度、水平面高度和泡沫效果更可控,这是因为使用的Gradient Noise 的Scale更小,且强度更小,并搭配UV结点的y通道,呈现更细微的梯度效果
    在这里插入图片描述
    几乎看不出有不同

  • 将两个梯度图都用step处理再相减,就有了泡沫
    在这里插入图片描述

  • 使用Render Texture把另一个不渲染UI的摄像机的画面引进来,形成透明的效果

  • 和液化柔和扭曲的原理相似,用UV 乘上柔和的噪声图再重映射UV来液化图像

  • 需要仔细调节主摄像机、Render Texture摄像机和平面水这三者的z值关系,否则容易混乱

  • 即使z左边不出问题,渲染在主摄像机的UI也不会被扭曲,看起来不太自然

  • 性能消耗挺大的,目前用于场景转场,感觉有点可惜

同心圆波纹

在这里插入图片描述

  • 一开始进入了想用shape-eclipse做的思维误区,后来发现想复杂了
  • 首先用在y上tile值较大的UV图,搭配step做出条纹
  • 再用极坐标结点,将条纹图变成同心圆图
  • 搭配祖传艺能:乘噪声图再重映射UV
  • 别忘了MainTex
  • 完成

这篇关于【Unity】ShaderGraph的五个2D案例:动态液化柔和扭曲、带描边的溶解、漩涡扭曲、动态平面水、同心圆波纹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/188639

相关文章

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边