.png)
.png)
.png)
.png)
Shader "Sbin/trans" {
Properties {
_Scale("Scale",Range(1,8)) = 2
}
SubShader {
tags{"queue" = "transparent" }
pass{
blend srcAlpha oneMinussrcalpha
zwrite off //写入的z轴深度关掉
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f{
float4 pos : POSITION;
float4 col : COLOR;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
};
v2f vert(appdata_base v){
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.col = fixed4(0,1,1,1);
o.vertex = v.vertex;
o.normal = v.normal;
return o;
}
float _Scale;
fixed4 frag(v2f v):COLOR
{
float3 N = mul((float3x3)_World2Object,v.normal);
N = normalize(N);
float4 wpos = mul(_Object2World,v.vertex);
float3 V = _WorldSpaceCameraPos.xyz - wpos.xyz;
V = normalize(V);
float bright = 1 -saturate(dot(N,V));
bright = pow(bright,_Scale);
return fixed4(1,1,1,1)*bright;
}
ENDCG
}
}
FallBack "Diffuse"
}
Shader "Sbin/trans" {
Properties {
_MainColor("MainColor",Color) = (1,1,1,1)
_Scale("Scale",Range(1,10)) = 2
_Outer("Outer",Range(0,1)) = 0.2
}
SubShader {
tags{"queue" = "transparent" }
pass{
blend srcAlpha oneMinussrcalpha
zwrite off //写入的z轴深度关掉
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f{
float4 pos : POSITION;
float4 col : COLOR;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
};
float _Scale;
fixed4 _MainColor;
float _Outer;
v2f vert(appdata_base v){
v2f o;
v.vertex.xyz += v.normal*_Outer;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.col = fixed4(0,1,1,1);
o.vertex = v.vertex;
o.normal = v.normal;
return o;
}
fixed4 frag(v2f v):COLOR
{
float3 N = mul((float3x3)_World2Object,v.normal);
N = normalize(N);
float4 wpos = mul(_Object2World,v.vertex);
float3 V = _WorldSpaceCameraPos.xyz - wpos.xyz;
V = normalize(V);
float bright = saturate(dot(N,V));
bright = pow(bright,_Scale);
_MainColor.a *= bright;
return _MainColor;
}
ENDCG
}
//==============================================================================
pass{
blendop revsub
blend dstAlpha one //之前的alpha值
//blend zero one
zwrite off //写入的z轴深度关掉
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f{
float4 pos : POSITION;
};
v2f vert(appdata_base v){
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
return o;
}
fixed4 frag(v2f v):COLOR
{
return fixed4(1,1,1,1);
}
ENDCG
}
//==============================================================================
pass{
blend srcAlpha oneMinussrcalpha
//blend zero one
zwrite off //写入的z轴深度关掉
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f{
float4 pos : POSITION;
float4 col : COLOR;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
};
v2f vert(appdata_base v){
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.col = fixed4(0,1,1,1);
o.vertex = v.vertex;
o.normal = v.normal;
return o;
}
float _Scale;
fixed4 frag(v2f v):COLOR
{
float3 N = mul((float3x3)_World2Object,v.normal);
N = normalize(N);
float4 wpos = mul(_Object2World,v.vertex);
float3 V = _WorldSpaceCameraPos.xyz - wpos.xyz;
V = normalize(V);
float bright = 1 - saturate(dot(N,V));
bright = pow(bright,_Scale);
return fixed4(1,1,1,1)*bright;
}
ENDCG
}
}
FallBack "Diffuse"
}
.png)
Cg入门18:Fragment shader - 边缘泛光和透明
原文:http://blog.csdn.net/aa4790139/article/details/50964474