| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> [每天一个Unity Shader] 01.卡通风格水波 / 冲击波效果 -> 正文阅读 |
|
[游戏开发][每天一个Unity Shader] 01.卡通风格水波 / 冲击波效果 |
1 最终效果图2 制作过程2.1 准备圆盘模型准备一个圆盘模型,拖拽放入场景中 其具有放射状的mesh网格 2.2 编写使用单张材质图的Shader
折叠 编写一个使用一张纹理、不考虑光照计算的shader,新建一个材质,把这个shader赋给该材质 准备如下的一张渐变纹理,拖拽赋予给材质 得到效果如下: 2.3 使用透明度测试剔除片元
首先修改属性块如下,我们需要一个用于控制剔除的阈值_Thres和控制动画速度的_Speed
修改片元着色器如下,我们只取纹理采样颜色的r分量,使用灰度值gradient 减去阈值_Thres作为透明度测试的基准,调用Clip()函数进行透明度测试,其原理如果输入的值<0,该片元将被剔除 同时调用时间函数,通过修改uv来动态采样纹理实现动画,_Speed的x分量控制旋转速度,y分量控制扩散速度 得到的效果如下: 2.4 使用噪声准备如下噪声纹理
修改属性块,加入一张新纹理用来传入噪声
在结构体v2f中修改uv的类型为float4,用zw分量来存储噪声的uv
修改片元着色器,对噪声进行采样后同样取r分量,并使用算式: 灰度值 - 噪声值 - 阈值 来裁剪片元 效果如下: 2.5 边缘优化在上面的效果中,水波扩散在边缘整齐地消失,显得很生硬,考虑引入一个因子来弱化边缘的强度,使得其边缘消失效果自然一些 考虑用uv实现这个效果,注意到由于圆盘mesh的特性,uv的v分量刚好有放射状的特征,它在圆盘上中心位置最小,边缘位置最大,倒置之后则是中心位置最大,边缘位置最小,正好可以作为边缘的弱化因子 将倒置后的uv的v分量打印下来观察,确实具有这个特征
修改灰度值的计算公式,将倒置后的v分量作为因子乘以纹理采样结果 调节阈值参数,得到最终效果 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 11:09:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |