Unity Shader入门精要学习笔记——15章 15.2 水波效果(一)

这篇博客主要介绍了Unity中实现水波效果的Shader技术,包括水不断流动的模拟、反射颜色、折射颜色的生成以及菲涅尔效应的应用。通过使用立方体纹理、GrabPass、法线纹理和水面波纹材质,博主详细阐述了实现过程,并提到schlick菲涅尔公式在反射率计算中的应用。
摘要由CSDN通过智能技术生成

写在前面

两年前第一次阅读的时候就没有做什么笔记,阅读效果不太好。而现在回看大串大串的文字会很乏力。有时侯可能只需要看几个高亮关键字就能回想起来整个流程。便想通过博文来记忆各元素,刨析、理解原理,再试图举一反三扩展。如有认为有错误的地方,热烈欢迎指出!

目标效果

  1. 水不断流动的效果
  2. 水面波动效果(反射、折射)
  3. 菲涅尔效应

准备

  1. 立方体纹理(立方体纹理)作为环境纹理,模拟反射颜色
  2. GrabPass获取一张当前屏幕的渲染纹理,模拟折射颜色
  3. 法线纹理(由噪声纹理生成)
  4. 水面波纹材质纹理(模拟基础颜色)

过程

水不断流动的效果

为了模拟两层交叉的水面效果,用x,y两个偏移速度乘以时间(_Time),来对法线纹理进行采样

反射颜色

采样法线纹理,得到切线空间法线向量。再通过乘以世界坐标下的切线坐标轴向量形成的矩阵,得到世界坐标下的法线向量。
与世界坐标下的视线方向,得到反射向量。用来采样环境纹理,得到反射颜色。

折射颜色

用切线空间下的法线来进行偏移,再乘以屏幕空间下的z(即深度值)来采样渲染纹理。
从而达到模拟深度越大,折射程度越大的效果

菲涅尔效应

点乘法线与视线,pow一下,来得到反射率,用来混合反射颜色与折射颜色得到结果
PS:
schlick菲涅尔公式:
Fschlick(h,v,F0)=F0+(1−F0)(1−(n⋅v))5
n法线方向 v视角方向 h半角向量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值