You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

72 lines
3.2 KiB

Shader "Paco/NormalDirection/Vertex" {
Properties {
_Positive ("Positive", Color) = (0.737931,1,0,1)
_Negative ("Negative", Color) = (0,0.9044118,0.8295637,1)
[MaterialToggle] _UseNegative ("Use Negative", Float ) = 0
[MaterialToggle] _XZAxis ("X / Z Axis", Float ) = 0
_SmoothLight ("Smooth Light", Range(0, 1)) = 1
[MaterialToggle] _ShowNormalDirection ("Show Normal Direction", Float ) = 0.475862
}
SubShader {
Tags {
"RenderType"="Opaque"
}
Pass {
Name "FORWARD"
Tags {
"LightMode"="ForwardBase"
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#define UNITY_PASS_FORWARDBASE
#include "UnityCG.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma multi_compile_fog
#pragma only_renderers d3d9 d3d11 glcore gles
#pragma target 3.0
uniform float4 _Negative;
uniform fixed _ShowNormalDirection;
uniform fixed _XZAxis;
uniform float4 _Positive;
uniform fixed _UseNegative;
uniform float _SmoothLight;
struct VertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 vertexColor : COLOR;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float3 normalDir : TEXCOORD0;
float4 vertexColor : COLOR;
UNITY_FOG_COORDS(1)
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.vertexColor = v.vertexColor;
o.normalDir = UnityObjectToWorldNormal(v.normal);
o.pos = UnityObjectToClipPos( v.vertex );
UNITY_TRANSFER_FOG(o,o.pos);
return o;
}
float4 frag(VertexOutput i) : COLOR {
i.normalDir = normalize(i.normalDir);
float3 normalDirection = i.normalDir;
////// Lighting:
float2 node_2973 = normalDirection.rb;
float _XZAxis_var = lerp( node_2973.r, node_2973.g, _XZAxis );
float node_8533 = (_SmoothLight*48.0+2.0);
float3 NormalDir = normalDirection;
float3 finalColor = lerp( lerp(i.vertexColor.rgb,saturate(( lerp(_Negative.rgb,_Positive.rgb,lerp(1.0,saturate(((100.0*_XZAxis_var)*0.5+0.5)),_UseNegative)) > 0.5 ? (1.0-(1.0-2.0*(lerp(_Negative.rgb,_Positive.rgb,lerp(1.0,saturate(((100.0*_XZAxis_var)*0.5+0.5)),_UseNegative))-0.5))*(1.0-i.vertexColor.rgb)) : (2.0*lerp(_Negative.rgb,_Positive.rgb,lerp(1.0,saturate(((100.0*_XZAxis_var)*0.5+0.5)),_UseNegative))*i.vertexColor.rgb) )),floor(saturate(lerp(_XZAxis_var,abs(_XZAxis_var),_UseNegative)) * node_8533) / (node_8533 - 1)), NormalDir, _ShowNormalDirection );
fixed4 finalRGBA = fixed4(finalColor,1);
UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
return finalRGBA;
}
ENDCG
}
}
FallBack "Diffuse"
}