Unity实现混合模式的ADD模式
一般来说,2D的特效都会用到ADD模式来播放,但是Unity居然没有内置任何的混合模式,网上资料太少,没有写好的Shader,这里提供下我自己编写Shader:
Shader "Unlit/NewUnlitShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
//Tags { "RenderType"="Opaque" }
Tags{ "Queue" = "Transparent" } // 不使用这个会导致出现背景透明部分不显示的情况 LOD GrabPass{} // 绘制当前的屏幕图像到 _GrabTexture 里 Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog #include "UnityCG.cginc" struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
}; struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS()
float4 vertex : SV_POSITION;
half4 screenuv : TEXCOORD2; // 当前屏幕图像的UV坐标
}; sampler2D _MainTex;
float4 _MainTex_ST; sampler2D _GrabTexture; // 当前屏幕图像 v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
o.screenuv = ComputeGrabScreenPos(o.vertex); // 获取当前屏幕图像的UV坐标
return o;
} fixed4 frag (v2f i) : SV_Target
{ fixed4 colour = tex2D(_GrabTexture, float2(i.screenuv.x, i.screenuv.y)); // 获取当前屏幕图像的颜色 // sample the texture
fixed4 col = tex2D(_MainTex, i.uv); fixed4 endd = col + colour; // ADD 混合模式 // apply fog
UNITY_APPLY_FOG(i.fogCoord, endd);
return endd;
}
ENDCG
}
}
}
Unity实现混合模式的ADD模式的更多相关文章
- 关于Unity中混合模式、Alpha测试、深度测试、通道遮罩、面剔除的使用----渲染通道通用指令(二)
混合模式 着色完成后,需要把颜色混合到帧缓冲区里面,涉及到源和目标. 1:在所有计算完成后,决定当前的计算结果输出到帧缓冲区时,如何混合源和目标,通常用来绘制半透明的物体;2: Blend Off 关 ...
- 【Unity】8.3 布局模式(GUILayout)
分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 在Unity 5.x中,GUI控件的布局方式有两种. 一种为固定布局,即在绘制控件的时候将位置参数传入,指定控件的精确位 ...
- 关于Unity的游戏的运行模式
游戏有个入口main函数,执行完main函数就返回 main函数中的步骤 1.初始化 2.while(true){ a.检查有没有消息,包括鼠标有没有被点击,键盘有没有被点击,自定义事件等等,有消息就 ...
- 图像滤镜艺术---PS图层混合模式之明度模式
本文将介绍PS图层混合模式中比較复杂 的"明度"模式的算法原理及代码实现内容. 说到PS的图层混合模式,计算公式都有,详细代码实现也能找到,可是,都没有完整介绍全部图层混合模式的代 ...
- 通过fsharp 使用Enterprise Library Unity 3 - 三种拦截模式的探索
这篇就三种拦截模式进行一下探索. 特性总结 类型 特点 其它 InterfaceInterceptor Innstance 仅单接口 类内部函数互相引用无法引起拦截行为 TransparentPr ...
- unity提示can't add script解决办法
1.脚本有误没有继承unity类. 2.类名文件名不一致. 3.内部逻辑代码有误.
- 关于js的对象创建方法(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)
// 1.工厂方式创建对象:面向对象中的封装函数(内置对象) 简单来说就是封装后的代码,简单的工厂模式是很好理解的,关于它的作用,就是利用面向对象的方法,把一些对象封装,使一些占用空间多的,重复的代码 ...
- unity, Global和Local编辑模式
下图表示是在Local模式下: 下图表示是在Global模式下: 不要搞反.
- Unity Camera的两种模式
http://www.cnblogs.com/zhaoqingqing/p/3302484.html
随机推荐
- C# 反编译破解软件方法
我们有时在使用一些小工具软件时,会提示购买License(注册码之类的东东)后才能正常使用.在这里我们来尝试直接绕过License验证直接使用软件,实现简单的软件破解. 主要实现方式: 通过反编译工具 ...
- [洛谷P2066]机器分配
题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M≤15,N≤10.分 ...
- idea 开发插件。
作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com idea 开发插件. Intellij ID ...
- BZOJ.3928.[CERC2014]Outer space invaders(区间DP)
BZOJ3928 双倍经验BZOJ4048 Codeforces GYM100543 L \(Description\) \(Solution\) 考虑出现时间在\([l,r]\)内的敌人,设最远的敌 ...
- BZOJ.4289.PA2012 Tax(思路 Dijkstra)
题目链接 \(Description\) 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价 ...
- HDU.3516.Tree Construction(DP 四边形不等式)
题目链接 贴个教程: 四边形不等式学习笔记 \(Description\) 给出平面上的\(n\)个点,满足\(X_i\)严格单增,\(Y_i\)严格单减.以\(x\)轴和\(y\)轴正方向作边,使这 ...
- memcached 一致性哈希算法
本文转载自:http://blog.csdn.net/kongqz/article/details/6695417 一.概述 1.我们的memcache客户端使用了一致性hash算法ketama进行数 ...
- BZOJ4221 : JOI2012 kangaroo
将袋鼠大小和口袋大小分别从小到大排序. 枚举从左往右第一只没有被放入任何口袋的袋鼠$x$,那么$x$之前的所有袋鼠.以及$x$能装入的所有口袋都应该在匹配边上. 按这只袋鼠将上下两个序列分为两部分,设 ...
- Delphi识别读取验证码
unit OCR; interface uses Windows, SysUtils, Graphics, Classes, PNGImage, GIFImage, JPEG, Math, Asphy ...
- JSON序列——根据JSON生成事务性SQL
JSON序列——根据JSON生成事务性SQL procedure TForm1.Button5Click(Sender: TObject); begin var json: string :='' + ...