Unity Shader Billboard
2015-06-01 14:16
435 查看
记录来源于ShaderLab开发实战详解
Shader "Tut/Project/Billboard_1" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
pass{
Cull Off
ZTest Always
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
struct v2f {
float4 pos:SV_POSITION;
float2 texc:TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
float4 ori=mul(UNITY_MATRIX_MV,float4(0,0,0,1));
float4 vt=v.vertex;
vt.y=vt.z;//这个平面是沿xz平面 展开的
vt.z=0;//所以只关心其平面上的信息
//通过加上Object Space的原点在ViewSpace的信息,保持其透视大小
vt.xyz+=ori.xyz;//result is vt.z==ori.z ,so the distance to camera keeped ,and screen size keeped
o.pos=mul(UNITY_MATRIX_P,vt);
o.texc=v.texcoord;
return o;
}
float4 frag(v2f i):COLOR
{
return tex2D(_MainTex,i.texc);
}
ENDCG
}//endpass
}
}
Shader "Tut/Project/Billboard_1" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
pass{
Cull Off
ZTest Always
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
struct v2f {
float4 pos:SV_POSITION;
float2 texc:TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
float4 ori=mul(UNITY_MATRIX_MV,float4(0,0,0,1));
float4 vt=v.vertex;
vt.y=vt.z;//这个平面是沿xz平面 展开的
vt.z=0;//所以只关心其平面上的信息
//通过加上Object Space的原点在ViewSpace的信息,保持其透视大小
vt.xyz+=ori.xyz;//result is vt.z==ori.z ,so the distance to camera keeped ,and screen size keeped
o.pos=mul(UNITY_MATRIX_P,vt);
o.texc=v.texcoord;
return o;
}
float4 frag(v2f i):COLOR
{
return tex2D(_MainTex,i.texc);
}
ENDCG
}//endpass
}
}
相关文章推荐
- unity3d 批量修改Texture属性 两种方式加载贴图
- 【猫猫的Unity Shader之旅】之双面材质和多Pass渲染
- [Unity3D]UI方案及制作细节(NGUI/EZGUI/原生UI系统)
- 关于unity的一个不错的插件平台
- 【边玩边学Unity3d】实现可编辑网格
- 【边玩边学Unity3d】Mesh属性
- [UnityUI]不规则图片的点击响应
- unity, Rigidbody.constraints
- Unity- Lerp的用法
- 使用Unity编写传统ARPG游戏人物操作方式(二)
- Unity3d查找游戏对象的方法
- [Unity基础]打包与读取AssetBundle
- Building Unity3D Plugins for Android
- unity,荧光效果(bloom)实现过程
- Unity中用触摸控制物体旋转和放大
- 【Unity3D】枪战游戏—弹孔设置
- 【Unity3D】枪战游戏—发射子弹、射线检测
- 【Unity3D】Unity自带组件—完成第一人称人物控制
- unity3d 上传本地PC图片
- Unity3d在安卓平台下使用sqlite存储操作数据