【OpenGL】Shader实例分析(六)- 卡牌特效
转发请保持地址:http://blog.csdn.net/stalendp/article/details/30989295
本文将介绍怎么通过alpha通道来隐藏信息。并实现卡牌特效。
执行效果例如以下:
代码例如以下:
Shader "stalendp/imageShine" {Properties {_MainTex ("image", 2D) = "white" {}_NoiseTex("noise", 2D) = "bump" {}_percent("percent", Range(-0.3, 1)) = 0_DefColor ("defalutColor", COLOR) = ( 0, .8, .4, 1)}CGINCLUDE#include "UnityCG.cginc" sampler2D _MainTex;sampler2D _NoiseTex; float _percent;fixed4 _DefColor;struct v2f { half4 pos:SV_POSITION; half4 uv : TEXCOORD0; }; v2f vert(appdata_full v) { v2f o; o.pos = mul (UNITY_MATRIX_MVP, v.vertex); o.uv.xy = v.texcoord.xy;o.uv.zw = v.texcoord.xy + _Time.xx ;return o; } fixed4 frag(v2f i) : COLOR0 {// 原始卡牌, 把alpha设置为1。屏蔽掉alpha通道信息fixed4 tex0 = tex2D(_MainTex, i.uv.xy);tex0.a = 1;// 透明躁动卡牌; 使用alpha通道信息。设置显示颜色,并增加躁动。half3 noise = tex2D(_NoiseTex, i.uv.zw );fixed4 tex1 = tex2D(_MainTex, i.uv.xy + noise.xy * 0.05 - 0.025);tex1.rgb = _DefColor.rgb;return lerp(tex0, tex1, smoothstep(0, 0.3, i.uv.y-_percent));} ENDCG SubShader { Tags {"Queue" = "Transparent"} ZWrite Off Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest ENDCG }}FallBack Off
}
素材准备:
1)在本例中,在photoshop中处理图片。在alpha通道中存放了例如以下的信息图:
然后导出图片成为 tif格式。
2)准备一张噪声图片,并在unity下转化为Normal Map类型(改成NormalMap,会有对应的參数能够调节,对于这里的shader能够省略)。例如以下图:
3)用Quad来測试当前shader。
填写shader參数例如以下:
调节percent。就能够看到文章开头的那个特效。
原理解析:
half3 noise = tex2D(_NoiseTex, i.uv.zw );
fixed4 tex1 = tex2D(_MainTex, i.uv.xy + noise.xy * 0.05 - 0.025);
tex1.rgb = _DefColor.rgb;
b) noise.xy * 0.05 的区间为[0,0.05];
d)i.uv.xy + noise.xy * 0.05 - 0.025 表示对原来图片的uv进行[-0.025,0.025]之间随意值的一次偏移(取决于噪声图),这样就形成了图像扭曲效果。
2)两个图片的叠加;通过比較uv中的v 和 _percent。来融合处理后的alpha通道和rgb通道。
lerp(tex0, tex1, smoothstep(0, 0.3, i.uv.y-_percent));
延伸:
比方下图对闪电的处理,把闪电信息存放到alpha通道,然后就能够在shader做对应的处理了:
这种运用会有非常多,有机会以后多加介绍。
【OpenGL】Shader实例分析(六)- 卡牌特效相关推荐
- android 4实例分析,OpenGL Shader实例分析(4)闪光效果
本文实例为大家分享了opengl shader实例闪光效果的具体代码,供大家参考,具体内容如下 在游戏中,当战斗结束后,对一些获取的宝贝需要进行闪光处理.这篇文章介绍一个进行闪光处理的shader,运 ...
- android+动态光圈效果,OpenGL Shader实例分析(8)彩色光圈效果
本文实例为大家分享了opengl实现彩色光圈效果的具体代码,供大家参考,具体内容如下 研究了一个彩色光圈效果,感觉挺不错的,分享给大家,效果如下: 代码如下: shader "shadert ...
- android雪花飘落效果,【OpenGL】Shader实例分析(七)- 雪花飘落效果
研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shader ...
- 卡牌特效: svg不规则倒计时动效
导语:直播过程中,往往会有各种动画特效增强直播效果,近期需求中,设计要求在企鹅电竞PC官网上实现一种卡牌效果,在不规则图片上叠加倒计时效果.前端项目中,往往使用css来完成动画,像倒计时效果也可以使用 ...
- 【OpenGL】Shader实例分析(十)- 钻石效果
好久没有写文章了,赶紧补几篇.最近研究了一个玻璃折射的效果(用在钻石上),虽然没有达到最满意的效果,还是先分享出来,待以后有更好的想法再补充. 先看效果吧: 这里面有两个效果,左边是unity的免费插 ...
- 《炉石传说》架构设计赏析(6):卡牌 技能数据的运行时组织
前一篇文章我们看到了<炉石传说>的核心卡牌数据的存储,今天我们继续探索卡牌&技能. 主要的类 通过之前的分析,卡牌&技能涉及到几个类体系:Entity,Actor,Card ...
- 2.2 法力池的创建和视觉特效———自制卡牌游戏之旅
文章目录 一.实现效果 二.实现过程 1. 想法 2. 创建对象 3. 编写脚本ManaPool.cs ① get.set访问器 ② 最大法力值 ③ 可用法力值 ④ update测试 3. ManaP ...
- 如何用Unity Shader制作类似《炉石传说》卡牌的动态效果?
此篇为鄙人在卡牌项目中,尝试模仿<炉石传说>卡面特效所制作的特效Shader总结回顾,几经修改,最终成为了现在的样子,因为使用简单,效果明显,虽然距离<炉石传说>的卡面特效还有 ...
- 第02章 一个实例初识WorkBench分析流程-卡扣结构的动作分析
第02章 一个实例初识WorkBench分析流程-卡扣结构的动作分析 1问题描述,关心的结果 2. 建模的介绍,模型改如何简化 3. 复杂特征的网格初步试划分 4. 网格再次的划分及调整 5. 材料的 ...
最新文章
- PHP问题 —— Deprecated: Function ereg_replace() is de
- SegmentFault 技术周刊 Vol.21 - 程序人生(二):2016 这一年
- golang中的优雅中止
- opencv cv2.flip()函数(图像翻转、镜像、颠倒)(沿x轴翻转0、沿y轴翻转【正值】、同时沿x轴y轴翻转-【负值】)
- 现代谱估计:多窗口谱
- linux 手动安装 oracle(转)
- phpstorm如何同时打开两个文件夹_iPhone如何同时添加两个不同的面容ID?
- 数据粒度的上卷和下钻
- 【UE4游戏开发】安装UE4时报SU-PQR1603错误的解决方法
- 单调栈:leetcode 84. 柱状图中最大的矩形/85最大矩形
- python小游戏,植物大战僵尸,免费源代码分享,少儿编程体验项目,项目注释详细,可更改游戏参数,关注私聊“关注即送植物大战僵尸源代码”即可免费获得
- java数据库编程--执行数据库更新操作
- 思科(Cisco)路由器常用命令总结
- Windows设置眼睛保护色
- 百度汇率转换接口 php,利用yahoo汇率接口实现实时汇率转换示例 汇率转换器_php实例...
- Android Button设置边框 和背景
- echarts年龄饼图_ECharts中饼图的操作
- 学生来看我,我自我满足...........
- 关于ThinkPad T490s 风扇不转动问题
- Unity3d游戏引擎Windy系列教程:常见组件扫盲讲解引入unity所需的脚本语言基础