Init
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
|
||||
Shader "HPE/hand_axis"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Hand(FadeColor)]
|
||||
_Scale("Scale", Float) = 20
|
||||
_Power("Power", Float) = 3
|
||||
_ColorX("ColorX", Color) = (206,71, 38, 1)
|
||||
_ColorY("ColorY", Color) = (156,204,85, 1)
|
||||
_ColorZ("ColorZ", Color) = (66, 118, 184, 1)
|
||||
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
#include "Lighting.cginc"
|
||||
#pragma target 3.0
|
||||
|
||||
// FadeColor
|
||||
uniform half _Scale;
|
||||
uniform half _Power;
|
||||
uniform half4 _ColorX;
|
||||
uniform half4 _ColorY;
|
||||
uniform half4 _ColorZ;
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 100
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True""RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
//Pass
|
||||
//{
|
||||
// Name "Depth"
|
||||
// Tags
|
||||
// {
|
||||
// "LightMode" = "SRPDefaultUnlit"
|
||||
// }
|
||||
// ZWrite On
|
||||
// ColorMask 0
|
||||
//}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True""LightMode" = "UniversalForward"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
float4 localPos : TEXCOORD2;
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
o.localPos = v.vertex;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half3 axis = pow((clamp((i.localPos*_Scale) , 0.01, 1)),_Power)-0.01;
|
||||
half3 axiscolor = _ColorX*axis.r+_ColorY*axis.g+_ColorZ*axis.b;
|
||||
half fade = length(axis);
|
||||
half4 result = half4(axiscolor.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 200
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
|
||||
//Pass
|
||||
//{
|
||||
// Name "Depth"
|
||||
// Tags
|
||||
// {
|
||||
// "LightMode" = "SRPDefaultUnlit"
|
||||
// }
|
||||
// ZWrite On
|
||||
// ColorMask 0
|
||||
//}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
float4 localPos : TEXCOORD2;
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
o.localPos = v.vertex;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half3 axis = pow((clamp((i.localPos*_Scale) , 0.01, 1)),_Power)-0.01;
|
||||
half3 axiscolor = _ColorX*axis.r+_ColorY*axis.g+_ColorZ*axis.b;
|
||||
half fade = length(axis);
|
||||
half4 result = half4(axiscolor.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83d5259263ef7e544b6ef74f579d0479
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,311 @@
|
||||
|
||||
Shader "HPE/hand_Fade"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Hand(Fade)]
|
||||
_Length("Length", Float) = 0
|
||||
_Color("Color", Color) = (0, 0, 0, 0)
|
||||
_Scale("Scale", Float) = 1
|
||||
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
#include "Lighting.cginc"
|
||||
#pragma target 3.0
|
||||
|
||||
// fade
|
||||
uniform half _Length;
|
||||
uniform half4 _Color;
|
||||
uniform half _Scale;
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 100
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True""RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
//Pass
|
||||
//{
|
||||
// Name "Depth"
|
||||
// Tags
|
||||
// {
|
||||
// "LightMode" = "SRPDefaultUnlit"
|
||||
// }
|
||||
// ZWrite On
|
||||
// ColorMask 0
|
||||
//}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True""LightMode" = "UniversalForward"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half fade = clamp((i.uv.y + _Length) * _Scale, 0, 1) * _Color.a;
|
||||
half4 result = half4(_Color.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half fade = clamp((i.uv.y + _Length) * _Scale, 0, 1) * _Color.a;
|
||||
half4 result = half4(_Color.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 200
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
|
||||
//Pass
|
||||
//{
|
||||
// Name "Depth"
|
||||
// Tags
|
||||
// {
|
||||
// "LightMode" = "SRPDefaultUnlit"
|
||||
// }
|
||||
// ZWrite On
|
||||
// ColorMask 0
|
||||
//}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half fade = clamp((i.uv.y + _Length) * _Scale, 0, 1) * _Color.a;
|
||||
half4 result = half4(_Color.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half fade = clamp((i.uv.y + _Length) * _Scale, 0, 1) * _Color.a;
|
||||
half4 result = half4(_Color.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2754f47eb19b8747870e7dd52de1e87
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,180 @@
|
||||
|
||||
Shader "HPE/hand_FloorShadow"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Hand(Fade)]
|
||||
_MainTex ("Texture",2D) = "white" {}
|
||||
_Color("Color", Color) = (0, 0, 0, 0)
|
||||
|
||||
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
#include "Lighting.cginc"
|
||||
#pragma target 3.0
|
||||
|
||||
|
||||
sampler2D _MainTex;
|
||||
uniform float4 _MainTex_ST;
|
||||
uniform half4 _Color;
|
||||
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 100
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True""RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True""LightMode" = "UniversalForward"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex Vertex
|
||||
#pragma fragment Fragment
|
||||
|
||||
|
||||
struct VertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct VertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
VertexOutput Vertex(VertexInput v)
|
||||
{
|
||||
VertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 Fragment(VertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
fixed4 col = tex2D(_MainTex,i.uv);
|
||||
fixed3 colRGB = col.rgb*_Color.rgb;
|
||||
fixed colAlpha = col.a*_Color.a;
|
||||
|
||||
|
||||
return half4(colRGB,colAlpha);
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 200
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Fade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex Vertex
|
||||
#pragma fragment Fragment
|
||||
|
||||
|
||||
struct VertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct VertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
VertexOutput Vertex(VertexInput v)
|
||||
{
|
||||
VertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 Fragment(VertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
fixed4 col = tex2D(_MainTex,i.uv);
|
||||
fixed3 colRGB = col.rgb*_Color.rgb;
|
||||
fixed colAlpha = col.a*_Color.a;
|
||||
|
||||
|
||||
return half4(colRGB,colAlpha);
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ee5ba7cc57c8074b81f3fba4c0c3dba
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,433 @@
|
||||
|
||||
Shader "HPE/Highlight"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Header(Finger)]
|
||||
_FingerIndex("FingerIndex", Vector) = (0.28, 0.875, 0.03, 0.3)
|
||||
_FingerMiddle("FingerMiddle", Vector) = (0.38, 0.825, 0.035, 0.3)
|
||||
_FingerRing("FingerRing", Vector) = (0.47, 0.86, 0.04, 0.3)
|
||||
_FingerThumb("FingerThumb", Vector) = (0.178, 0.72, 0.05, 0.25)
|
||||
_LightColor("LightColor", Color) = (1, 0, 0, 0)
|
||||
_BlendPower("BlendPower", Vector) = (1, 1, 1, 1)
|
||||
[HideInInspector]_Head("Head", Float) = 1
|
||||
[HideInInspector]_Smooth("Smooth", Float) = 1
|
||||
|
||||
}
|
||||
|
||||
|
||||
CGINCLUDE
|
||||
#include "Lighting.cginc"
|
||||
#pragma target 3.0
|
||||
|
||||
// Finger
|
||||
uniform float4 _FingerIndex;
|
||||
uniform float4 _FingerMiddle;
|
||||
uniform float4 _FingerRing;
|
||||
uniform float4 _FingerThumb;
|
||||
uniform float4 _LightColor;
|
||||
uniform float4 _BlendPower;
|
||||
//Test
|
||||
uniform float _Head;
|
||||
uniform float _Smooth;
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 100
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True""RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Depth"
|
||||
Tags
|
||||
{
|
||||
|
||||
"LightMode" = "SRPDefaultUnlit"
|
||||
}
|
||||
ZWrite On
|
||||
ColorMask 0
|
||||
}
|
||||
Pass
|
||||
{
|
||||
Name "Highlight"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True""LightMode" = "UniversalForward"
|
||||
}
|
||||
Cull off
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex highlightVertex
|
||||
#pragma fragment highlightFragment
|
||||
|
||||
struct highlightVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
|
||||
struct highlightVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
void Remap(float In, float2 InMinMax, float2 OutMinMax, out float Out)
|
||||
{
|
||||
Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
|
||||
}
|
||||
|
||||
void SplitQuad(float4 _QuadRange, float2 _UV, out float2 _UV1, out float _Range2)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡUV
|
||||
half2 uv = _UV;
|
||||
half uv_R = uv[0];
|
||||
half uv_G = uv[1];
|
||||
half4 quadRange = _QuadRange;
|
||||
half quad_R = quadRange[0];
|
||||
half quad_G = quadRange[1];
|
||||
half quad_B = quadRange[2];
|
||||
half quad_A = quadRange[3];
|
||||
|
||||
//shape_Range
|
||||
half subtract_1 = quad_R - quad_B;
|
||||
half subtract_4 = quad_G - quad_A;
|
||||
|
||||
half add_1 = quad_R + quad_B;
|
||||
half add_2 = quad_G + quad_A;
|
||||
|
||||
half2 pos = half2(subtract_1, subtract_4);
|
||||
|
||||
half2 pos2 = half2(add_1, add_2);
|
||||
|
||||
half2 shape01 = float2(subtract_1, subtract_4)-uv;
|
||||
half2 shape02 = uv-float2(add_1, add_2);
|
||||
float2 _Step_1 = step(shape01, float2(0, 0));
|
||||
float2 _Step_2 = step(shape02, float2(0, 0));
|
||||
|
||||
float2 _Blend_Out = min(_Step_1, _Step_2);
|
||||
float _Final_Blend_Out = min(_Blend_Out.x, _Blend_Out.y);
|
||||
|
||||
//outR
|
||||
half subtract_3 = add_1 - subtract_1;
|
||||
half subtract_2 = uv_R - subtract_1;
|
||||
half divide_1 = subtract_2 / subtract_3;
|
||||
|
||||
//outG
|
||||
half subtract_6 = add_2 - subtract_4;
|
||||
half subtract_5 = uv_G - subtract_4;
|
||||
half divide_2 = subtract_5 / subtract_6;
|
||||
|
||||
//outUV
|
||||
|
||||
half4 combine_RGBA;
|
||||
combine_RGBA.x = divide_1;
|
||||
combine_RGBA.y = divide_2;
|
||||
combine_RGBA.z = 0;
|
||||
combine_RGBA.w = 0;
|
||||
|
||||
|
||||
_UV1 = float2(combine_RGBA.x, combine_RGBA.y);
|
||||
_Range2 = _Final_Blend_Out;
|
||||
|
||||
}
|
||||
|
||||
void CapsuleArea(float _Head, float2 _UV, out float shape2)
|
||||
{
|
||||
float u = _UV.r;
|
||||
float v = _UV.g;
|
||||
float _Head_Processed = 1-_Head;
|
||||
|
||||
|
||||
float part1;
|
||||
|
||||
Remap(v,float2(_Head_Processed, 1), float2(0,1), part1);
|
||||
part1 = max(part1,0);
|
||||
|
||||
float part2;
|
||||
Remap(v,float2(0,_Head), float2(1,0), part2);
|
||||
part2 = max(part2,0);
|
||||
|
||||
float v2 = part1 + part2;
|
||||
|
||||
|
||||
float dis = distance(float2(u,v2),float2(0.5, 0))*2;
|
||||
|
||||
|
||||
float result = clamp(1-dis,0,1);
|
||||
|
||||
shape2 = result;
|
||||
|
||||
}
|
||||
void processFinger(float4 _Finger, float2 _UV, out float result)
|
||||
{
|
||||
float2 _UV1;
|
||||
float _Range2;
|
||||
SplitQuad(_Finger, _UV, _UV1, _Range2);
|
||||
float2 _UV2 =_UV1*_Range2;
|
||||
|
||||
float _shape2;
|
||||
CapsuleArea(_Head,_UV2,_shape2);
|
||||
float shape3 = smoothstep(_Smooth,0,_UV.g)*_shape2;
|
||||
result = shape3;
|
||||
}
|
||||
|
||||
highlightVertexOutput highlightVertex(highlightVertexInput v)
|
||||
{
|
||||
highlightVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 highlightFragment(highlightVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
|
||||
float2 _UV2 = i.uv;
|
||||
|
||||
float shape3_index;
|
||||
processFinger(_FingerIndex,_UV2,shape3_index);
|
||||
shape3_index *= _BlendPower.x;
|
||||
|
||||
float shape3_middle;
|
||||
processFinger(_FingerMiddle,_UV2,shape3_middle);
|
||||
shape3_middle *= _BlendPower.y;
|
||||
|
||||
float shape3_ring;
|
||||
processFinger(_FingerRing,_UV2,shape3_ring);
|
||||
shape3_ring *= _BlendPower.z;
|
||||
|
||||
float shape3_thumb;
|
||||
processFinger(_FingerThumb,_UV2,shape3_thumb);
|
||||
shape3_thumb *= _BlendPower.w;
|
||||
|
||||
float4 glow = clamp(_LightColor,0,1);
|
||||
glow.rgb *= shape3_index + shape3_middle + shape3_ring + shape3_thumb;
|
||||
glow.a *= shape3_index + shape3_middle + shape3_ring + shape3_thumb;
|
||||
|
||||
|
||||
return glow*3.8;
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 200
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Depth"
|
||||
|
||||
ZWrite On
|
||||
ColorMask 0
|
||||
}
|
||||
Pass
|
||||
{
|
||||
Name "Highlight"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
Cull off
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex highlightVertex
|
||||
#pragma fragment highlightFragment
|
||||
|
||||
struct highlightVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
|
||||
struct highlightVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
void Remap(float In, float2 InMinMax, float2 OutMinMax, out float Out)
|
||||
{
|
||||
Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);
|
||||
}
|
||||
|
||||
void SplitQuad(float4 _QuadRange, float2 _UV, out float2 _UV1, out float _Range2)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡUV
|
||||
half2 uv = _UV;
|
||||
half uv_R = uv[0];
|
||||
half uv_G = uv[1];
|
||||
half4 quadRange = _QuadRange;
|
||||
half quad_R = quadRange[0];
|
||||
half quad_G = quadRange[1];
|
||||
half quad_B = quadRange[2];
|
||||
half quad_A = quadRange[3];
|
||||
|
||||
//shape_Range
|
||||
half subtract_1 = quad_R - quad_B;
|
||||
half subtract_4 = quad_G - quad_A;
|
||||
|
||||
half add_1 = quad_R + quad_B;
|
||||
half add_2 = quad_G + quad_A;
|
||||
|
||||
half2 pos = half2(subtract_1, subtract_4);
|
||||
|
||||
half2 pos2 = half2(add_1, add_2);
|
||||
|
||||
half2 shape01 = float2(subtract_1, subtract_4)-uv;
|
||||
half2 shape02 = uv-float2(add_1, add_2);
|
||||
float2 _Step_1 = step(shape01, float2(0, 0));
|
||||
float2 _Step_2 = step(shape02, float2(0, 0));
|
||||
|
||||
float2 _Blend_Out = min(_Step_1, _Step_2);
|
||||
float _Final_Blend_Out = min(_Blend_Out.x, _Blend_Out.y);
|
||||
|
||||
//outR
|
||||
half subtract_3 = add_1 - subtract_1;
|
||||
half subtract_2 = uv_R - subtract_1;
|
||||
half divide_1 = subtract_2 / subtract_3;
|
||||
|
||||
//outG
|
||||
half subtract_6 = add_2 - subtract_4;
|
||||
half subtract_5 = uv_G - subtract_4;
|
||||
half divide_2 = subtract_5 / subtract_6;
|
||||
|
||||
//outUV
|
||||
|
||||
half4 combine_RGBA;
|
||||
combine_RGBA.x = divide_1;
|
||||
combine_RGBA.y = divide_2;
|
||||
combine_RGBA.z = 0;
|
||||
combine_RGBA.w = 0;
|
||||
|
||||
|
||||
_UV1 = float2(combine_RGBA.x, combine_RGBA.y);
|
||||
_Range2 = _Final_Blend_Out;
|
||||
|
||||
}
|
||||
|
||||
void CapsuleArea(float _Head, float2 _UV, out float shape2)
|
||||
{
|
||||
float u = _UV.r;
|
||||
float v = _UV.g;
|
||||
float _Head_Processed = 1-_Head;
|
||||
|
||||
|
||||
float part1;
|
||||
|
||||
Remap(v,float2(_Head_Processed, 1), float2(0,1), part1);
|
||||
part1 = max(part1,0);
|
||||
|
||||
float part2;
|
||||
Remap(v,float2(0,_Head), float2(1,0), part2);
|
||||
part2 = max(part2,0);
|
||||
|
||||
float v2 = part1 + part2;
|
||||
|
||||
|
||||
float dis = distance(float2(u,v2),float2(0.5, 0))*2;
|
||||
|
||||
|
||||
float result = clamp(1-dis,0,1);
|
||||
|
||||
shape2 = result;
|
||||
|
||||
}
|
||||
void processFinger(float4 _Finger, float2 _UV, out float result)
|
||||
{
|
||||
float2 _UV1;
|
||||
float _Range2;
|
||||
SplitQuad(_Finger, _UV, _UV1, _Range2);
|
||||
float2 _UV2 =_UV1*_Range2;
|
||||
|
||||
float _shape2;
|
||||
CapsuleArea(_Head,_UV2,_shape2);
|
||||
float shape3 = smoothstep(_Smooth,0,_UV.g)*_shape2;
|
||||
result = shape3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
highlightVertexOutput highlightVertex(highlightVertexInput v)
|
||||
{
|
||||
highlightVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 highlightFragment(highlightVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
|
||||
float2 _UV2 = i.uv;
|
||||
|
||||
float shape3_index;
|
||||
processFinger(_FingerIndex,_UV2,shape3_index);
|
||||
shape3_index *= _BlendPower.x;
|
||||
|
||||
float shape3_middle;
|
||||
processFinger(_FingerMiddle,_UV2,shape3_middle);
|
||||
shape3_middle *= _BlendPower.y;
|
||||
|
||||
float shape3_ring;
|
||||
processFinger(_FingerRing,_UV2,shape3_ring);
|
||||
shape3_ring *= _BlendPower.z;
|
||||
|
||||
float shape3_thumb;
|
||||
processFinger(_FingerThumb,_UV2,shape3_thumb);
|
||||
shape3_thumb *= _BlendPower.w;
|
||||
|
||||
float4 glow = clamp(_LightColor,0,1);
|
||||
glow.rgb *= shape3_index + shape3_middle + shape3_ring + shape3_thumb;
|
||||
glow.a *= shape3_index + shape3_middle + shape3_ring + shape3_thumb;
|
||||
|
||||
|
||||
return glow*3.8;
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef269a72d9c5bff4d92983b06a83716f
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
preprocessorOverride: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,208 @@
|
||||
|
||||
Shader "HPE/Outline"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Header(Outline)]
|
||||
_OutlineWidth("Width", Range(0 , 0.005)) = 0.002
|
||||
_OutlineColor("Color", Color) = (1.0,1.0,1.0,1)
|
||||
_OutlineOpacity("Opacity", Range(0 , 1)) = 0.4
|
||||
_FadeIntensity("Intensity", Range(-5 , 5)) = 0.0
|
||||
_FadeOffset("Offset",Range(-5 , 5)) = 1.0
|
||||
_FadeOffset2("Offset2",Range(-5 , 5)) = 1.0
|
||||
|
||||
[MaterialToggle] _HandFade_Toggle ("HandFade_Toggle", Float ) = 0.5
|
||||
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
#include "Lighting.cginc"
|
||||
#pragma target 3.0
|
||||
|
||||
// Outline
|
||||
uniform float4 _OutlineColor;
|
||||
uniform float _OutlineWidth;
|
||||
uniform float _OutlineOpacity;
|
||||
|
||||
// fade
|
||||
uniform half _FadeIntensity;
|
||||
uniform half _FadeOffset;
|
||||
uniform half _FadeOffset2;
|
||||
// fade mask
|
||||
uniform sampler2D _FingerGlowMask;
|
||||
|
||||
uniform fixed _HandFade_Toggle;
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 100
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True""RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Depth"
|
||||
Tags
|
||||
{
|
||||
"LightMode" = "SRPDefaultUnlit"
|
||||
}
|
||||
ZWrite On
|
||||
ColorMask 0
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Outline"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True""LightMode" = "UniversalForward"
|
||||
}
|
||||
Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float3 normal: NORMAL;
|
||||
half4 glowColor : TEXCOORD1;
|
||||
half3 fadeMask : TEXCOORD2;
|
||||
float4 localPos : TEXCOORD4;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
v.vertex.xyz += v.normal * _OutlineWidth;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.localPos = v.vertex;
|
||||
half3 fadeMask = v.vertex;
|
||||
half fadeMaskOffset = o.localPos.y*_FadeOffset+_FadeOffset2;
|
||||
half fadeMaskOffset2 = o.localPos.z*_FadeOffset+_FadeOffset2;
|
||||
half _HandFade_Toggle_var = lerp( fadeMaskOffset,fadeMaskOffset2,_HandFade_Toggle );
|
||||
|
||||
half4 glow = _OutlineColor;
|
||||
|
||||
o.glowColor.rgb = glow.rgb;
|
||||
o.glowColor.a = clamp((_HandFade_Toggle_var*_FadeIntensity),0,1) * glow.a * _OutlineOpacity;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
return i.glowColor;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 200
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Depth"
|
||||
|
||||
ZWrite On
|
||||
ColorMask 0
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "Outline"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float3 normal: NORMAL;
|
||||
half4 glowColor : TEXCOORD1;
|
||||
half3 fadeMask : TEXCOORD2;
|
||||
float4 localPos : TEXCOORD4;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
v.vertex.xyz += v.normal * _OutlineWidth;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.localPos = v.vertex;
|
||||
half3 fadeMask = v.vertex;
|
||||
half fadeMaskOffset = o.localPos.y*_FadeOffset+_FadeOffset2;
|
||||
half fadeMaskOffset2 = o.localPos.z*_FadeOffset+_FadeOffset2;
|
||||
half _HandFade_Toggle_var = lerp( fadeMaskOffset,fadeMaskOffset2,_HandFade_Toggle );
|
||||
|
||||
half4 glow = _OutlineColor;
|
||||
|
||||
o.glowColor.rgb = glow.rgb;
|
||||
o.glowColor.a = clamp((_HandFade_Toggle_var*_FadeIntensity),0,1) * glow.a * _OutlineOpacity;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
return i.glowColor;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d731039ebfec33f48a9a477a1969b4c5
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,181 @@
|
||||
|
||||
Shader "HPE/head_fade"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[Hand(Fade)]
|
||||
_Length("Length", Float) = 0
|
||||
_Color("Color", Color) = (0, 0, 0, 0)
|
||||
_Scale("Scale", Float) = 1
|
||||
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
#include "Lighting.cginc"
|
||||
#pragma target 3.0
|
||||
|
||||
// headfade
|
||||
uniform half _Length;
|
||||
uniform half4 _Color;
|
||||
uniform half _Scale;
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 100
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True""RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "headFade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True""LightMode" = "UniversalForward"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
float4 localPos : TEXCOORD2;
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
o.localPos = v.vertex;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half fade = clamp((i.localPos.g+ _Length) * _Scale, 0, 1) * _Color.a;
|
||||
half4 result = half4(_Color.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
SubShader
|
||||
{
|
||||
LOD 200
|
||||
Tags
|
||||
{
|
||||
"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "headFade"
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True"
|
||||
}
|
||||
//Cull Front
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex outlineVertex
|
||||
#pragma fragment outlineFragment
|
||||
|
||||
|
||||
struct OutlineVertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float4 texcoord : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct OutlineVertexOutput
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
float2 uv : TEXCOORD1;
|
||||
float4 localPos : TEXCOORD2;
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
OutlineVertexOutput outlineVertex(OutlineVertexInput v)
|
||||
{
|
||||
OutlineVertexOutput o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
o.localPos = v.vertex;
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 outlineFragment(OutlineVertexOutput i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
half fade = clamp((i.localPos.g+ _Length) * _Scale, 0, 1) * _Color.a;
|
||||
half4 result = half4(_Color.rgb, fade);
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05101c81489cd764ebd35d33ec4e0900
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,54 @@
|
||||
Shader "HandEditor/Transparent Outlined Hand (PrepassZ)"
|
||||
{
|
||||
SubShader
|
||||
{
|
||||
Tags
|
||||
{
|
||||
"Queue"="Transparent" "RenderType"="Transparent"
|
||||
}
|
||||
LOD 200
|
||||
|
||||
// Pre-pass Zwrite. Makes the semitransparent hands
|
||||
// sort correctly (i.e., the fingers blend onto the
|
||||
// background, but not each other!)
|
||||
Pass
|
||||
{
|
||||
ZWrite On
|
||||
ColorMask A // Prevents Z prepass from actually drawing anything.
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float4 normal : NORMAL;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
uniform float _HandThickness;
|
||||
|
||||
v2f vert(appdata v)
|
||||
{
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_OUTPUT(v2f, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag() : SV_Target { return 0; } // nop!
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
FallBack "Diffuse"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b059227bd2954f478ffb40ca189d39d
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
preprocessorOverride: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user