Files
beyond/Assets/testy/Marcin/ToonTest/Shaders/ToonBasicOutline.shader
2024-11-20 15:21:28 +01:00

73 lines
1.9 KiB
Plaintext

Shader "Toon/Basic Outline"
{
Properties
{
_OutlineColor ("Outline Color", Color) = (0,0,0,1)
_Outline ("Outline width", Range (.002, 0.03)) = .005
}
SubShader
{
Tags { "RenderType"="Opaque" }
Cull Front
ZWrite On
ColorMask RGB
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
Name "OUTLINE"
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
CBUFFER_START(UnityPerMaterial)
float _Outline;
float4 _OutlineColor;
CBUFFER_END
struct Attributes
{
float4 positionOS : POSITION;
float3 normalOS : NORMAL;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct Varyings
{
float4 positionCS : SV_POSITION;
half fogCoord : TEXCOORD0;
half4 color : COLOR;
UNITY_VERTEX_OUTPUT_STEREO
};
Varyings vert(Attributes input)
{
Varyings output = (Varyings)0;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
input.positionOS.xyz += input.normalOS.xyz * _Outline;
VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz);
output.positionCS = vertexInput.positionCS;
output.color = _OutlineColor;
output.fogCoord = ComputeFogFactor(output.positionCS.z);
return output;
}
half4 frag(Varyings i) : SV_Target
{
i.color.rgb = MixFog(i.color.rgb, i.fogCoord);
return i.color;
}
ENDHLSL
}
}
}