【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类型。如下图:

3)用Quad来测试当前shader。填写shader参数如下:

调节percent,就可以看到文章开头的那个特效。

原理解析:

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;

2)两个图片的叠加;通过比较uv中的v 和 _percent,来融合处理后的alpha通道和rgb通道。

lerp(tex0, tex1, smoothstep(0, 0.3, i.uv.y-_percent));

延伸:

当然也可以只对图片的局部进行处理。比如下图对闪电的处理,把闪电信息存放到alpha通道,然后就可以在shader做相应的处理了:

本文主要介绍怎样利用图片的alpha通道来隐藏信息,可以节省资源。这样的运用会有很多,有机会以后多加介绍。

【OpenGL】Shader实例分析(六)- 卡牌特效,布布扣,bubuko.com

时间: 2025-01-21 17:53:12

【OpenGL】Shader实例分析(六)- 卡牌特效的相关文章

【OpenGL】Shader实例分析(七)- 雪花飘落效果

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shadertoy.com/view/4d2Xzc Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChan

【OpenGL】Shader实例分析(九)- AngryBots中的主角受伤特效

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40859441 AngryBots是Unity官方的一个非常棒的样例.非常有研究价值. 曾经研究的时候.因为其内容丰富,一时间不知道从哪入手写文章分析. 这一段时间研究shader技术比較多一些,就从shader的这一方面開始吧.首先分析当中的一个屏幕特效:当主角受到攻击时会出现的全屏效果(postScreenEffect).效果例如以下: 事实上这是一种的Bloom效果,相关文件有:M

《炉石传说》架构设计赏析(6):卡牌&技能数据的运行时组织

前一篇文章我们看到了<炉石传说>的核心卡牌数据的存储,今天我们继续探索卡牌&技能. 主要的类 通过之前的分析,卡牌&技能涉及到几个类体系:Entity,Actor,Card,Spell,令人十分困惑,特别是前两者.在这里先略带武断的说一下这几个类的基本定位: Entity主要用来做网络数据同步用的: Actor主要处理客户端的渲染对象的控制,作为Component挂载在资源对象上: Spell是技能Prefab挂载的脚本: Card是卡牌Prefab挂载的脚本,在运行时处于中心

信用评级模型实例分析(以消费金融为例)-中

信用评级模型实例分析(以消费金融为例)-中 原创 2016-10-13 单良 亚联大数据 点击"亚联大数据"可关注我们! 第五章 自变量的初步分析与处理 模型变量有两种类型,分别是连续型变量 .连续型变数系指该变数为观察数据所得的实际数值,并没有经过群组处理 .间断型变数则系指质性变量或类别型变量 . 两种变数类型都适用于评分模型,但建议变量使用间断型态进行开发评分模型,主要原因如下: 1. 间断型变量有助于处理极端值或是样本数量较少的变量. 2. 非线性的因变量 (dependenc

TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变

转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与<游戏王>.结合数位与现实的<三国志大战>.或是在手机上掀起收集热潮的<龙族拼图>和<百万亚瑟王>? 卡牌游戏这个统称,其内容可以跟各式各样的玩法结合,而暴风雪新推出的<炉石战记>(以下简称炉石)所选择的玩法,是让玩家自行组牌.进行对战的「集换式卡牌游戏」(

菜鸟教程 | egret EUI卡牌游戏制作

写在前面 随着越来越多的新人开始接触白鹭引擎,创作属于自己的游戏.考虑到初学者会遇到的一些实际操作问题,我们近期整理推出<菜鸟教程>系列的文档,以便更好的让这些开打着们快速上手,Egret大神们可以忽略此类内容.本文作者是我们技术支持部门的同事"熊猫少女".看文的小伙伴如果有问题可以来白鹭官方论坛与之交流. EUI是一套基于Egret核心显示列表的UI扩展库,它封装了大量的常用UI组件,能够满足大部分的交互界面需求,即使更加复杂的组件需求,您也可以基于EUI已有组件进行组合

Camera图像处理原理及实例分析-重要图像概念

Camera图像处理原理及实例分析 作者:刘旭晖  [email protected]  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rgbbones.googlepages.com/ 做为拍照手机的核心模块之一,camera sensor 效果的调整,涉及到众多的参数,如果对基本的光学原理及 sensor 软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起到事半功倍的效果.否则,缺乏了理论的指导,只能是凭感觉和经

OpenGL Shader in OpenCASCADE

OpenGL Shader in OpenCASCADE [email protected] Abstract. As implementation of one of the strategic steps in OpenCASCADE visualization component development road-map, support for GLSL shader programs has been added in OpenCASCADE Technology 6.7.0. Key

自然系卡牌主要增加血量m--4武侠联盟游戏

在<游戏降临>这一款手游中,有很多不同类型不同属性的卡牌,卡牌一共分为5个系,近百种卡牌,让玩家为之倾心.卡牌分为火,水,自然,雷,光5个系,火系卡牌主要增加攻击力,水系卡牌主要增加幸运,自然系卡牌主要增加血量,雷系卡牌主要增加敏捷,光系卡牌主要增加防御.每一种卡牌都有其特定的作用和效果,只要玩家善于运用和搭配,就能发挥卡牌的最大能量,引爆战争. 战术阵型的作用会愈来愈突出的.举个例子,你的球队实力2000,但却打不过实力1800的球队,这就是阵容战术在作怪!阵型战术的相克原理是:组织克防守,