Unity Shader特效:人物模型动态流动光特效

本文写于2017-6-6,转载请注明

以下为正文

…………………………………………………………………………………………………………………………………………………………

先上效果图:

 

Shader界面图:

因为特效师的攻击特效做得过为酷炫,不够朴素,于是打算增加“愤怒状态”这一设定,然后就需要一个特效来支撑这一设定。
上网查了一些文章,一开始想做边缘光的特效,发现效果不太理想,最后找到一篇动态边缘光的文章,发现效果不错,思路是通过一个噪声图对模型贴图颜色进行叠加,再加上基于时间的贴图纹理坐标改变来实现的。但是将代码照搬后导出游戏发现严重问题——人物贴图全部丢失不显示了!觉得是文章本身的代码就写得有问题,于是查找其他边缘光相关文章按着动态边缘光的思路用表面着色器重新修改了一遍,发现效果更好且能成功导出!
感叹国内博客中的BUG太多,估计他们也没有实际导出过,只是在编辑器里预览了一下而已……

以下是Shader源码:
 

 Shader "Custom/DynamicRimLighting" {  //属性域  Properties {  //纹理颜色  _MainColor ("Main Color", Color) = (1,1,1,1)  //主纹理属性  _MainTex ("Texture", 2D) = "white" {}  //法线贴图纹理属性  _BumpMap ("Bumpmap", 2D) = "bump" {}  //边缘光颜色值  _RimColor ("Rim Color", Color) = (1,1,1,1)  //边缘光强度值  _RimPower ("Rim Power", Range(0.0,1.0)) = 0.5  //_RimMask("RimMask", 2D) = "white"{}  _RimSpeed("RimSpeed", Range(-10, 10)) = 1.0  _Glossiness ("平滑度", Range(0,1)) = 0.5_Metallic ("金属性", Range(0,1)) = 0.0_Brightness ("亮度", Range(0,3)) = 1.5_SpecialBrightness ("变身亮度", Range(0,3)) = 1.5}SubShader {  //标明渲染类型是不透明的物体  Tags { "RenderType" = "Opaque" }  //标明CG程序的开始  CGPROGRAM  //声明表面着色器函数  #pragma surface surf Standard//定义着色器函数输入的参数Input  struct Input {  //主纹理坐标值  float2 uv_MainTex;  //法线贴图坐标值  float2 uv_BumpMap;  //视图方向  float3 viewDir;  };  //声明对属性的引用  float4 _MainColor;  sampler2D _MainTex;  sampler2D _BumpMap;  float4 _RimColor;  float _RimPower;  sampler2D _RimMask;  float _RimSpeed;  half _Glossiness;half _Metallic;half _Brightness;half _SpecialBrightness;//表面着色器函数  void surf (Input IN, inout SurfaceOutputStandard o) {  fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);  fixed rimMask = tex2D(_RimMask, IN.uv_MainTex + float2(0 , _Time.y *_RimSpeed)).r;  //赋值颜色信息  o.Metallic = _Metallic;o.Smoothness = _Glossiness;o.Albedo = tex.rgb *_Brightness* _MainColor.rgb+_RimColor.rgb*_RimPower*(_SpecialBrightness-rimMask); //赋值法线信息  o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));  half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal)); //赋值自发光颜色信息  //o.Emission = _RimColor.rgb * pow (rim, _RimPower);  o.Emission = _RimColor.rgb *_RimPower*(_SpecialBrightness-rimMask);}  //标明CG程序的结束  ENDCG  }Fallback "Diffuse"
}



参考文章:
 Unity Shader-边缘光(RimLight)效果
 http://blog.csdn.net/puppet_master/article/details/53548134
Unity Shader 表面着色器边缘光(Rim Lighting)二
  http://blog.csdn.net/jk823394954/article/details/48983621

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381325.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

python实现两个图片的叠加融合

python通过PIL将两个图片叠加融合 我想到将一个图片去除背景将其放到另一张图片上以此实现融合。 1**. 打开想要融合的图片** file Image.open(6.png) verse 9.png我选取的两个图片 2**. 将附在上面的图片的背景进行透明化** verse transPNG(verse)# 图片背景透明化 …

壁纸网站研究:强大到没朋友的壁纸网站整理(动漫/二次元/宅男/风景/真人)

1、wallhaven 域名:https://wallhaven.cc 介绍:一个强大的壁纸网站,包含人物、动漫、风景,同时有一些老司机内容,需要选择NSFW,但需要登录才能观看,隐藏功能。但是海外网站,国内网…

java 人物头像识别

一、功能描述: 人物头像识别,识别图片中的是否含有人物头像。 二、准备工作: 创建需要识别的图片目录 ,如F:/img,链接中files\img中为示例图片。导入所需jar包,见files\jar。新建依赖文件haarcascade_fro…

