Shader学习笔记4
来源:互联网 发布:淘宝助理不显示宝贝 编辑:程序博客网 时间:2024/06/06 09:47
前两篇写的大多是表面着色器(SurfaceShader),有官方的,网上的,自己写的。自己看着都乱,当做仓库用吧。。。
然后就研究到了顶点和片段着色器,发现很自由,功能很多,但是不能处理光照。还有屏幕特效什么的特别炫酷,可惜我太菜看不懂。写完这篇博客,Shader也要停一下,需要消化一段时间,以后也许会写一些Shader的插件,原理,实现技巧什么的,嗯,就这么多。下面就是2个我感觉常用的屏幕特效:
屏幕特效
摄像机灰度(死亡视角)
在Camera中设置脚本,设置Material ---mat
调用回调
OnRenderImage(RenderTexuture source,RenderTexture dest){
Graphics.Blit(source, dest, mat);
}
_MainTex 不需要赋值,_Num控制灰度,0是不灰,1是灰,可以实现从死亡视角转化为正常视角
Shader"Custom/MatShader"
{
Properties
{
//主纹理
_MainTex ("Albedo (RGB)",2D) ="white"{}
_Num("Num",Range(0,1))=0
}
SubShader
{
Tags{"RenderType"="Opaque"}
LOD200
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D_MainTex;
fixed_Num;
voidvert(inoutappdata_basev)
{
v.vertex =mul(UNITY_MATRIX_MVP,v.vertex);
}
fixed4frag(appdata_basev):Color
{
fixed4c =tex2D(_MainTex,v.texcoord);
fixedval = c.r*0.3+c.g*0.59+c.b*0.11;
fixed4now =fixed4(val,val,val,1);
returnlerp(c,now,_Num);
}
ENDCG
}
}
//备胎为漫反射
FallBack"Diffuse"
}
径向模糊- 步骤一:定义径向模糊的中心点,通常取图像的正中心点。
- 步骤二:计算采样像素与中心点的距离,根据距离确定偏移程度,即离中心点越远,偏移量越大。
- 步骤三:将采样点的颜色值做平均求和。
Shader"径向模糊Shader"{
Properties{
_MainTex("纹理",2D)="while"{}
_Level("强度",Range(0,100))=10
}
SubShader{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
sampler2D_MainTex;
float_Level;
structv2f{
fixed4vertex:POSITION;
fixed2uv:TEXCOORD;
};
v2f vert(appdata_basev){
v2f o;
o.vertex=mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=v.texcoord;
returno;
}
fixed4frag(v2f i):COLOR{
fixed4c;
fixed2center=fixed2(.5,.5);
fixed2uv=i.uv-center;
fixed3c1=fixed3(0,0,0);
for(fixedj=0;j<_Level;j++){
c1+=tex2D(_MainTex,uv*(1-0.01*j)+center).rgb;
}
c.rgb=c1/_Level;
c.a=1;
returnc;
}
ENDCG
}
}
}
0 0
- Shader学习笔记4
- 风宇冲shader学习笔记
- unity3d shader 学习笔记
- Shader 学习笔记 20151031
- Shader 学习笔记 20151102
- Shader 学习笔记 20151103
- Shader 学习笔记 20151104
- Shader 学习笔记 20151105
- Shader 学习笔记 20151110
- Shader 学习笔记 20151112
- Shader 学习笔记 20151113
- Shader 学习笔记 20151121
- Shader 学习笔记 20151124
- Shader 学习笔记 20151201
- shader学习笔记二
- shader学习笔记一
- shader学习笔记三
- shader学习笔记三
- Part 2 of 2 Two‘s complement
- merge排序
- Python, Missing argument XXX
- Redis 3.0的集群部署
- LEEAlert 自定义 UIAlertView
- Shader学习笔记4
- TextView中设置指定位置字符颜色
- 初识JAVA
- 算法分析(总结)排序算法性能及比较总结
- 使用RecyclerView在出现的问题
- LeetCode 122. Best Time to Buy and Sell Stock II 解题报告
- 第一篇博客
- Linux命令——ln命令创建和删除软、硬链接
- POJ 2559 Largest Rectangle in a Histogram(单调栈维护最大矩形面积)