Untitled diff

Created Diff never expires
6 removals
92 lines
8 additions
94 lines

Shader "My/Normal/AlphaPulseShader" {
Shader "My/Normal/AlphaPulseShader" {
Properties{
Properties{
_MainTex ("Base (RGB) Trans (A)", 2D) = "blue" {}
_MainTex ("Color (RGB) Alpha (A)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
_EmissionMap ("Emission Map", 2D) = "black" {}
_EmissionMap ("Emission Map", 2D) = "black" {}
_Color ("Color", Color) = (1,0,0,1)
_Color ("Color", Color) = (1,0,0,1)
_PDistance ("PulseDistance", Float) = 0
_PDistance ("PulseDistance", Float) = 0
_PFadeDistance ("FadeDistance", Float) = 10
_PFadeDistance ("FadeDistance", Float) = 10
_PEdgeSoftness ("EdgeSoftness", Float) = 5
_PEdgeSoftness ("EdgeSoftness", Float) = 5
_Origin ("PulseOrigin", Vector) = (0, 0, 0, 0)
_Origin ("PulseOrigin", Vector) = (0, 0, 0, 0)
_RimColor ("Rim Color", Color) = (1,1,1,1)
_RimColor ("Rim Color", Color) = (1,1,1,1)
_RimPower ("Rim Power", Range(0.5, 8.0)) = 1.059702
_RimPower ("Rim Power", Range(0.5, 8.0)) = 1.059702
[Toggle(USE_RIM)]_RimOn ("Rim On", Int) = 0.0
[Toggle(USE_RIM)]_RimOn ("Rim On", Int) = 0.0
_EmissionMultiplier ("Emission Multiplier", Range(-10,10)) = 1.0
_EmissionMultiplier ("Emission Multiplier", Range(-10,10)) = 1.0
}
}
SubShader{
SubShader{
Tags{ "RenderType"="Opaque" }
Tags{ "Queue"="Transparent" "RenderType"="Transparent" }
LOD 200
LOD 200
CGPROGRAM
CGPROGRAM
//LIGHTING
//LIGHTING
#include "AutoLight.cginc"
#include "AutoLight.cginc"
// define finalcolor and vertex programs:
// define finalcolor and vertex programs:
#pragma surface surf Lambert finalcolor:mycolor// alpha
#pragma surface surf Lambert finalcolor:mycolor alpha //check this out
#pragma shader_feature USE_RIM
#pragma shader_feature USE_RIM
struct Input {
struct Input {
float2 uv_MainTex;
float2 uv_MainTex;
float2 uv_BumpMap;
float2 uv_BumpMap;
float2 uv_EmissionMap;
float2 uv_EmissionMap;
float3 worldPos;
float3 worldPos;
float3 viewDir;
float3 viewDir;
half alpha;
half alpha;
};
};
fixed4 _Color;
fixed4 _Color;
sampler2D _MainTex;
sampler2D _MainTex;
sampler2D _BumpMap;
sampler2D _BumpMap;
sampler2D _EmissionMap;
sampler2D _EmissionMap;
half _PDistance;
half _PDistance;
half _PFadeDistance;
half _PFadeDistance;
half _PEdgeSoftness;
half _PEdgeSoftness;
float4 _Origin;
float4 _Origin;
float4 _RimColor;
float4 _RimColor;
float _RimPower;
float _RimPower;
float _RimOn;
float _RimOn;
float _EmissionMultiplier;
float _EmissionMultiplier;
void mycolor (Input IN, SurfaceOutput o, inout fixed4 color) {
void mycolor (Input IN, SurfaceOutput o, inout fixed4 color) {
// set the vertex color alpha to the value calculated:
// set the vertex color alpha to the value calculated:
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
color.a = c.a;
color.a = c.a;
half dis;
half dis;
half interval;
half interval;
half origin;
half origin;
dis = sqrt (pow ((IN.worldPos.x - _Origin.x),2) + pow ((IN.worldPos.y - _Origin.y), 2) + pow ((IN.worldPos.z - _Origin.z), 2));
dis = sqrt (pow ((IN.worldPos.x - _Origin.x),2) + pow ((IN.worldPos.y - _Origin.y), 2) + pow ((IN.worldPos.z - _Origin.z), 2));
if (dis >= _PDistance)
if (dis >= _PDistance)
{
{
color.rgb = color.rgb * (1 - saturate (abs (_PDistance - dis) / _PEdgeSoftness));
color.rgb = color.rgb * (1 - saturate (abs (_PDistance - dis) / _PEdgeSoftness));
}
}
else
else
{
{
color.rgb = color.rgb * (1 - saturate (abs (_PDistance - dis) / _PFadeDistance));
color.rgb = color.rgb * (1 - saturate (abs (_PDistance - dis) / _PFadeDistance));
}
}
}
}
void surf (Input IN, inout SurfaceOutput o) {
void surf (Input IN, inout SurfaceOutput o) {
// simply copy the corresponding texture element color:
// simply copy the corresponding texture element color:
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Albedo = c.rgb;
// o.Alpha = tex2D(_MainTex,IN.uv_MainTex).a;
o.Alpha = tex2D(_MainTex,IN.uv_MainTex).a;
o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
// half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
// half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
#ifdef USE_RIM
#ifdef USE_RIM
half rim = 1.0 - saturate (dot (normalize (IN.viewDir), o.Normal));
half rim = 1.0 - saturate (dot (normalize (IN.viewDir), o.Normal));
o.Emission = _RimColor.rgb * pow (rim, _RimPower) + _EmissionMultiplier * tex2D (_EmissionMap, IN.uv_EmissionMap);
o.Emission = _RimColor.rgb * pow (rim, _RimPower) + _EmissionMultiplier * tex2D (_EmissionMap, IN.uv_EmissionMap);
#else
#else


o.Emission = _EmissionMultiplier * tex2D (_EmissionMap, IN.uv_EmissionMap);
o.Emission = _EmissionMultiplier * tex2D (_EmissionMap, IN.uv_EmissionMap);
#endif
#endif
}
}
ENDCG
ENDCG
}
}
// Fallback "Diffuse"
// Fallback "Diffuse"
Fallback "VertexLit"
Fallback "VertexLit"
}
}