角色和武器Shader特效开发
角色Shader的动效需求
角Shader的开发不知要实现最基础光照等功能, 可能还要在角色武器的Shader增加多种动效, 比如因武器品质区分的流光特效, 被技能击中时的冻结效果.
这类动效的实现方式有多种, 以下以Shader的方式实现下列三种:
- 流光
- 冰
- 溶解
开发思路
具体效果
流光
两层
Alpha控制范围冰
matcap实现
溶解
支持溶解边缘亮边
step(fixed2(noise, noise+edge), _Dissolve)
对需要实现的效果进行排序
实现这些需求的过程上来说, 肯定是一层一层在基础效果只上叠加上去的,相互之间是有"覆盖"关系的, 于是我们将以上需求排列整理如下:
- 光照
- 流光
- 冰
- 溶解
2. Shader代码的实现
1. 封装
#ifndef MESH_FX_CORE_INCLUDED#define MESH_FX_CORE_INCLUDED#ifdef MESH_FX_ONuniform float4 _EdgeColor;uniform sampler2D _DissolveNoiseTex;uniform float4 _DissolveNoiseTex_ST;uniform float _DissolveWidth;uniform float _Dissolve;uniform sampler2D _MatcapTex ;uniform float _MatcapIntensity;uniform float4 _FlowColor;uniform sampler2D _FlowTex ;uniform float4 _FlowTexTiling ;uniform float4 _Flow1Color;uniform sampler2D _FlowTex1 ;uniform float4 _FlowSpeed ;uniform float _FlowIntensity ;struct MeshFXData{float2 UV0;float3 normalWorld;fixed3 BaseColor;};fixed4 FX_Dissolve(MeshFXData fx){float2 uv_DissolveNoiseTex = fx.UV0 * _DissolveNoiseTex_ST.xy + _DissolveNoiseTex_ST.zw;float4 dissolveTexCol = tex2D(_DissolveNoiseTex, uv_DissolveNoiseTex);float2 twoLayer = float2(dissolveTexCol.r, saturate(dissolveTexCol.r + _DissolveWidth));float2 dissolveResult = step(twoLayer, _Dissolve.xx);float4 finalCol = _EdgeColor * (dissolveResult.x - dissolveResult.y) * dissolveTexCol.r;finalCol.a = saturate(dissolveResult.x);return finalCol;}fixed4 FX_Frozen(MeshFXData fx){float2 matCapUV = ((mul(UNITY_MATRIX_V, float4(fx.normalWorld, 0.0)).xyz * 0.5) + 0.5).xy;float4 finalCol = tex2D(_MatcapTex, matCapUV);finalCol.a = _MatcapIntensity;return finalCol;}fixed4 FX_LightFlow(MeshFXData fx){float2 uv0 = fx.UV0 * _FlowTexTiling.xy + (_Time.y * _FlowSpeed.xy);fixed4 flowCol1 = tex2D(_FlowTex, uv0);fixed mask1 = tex2D(_FlowTex, fx.UV0.xy).a; //float2 uv1 = fx.UV0 * _FlowTexTiling.zw + (_Time.y * _FlowSpeed.zw);fixed4 flowCol2 = tex2D(_FlowTex1, uv1);fixed mask2 = tex2D(_FlowTex1, fx.UV0.xy).a;fixed4 layer1 = flowCol1 * mask1 * _FlowColor;fixed4 layer2 = flowCol2 * mask2 * _Flow1Color;fixed4 col = (layer1 + layer2) * _FlowIntensity;col.a = max(flowCol1.a, flowCol2.a);return col;}fixed4 MeshFXInternal(MeshFXData fx){fixed4 finalColor = fixed4(0, 0, 0, 0);fixed4 Dissolve = FX_Dissolve(fx);fixed4 Frozen = FX_Frozen(fx);fixed4 LightFlow = FX_LightFlow(fx);// lightflow -> frozen -> dissolve//lightflowfinalColor.rgb = fx.BaseColor + LightFlow.rgb * fx.BaseColor * 2;//matcap frozenfinalColor.rgb = lerp(finalColor.rgb, Frozen.rgb, Frozen.a);//dissolvefinalColor.rgb = finalColor + Dissolve.rgb;finalColor.a = Dissolve.a;return finalColor;}#endif
#endif
2. 调用
#if defined(MESH_FX_ON)MeshFXData fx = (MeshFXData)0;fx.UV0 = i.tex.xy;fx.normalWorld = s.normalWorld;fx.BaseColor = Color.rgb;Color = MeshFXInternal(fx);
#endif
3. ShaderGUI的实现
体力活
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
转载于:https://www.cnblogs.com/CloudLiu/p/10442301.html
角色和武器Shader特效开发相关推荐
- 《Unity着色器和屏幕特效开发秘笈》—— 1.7 创建渐变纹理来控制漫反射着色...
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第1章,第1.7节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- Ruby‘s Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效
Ruby's Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效 前言 一.把特效物品进行切割 二.创建 particle System 三.创建彩色球 四.再设置一下其他属性 五. ...
- 《Unity着色器和屏幕特效开发秘笈》—— 2.5 法线贴图
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第2章,第2.5节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 001_StarterPlatformGame_角色,武器,控制类
----------------------------------StarterPlatformGame---李明阳2015-2-19-------------------------------- ...
- 《Unity着色器和屏幕特效开发秘笈》—— 3.4 创建BlinnPhong高光类型
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第3章,第3.4节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 《Unity着色器和屏幕特效开发秘笈》—— 2.1 引言
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第2章,第2.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.9 打包和混合纹理
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.9节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth ...
- Silverlight游戏特效开发(一) : 制作人物光环效果
本系列介绍使用Silverlight制作游戏特效的方法,本文主要介绍人物光环效果. 本方法适用于Silverlight网页程序,WPF应用,Windows Phone Silverlight应用.对于 ...
- 《Unity着色器和屏幕特效开发秘笈》—— 第3章 利用镜面反射让游戏闪耀起来...
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第3章,第3.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- 《Unity着色器和屏幕特效开发秘笈》—— 1.1 引言
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第1章,第1.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
最新文章
- ffmpeg解封装及解码实战
- 大道至简—GO语言最佳实践
- Lambda表达式和流API:基本示例
- Redis(十一):Redis特殊类型之Bitmap位图
- C/C++语言中Static的作用详述
- 常见计算机英语词汇翻译,常见计算机英语词汇翻译.doc
- 初级会计资格-初级会计实务-知识点总结大全
- Win11怎么把桌面文件路径改到D盘
- 中国首个证券纠纷示范判决机制的规定在沪发布
- MAtlab wavefront,这是张小飞的阵列信号的全部MATLAB代码 传统的高分辨波达方向(DOA)估计算法中 - 下载 - 搜珍网...
- html css3滤镜,CSS滤镜之Glow属性_css
- neo4j笔记(一)
- ES(四)ES使用(基本查询、聚合查询)
- java手势识别技术_Android基础开发之手势识别
- Rust权威指南 全书笔记
- 机器学习-----聚类kmeans肘部图、轮廓图的绘制、以及聚类和聚类中心散点图的绘制
- 要实现一台电脑可以上公司内网也可以访问外网
- html中图片自动循环滚动代码,实现长图片自动循环滚动效果
- linux 搭建webserver-Goahead
- 软考高级已过,可以继续考软考中级吗?
热门文章
- 利用全加器实现7段数码管_[走近FPGA]之数码管动态显示
- CPU卡指令文件读取算法
- handsome主题添加服务器信息,全屏响应式精美typecho主题handsome
- 一网打尽:指针和数组
- itsm软件_itsm软件的主要功能
- 德州农工大学计算机硕士申请,德州农工大学硕士申请
- NLP 论文领读 | 缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧
- Axure RP8 进度条
- 如何在PC上显示Hololens的视野
- 仿微软Video Indexer——视频断点播放与智能解析时间线的前端可视化实现