日常问题——使用Java转将long类型为date类型,日期是1970年

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 long类型的日期为:1646718195 装换为date类型: Date date new Dat…

google浏览器截取长图

方法一: 首先F12选中手机模式 然后点击右上角 选择capture full size screenshot 或者ctrl shift p 方法二: 按F12打开调试页面,然后按下ctrlshiftp,输入命令Capture full size screenshot,敲回车,浏览…

edge便捷截取长图

edge便捷截取长图 右上角 三点 ——》网页捕获 ——》捕获整页 简简单单 方便食用~

Mac上使用Chrome浏览器截取长图

首先按下 ⌘Command ⌥Option I 快捷键,召唤出调试界面。 按下 ⌘Command ⇧Shift P 输入 Capture full size screenshot 敲下回车,Chrome 就会自动截取整个网页内容并保存至本地。

Linux上安装温度监控软件

文章目录 Linux上安装温度监控软件IDRAC设置 Linux上安装温度监控软件 服务器的温度是影响服务器性能重要条件,怎么监控机器的温度呢,这里知道的有两种方式 通过管理界面,查看机器的温度通过机器上安装监监控软件来监控温度 在物理机上怎么…

杂项 Chrome浏览器截取长图

WechatIMG18.jpeg 截取网页长图 image.png ⌘Command⌥OptionI快捷键,召唤出调试界面; 再按下⌘Command⇧ShiftP; 输入命令Capture full size screenshot,敲下回车; Chrome 就会自动截取整个网页内容并保存至本地。 自…

html怎么截取部分图片,【原创】详解css用坐标来截取部分图片

标题好像没有表述的十分清楚,直白的说就是在很大的图片上只截取我们需要的位置上的需要大小的图片。现在大家都知道网站技术发展的很快,很多技术较大的网站已经率先的使用了。大家可以看看腾讯会员的网页http://vip.qq.com/,当你想保存其中的一个栏目图片的时候你会发现点击…

Microsoft Edge 浏览器截取网页长图的方法

打开Edge 浏览器 在需要截长图的页面 点击右上角 如图下所示位置 出现 如下 弹窗 选择网页捕获 出现 捕获区域 、捕获整页 根据需求 就行选择 即可 ,如选择部分截图 选择捕获区域进行框选即可,如要截取整个网页的长截图 选择 捕获整页即可 捕获区域 …

谷歌浏览器利用开发者工具截取长图

在浏览器的右上角处找到三个竖着的小黑点按钮,点击选择该按钮。 在弹出来的下拉菜单中选择“更多工具”功能按钮,将鼠标放置于该按钮处会弹出一个二级菜单。 在二级菜单中找到“开发者工具”,鼠标左键单击选择该功能按钮,进入开…

友盟分享长图片,如何截取长图片去分享

实际开发中有没有发现有很多应用都是分享长图片呢?咋一看分享图片这是怎么做的呢,是不是后台返回链接图片做的呢,再一看不像哎,那怎么解决呢? 其实很简单啦 // 长图 类型可以是 tableView或者scrollView 等可以滚动的…

Chrome 截取长图

首先打开一个你想要截图的页面然后按下F12按CtrlShiftP打开console菜单在有个红对勾的位置输入 Capture full size screenshot ,找到Capture full size screenshot按下回车长页面截图自动生成并保存了

谷歌浏览器截取长图

1、单击左上角应用 2、单击chrome网上应用商店 3、输入full screen 搜索,点击Full Page Screen Capture 5、安装即可

selenium自动化学习--截取长图的方法

用gm实现基于node.js的selenium自动化截取长图的问题 解决思路具体代码效果总结 解决思路 主要运用gm方法对截图的拼接: 先运动webdriver.takeScreenshot()和scroll的操作分别截取出我们需要的截图。 gm().把所有的截图拼接在一起(需要安装gm&#xff…

西安城市标识牌的缺陷

西安这座古城,是西北地区政治经济文化中心,西北各个行业的龙头企业也多立足于西安。就标识牌制作来说,西安的标识牌行业在西北地区也首屈一指。不过从专业的眼光观察西安城市标识牌的实际状况,还是有诸多缺陷,其中以下…

标签打印软件如何制作三角形合格证

产品合格证标签是产品生产出售过程中的一个重要的标牌,产品合格证的外观有很多种,方形合格证,圆形合格证,三角形合格证,那么这些各种各样的合格证标签是怎么制作出来的呢?下面以三角形合格证为例教大家如何…

校园一键报警柱的作用

校园一键报警柱是一种用于校园安全的紧急报警系统,可以随时随地向校园安全管理部门发送紧急警报。这种系统通常采用带有紧急按钮的电缆或无线警报装置,使学生、教师和工作人员可以在出现紧急情况时轻松报告安全问题,迅速地通知校园安全人员&a…