221 lines
5.1 KiB
Plaintext
221 lines
5.1 KiB
Plaintext
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
|
|
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
|
|
|
|
|
Shader "Teaching_Hand2" {
|
|
|
|
Properties {
|
|
|
|
[Header(Displacement)]
|
|
_Displacement_("Displacement", Range(0,1)) = 0.0001
|
|
|
|
[Header(Color)]
|
|
_Color_("Color", Color) = (1,1,1,1)
|
|
_Intensity_("Intensity", Range(0,5)) = 2.5
|
|
|
|
[Header(Edge)]
|
|
_Exponent_("Exponent", Range(0,10)) = 2
|
|
_Soften_("Soften", Range(0.001,1)) = 0.3
|
|
|
|
[Header(Fade In)]
|
|
_Fade_In_Start_("Fade In Start", Range(0,1)) = 0.25
|
|
_Fade_In_End_("Fade In End", Range(0,1)) = 0.5
|
|
|
|
[Header(Soften Hold Out)]
|
|
[Toggle(_ENABLE_)] _Enable_("Enable", Float) = 0
|
|
_Center_("Center", Vector) = (0.5,0.5,0,0)
|
|
_Radius_("Radius", Range(0,1)) = 0.071
|
|
_Blur_("Blur", Range(0,1)) = 0.061
|
|
|
|
|
|
}
|
|
|
|
SubShader {
|
|
Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
|
|
Blend One One
|
|
ZWrite Off
|
|
|
|
LOD 100
|
|
|
|
Pass {
|
|
ColorMask 0
|
|
ZWrite On
|
|
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
|
|
#include "UnityCG.cginc"
|
|
|
|
struct v2f {
|
|
float4 vertex : SV_POSITION;
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
v2f vert (appdata_img v)
|
|
{
|
|
UNITY_SETUP_INSTANCE_ID(v);
|
|
v2f o;
|
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
|
o.vertex = UnityObjectToClipPos(v.vertex);
|
|
return o;
|
|
}
|
|
|
|
fixed4 frag (v2f i) : SV_Target
|
|
{
|
|
return 0;
|
|
}
|
|
ENDCG
|
|
}
|
|
|
|
Pass
|
|
|
|
{
|
|
|
|
CGPROGRAM
|
|
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#pragma multi_compile_instancing
|
|
#pragma target 4.0
|
|
#pragma multi_compile _ _ENABLE_
|
|
|
|
#include "UnityCG.cginc"
|
|
|
|
float _Displacement_;
|
|
float _Fade_In_Start_;
|
|
float _Fade_In_End_;
|
|
half4 _Color_;
|
|
half _Intensity_;
|
|
//bool _Enable_;
|
|
float2 _Center_;
|
|
half _Radius_;
|
|
half _Blur_;
|
|
half _Exponent_;
|
|
half _Soften_;
|
|
|
|
|
|
|
|
|
|
struct VertexInput {
|
|
float4 vertex : POSITION;
|
|
half3 normal : NORMAL;
|
|
float2 uv0 : TEXCOORD0;
|
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
|
};
|
|
|
|
struct VertexOutput {
|
|
float4 pos : SV_POSITION;
|
|
half4 normalWorld : TEXCOORD5;
|
|
float2 uv : TEXCOORD0;
|
|
float3 posWorld : TEXCOORD7;
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
// declare parm vars here
|
|
|
|
|
|
VertexOutput vert(VertexInput vertInput)
|
|
{
|
|
UNITY_SETUP_INSTANCE_ID(vertInput);
|
|
VertexOutput o;
|
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
|
|
|
|
|
// Object_To_World_Dir
|
|
float3 Dir_World_Q47=(mul((float3x3)unity_ObjectToWorld, vertInput.normal));
|
|
|
|
// Object_To_World_Pos
|
|
float3 Pos_World_Q48=(mul(unity_ObjectToWorld, float4(vertInput.vertex.xyz, 1)));
|
|
|
|
// Scale3
|
|
float3 Result_Q23 = _Displacement_ * Dir_World_Q47;
|
|
|
|
// Add3
|
|
float3 Sum3_Q24 = Pos_World_Q48 + Result_Q23;
|
|
|
|
float3 Position = Sum3_Q24;
|
|
float3 Normal = Dir_World_Q47;
|
|
float2 UV = vertInput.uv0;
|
|
float3 Tangent = float3(0,0,0);
|
|
float3 Binormal = float3(0,0,0);
|
|
float4 Color = float4(1,1,1,1);
|
|
|
|
|
|
o.pos = UnityObjectToClipPos(vertInput.vertex);
|
|
o.pos = mul(UNITY_MATRIX_VP, float4(Position,1));
|
|
o.posWorld = Position;
|
|
o.normalWorld.xyz = Normal; o.normalWorld.w=1.0;
|
|
o.uv = UV;
|
|
|
|
return o;
|
|
}
|
|
|
|
|
|
//fixed4 frag(VertexOutput fragInput, fixed facing : VFACE) : SV_Target
|
|
half4 frag(VertexOutput fragInput) : SV_Target
|
|
{
|
|
half4 result;
|
|
|
|
// To_XY
|
|
float X_Q34;
|
|
float Y_Q34;
|
|
X_Q34 = fragInput.uv.x;
|
|
Y_Q34 = fragInput.uv.y;
|
|
|
|
// Soften_Hold_Out
|
|
half Result_Q46;
|
|
#if defined(_ENABLE_)
|
|
Result_Q46 = saturate((distance(fragInput.uv,_Center_)-_Radius_)/_Blur_);
|
|
#else
|
|
Result_Q46 = 1.0;
|
|
#endif
|
|
|
|
// Incident3
|
|
float3 Incident_Q25 = normalize(fragInput.posWorld - _WorldSpaceCameraPos);
|
|
|
|
// Normalize3
|
|
float3 Normalized_Q26 = normalize(fragInput.normalWorld.xyz);
|
|
|
|
// Ramp
|
|
half Ramp_Q45 = clamp((Y_Q34-_Fade_In_Start_)/(_Fade_In_End_-_Fade_In_Start_),0,1);
|
|
|
|
// DotProduct3
|
|
half Dot_Q30 = dot(Incident_Q25, Normalized_Q26);
|
|
|
|
// Abs
|
|
half AbsA_Q31 = abs(Dot_Q30);
|
|
|
|
// SoftenEdges
|
|
half Result_Q43 = 1.0-(1.0-saturate(-Dot_Q30/_Soften_))*Result_Q46;
|
|
|
|
// One_Minus
|
|
half One_Minus_F_Q32 = 1.0 - AbsA_Q31;
|
|
|
|
// Power
|
|
half Power_Q44 = pow(One_Minus_F_Q32, _Exponent_);
|
|
|
|
// Multiply
|
|
half Product_Q33 = Power_Q44 * Result_Q43;
|
|
|
|
// Multiply
|
|
half Product_Q37 = Ramp_Q45 * Product_Q33;
|
|
|
|
// Multiply
|
|
half Product_Q38 = _Intensity_ * Product_Q37;
|
|
|
|
// Scale_Color
|
|
half4 Result_Q40 = Product_Q38 * _Color_;
|
|
|
|
float4 Out_Color = Result_Q40;
|
|
float Clip_Threshold = 0;
|
|
|
|
result = Out_Color;
|
|
return result;
|
|
}
|
|
|
|
ENDCG
|
|
}
|
|
}
|
|
}
|