advancedskrald/ChessAR/Assets/StylizedPenguin.shader

82 lines
2.2 KiB
Plaintext

Shader "AR/StylizedPenguin" {
Properties {
_MainTex ("Penguin Texture", 2D) = "white" {}
}
SubShader{
Tags { "RenderType" = "Opaque" }
Pass {
Cull Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _Color;
struct Input {
float4 position : POSITION;
float4 color : COLOR;
float2 coord : TEXCOORD0;
half3 normal : NORMAL;
};
struct VertexToFragment {
float4 position : SV_POSITION;
float4 color : COLOR;
float2 coord : TEXCOORD0;
half3 normal : NORMAL;
};
VertexToFragment vert(Input IN) {
VertexToFragment OUT;
OUT.position = UnityObjectToClipPos( IN.position);
OUT.color = IN.color;
OUT.coord = IN.coord;
OUT.normal = UnityObjectToWorldNormal(IN.normal);
return OUT;
}
sampler2D _MainTex;
float2 _NoiseVector;
fixed4 frag(VertexToFragment IN) : SV_Target {
half4 c = tex2D(_MainTex, IN.coord);
float3 forward = mul((float3x3)unity_CameraToWorld, float3(0,0,1));
if (dot(normalize(forward), normalize(-1*IN.normal)) < 0.55) {
c.rgb = float3(0,0,0);
} else {
c.rgb = float3(255,255,255);
}
float rand = frac(sin(dot(IN.position, _NoiseVector)) * 43758.5453);
if (rand < 0.03) {
if (c.r == 0) {
c.rgb = float3(255, 255, 255);
} else {
c.rgb = float3(0,0,0);
}
}
return c;
}
ENDCG
}
}
}