Files
SampleRenderPasses/Assets/Shaders/SolidUnlit.shader
2025-05-18 22:39:39 +03:00

75 lines
1.8 KiB
Plaintext

Shader "Outline/SolidUnlit"
{
SubShader
{
Tags { "RenderType" = "TransparentCutout" }
ZWrite Off
ZTest LEqual
Lighting Off
// Set up alpha blending
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f
{
float4 vertex : SV_POSITION;
float4 projPos : TEXCOORD0;
float2 convertedNormal : TEXCOORD1;
};
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.projPos = ComputeScreenPos(o.vertex);
COMPUTE_EYEDEPTH(o.projPos.z);
//o.viewNormal = COMPUTE_VIEW_NORMAL;
// work out camera position to vert position
float3 normalDir = UnityObjectToWorldNormal(v.normal);
float3 viewDir = normalize(WorldSpaceViewDir(v.vertex));
float3 upDir = float3(0.0, 1.0, 0.0);
float3 rightDir = normalize(cross(viewDir, upDir));
upDir = cross(rightDir, viewDir);
o.convertedNormal.x = dot(rightDir, normalDir);
o.convertedNormal.y = dot(upDir, normalDir);
return o;
}
float4 _Color;
float _Alpha;
fixed4 frag(v2f i) : COLOR0
{
fixed4 output = _Color;
output.a = output.a * _Alpha;
clip((output.a - 0));
return output;
}
ENDCG
}
}
}