mixedreality/com.microsoft.mixedreality..../SDK/Features/UX/Materials/HandCoach/Teaching_Hand2.shader

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
}
}
}