Shader "Custom/AlphaBlend"{
Properties{
_MainTex("MainTex",2D)="white"{}
_AlphaScale("AlphaScale",Range(0,1))=1
}
SubShader{
Tags{
"Quene"="Transparent"
"IgroneProjector"="True"
"RenderType"="Transparent"
}
Pass{
Tags{
"LightMode"="ForwardBase"
}
Cull Front
ZWrite off
Blend srcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "Lighting.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
fixed _AlphaScale;
struct a2v{
float4 vertex:POSITION;
float3 normal:NORMAL;
float4 texcoord:TEXCOORD0;
};
struct v2f{
float4 pos:SV_POSITION;
float3 worldNormal:TEXCOORD0;
float3 worldPos:TEXCOORD1;
float2 uv:TEXCOORD2;
};
v2f vert(a2v v){
v2f o;
o.pos=UnityObjectToClipPos(v.vertex);
o.worldNormal=UnityObjectToWorldNormal(v.normal);
o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;
o.uv=TRANSFORM_TEX(v.texcoord,_MainTex);
return o;
}
fixed4 frag(v2f i):SV_TARGET{
fixed4 albedo=tex2D(_MainTex,i.uv);
fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;
fixed3 worldNormal=normalize(i.worldNormal);
fixed3 worldLight=normalize(UnityWorldSpaceLightDir(i.worldPos));
fixed3 diffuse=_LightColor0*albedo*saturate(dot(worldNormal,worldLight));
return fixed4(diffuse+ambient,albedo.a*_AlphaScale);
}
ENDCG
}
Pass{
Tags{
"LightMode"="ForwardBase"
}
Cull Back
ZWrite off
Blend srcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "Lighting.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
fixed _AlphaScale;
struct a2v{
float4 vertex:POSITION;
float3 normal:NORMAL;
float4 texcoord:TEXCOORD0;
};
struct v2f{
float4 pos:SV_POSITION;
float3 worldNormal:TEXCOORD0;
float3 worldPos:TEXCOORD1;
float2 uv:TEXCOORD2;
};
v2f vert(a2v v){
v2f o;
o.pos=UnityObjectToClipPos(v.vertex);
o.worldNormal=UnityObjectToWorldNormal(v.normal);
o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;
o.uv=TRANSFORM_TEX(v.texcoord,_MainTex);
return o;
}
fixed4 frag(v2f i):SV_TARGET{
fixed4 albedo=tex2D(_MainTex,i.uv);
fixed3 ambient=UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;
fixed3 worldNormal=normalize(i.worldNormal);
fixed3 worldLight=normalize(UnityWorldSpaceLightDir(i.worldPos));
fixed3 diffuse=_LightColor0*albedo*saturate(dot(worldNormal,worldLight));
return fixed4(diffuse+ambient,albedo.a*_AlphaScale);
}
ENDCG
}
}
Fallback "Diffuse"
}
(Shader学习笔记) 物体透明度显示
最新推荐文章于 2023-09-13 10:59:58 发布