ShaderForge-水面折射

47 篇文章 10 订阅

ShaderForge-水面折射

本系列开始进行ShaderForge实战案例分析,案例的参考来源自朧老师的ShaderForge教程。
附带教程链接地址:http://www.aboutcg.org/?s=shaderForge&post_type=course
文末我会提供相关使用的素材。

效果预览

这里写图片描述这里写图片描述

思路分析

折射效果,我们需要用到折射通道,折射通道是非常耗费性能的,折射的实现原理,首先物体必须是透明或者半透明的东西,折射需要实时的获取摄像机渲染的图像,然后进行像素的偏移处理,最后用屏幕UV的方式渲染在画面上。

开始制作

创建默认的自定义光照模式Shader,并且删除默认的节点。
我们首先给透明通道设置一个变量,进行全透明效果。
这里写图片描述
变量为0,输入到透明通道,并且设置混合方式,由于是全透明现在预览看不到东西。
现在我们添加折射的效果,折射的本质就是偏移,我们现在使用一个噪点图的RG通道来做为偏移的UV值,并通过一个变量来控制偏移的程度。
这里写图片描述
现在在场景中预览一下效果,调节折射参数可以看到不同的效果。
这里写图片描述
接下来我们使用自定义通道实现折射效果。
首先我们需要获取屏幕的渲染像素,需要SceneColor节点,然后通过一个变量控制偏移的方向,
然后我们需要一张噪点图来提供漂移的随机变量,通过Flow参数控制偏移的力度,最后将原本的屏幕UV和噪点图输出的UV偏移相加,输入到SceneColor节点中。屏幕UV需要选择成UV模式,这样UV坐标就变成了左下角是0,0点。
这里写图片描述
在场景中预览一下效果
这里写图片描述

接下来看另一种实现的办法,这种方法效果要高不少。
我们利用Unity的RenderTexture图片,能够实时获取摄像机渲染出的图像,关于相关的设置就不做过多解释了,可以下载场景后自行查看。大体思路就是创建一个新的摄像机添加到主摄像机的下边,让这个摄像机只渲染水面之下的物体,然后将这个子摄像机渲染的东西输出到RenderTexture上,调整好摄像机的角度。
设置的关键Game视图的窗口比例和RenderTexture2D的输出图比例保持一致,宽高比。
Shader中的ScenePos节点需要设置成UV模式。
接下来看Shader部分,我们首先需要一个Tex2D节点,载入那张RenderTexture图片。
我们使用一个噪点图作为偏移的随机变量引入,并添加一个变量控制流动幅度,将原本的UV通道稍作改造,然后将UV信息和偏移加起来,输入到Tex2D节点中。

这里写图片描述
我们在场景中,看看效果。
这里写图片描述

相关素材

链接: https://pan.baidu.com/s/1o821vGQ 密码: p42n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值