110 lines
2.6 KiB
Plaintext
110 lines
2.6 KiB
Plaintext
|
|
Shader "URP/WhiteOutline"
|
|||
|
|
{
|
|||
|
|
Properties
|
|||
|
|
{
|
|||
|
|
_OutlineWidth("Outline Width", Range(0, 0.1)) = 0.00003
|
|||
|
|
_OutlineColor("Outline Color", Color) = (0, 0, 0, 1)
|
|||
|
|
_Color("Base Color", Color) = (1, 1, 1, 1)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
SubShader
|
|||
|
|
{
|
|||
|
|
Tags
|
|||
|
|
{
|
|||
|
|
"RenderType" = "Opaque"
|
|||
|
|
"RenderPipeline" = "UniversalPipeline"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Pass
|
|||
|
|
Pass
|
|||
|
|
{
|
|||
|
|
Name "Outline"
|
|||
|
|
Tags { "LightMode" = "SRPDefaultUnlit" }
|
|||
|
|
|
|||
|
|
Cull Front
|
|||
|
|
|
|||
|
|
HLSLPROGRAM
|
|||
|
|
#pragma vertex vert
|
|||
|
|
#pragma fragment frag
|
|||
|
|
|
|||
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|||
|
|
|
|||
|
|
struct Attributes
|
|||
|
|
{
|
|||
|
|
float4 positionOS : POSITION;
|
|||
|
|
float3 normalOS : NORMAL;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Varyings
|
|||
|
|
{
|
|||
|
|
float4 positionHCS : SV_POSITION;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
CBUFFER_START(UnityPerMaterial)
|
|||
|
|
float _OutlineWidth;
|
|||
|
|
float4 _OutlineColor;
|
|||
|
|
CBUFFER_END
|
|||
|
|
|
|||
|
|
Varyings vert(Attributes IN)
|
|||
|
|
{
|
|||
|
|
Varyings OUT;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
|
|||
|
|
float3 normalOS = normalize(IN.normalOS);
|
|||
|
|
float3 positionOS = IN.positionOS.xyz + normalOS * _OutlineWidth;
|
|||
|
|
|
|||
|
|
// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>ռ<EFBFBD>
|
|||
|
|
OUT.positionHCS = TransformObjectToHClip(positionOS);
|
|||
|
|
return OUT;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
half4 frag(Varyings IN) : SV_Target
|
|||
|
|
{
|
|||
|
|
return _OutlineColor;
|
|||
|
|
}
|
|||
|
|
ENDHLSL
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ɫPass
|
|||
|
|
Pass
|
|||
|
|
{
|
|||
|
|
Name "ForwardLit"
|
|||
|
|
Tags { "LightMode" = "UniversalForward" }
|
|||
|
|
|
|||
|
|
Cull Back
|
|||
|
|
|
|||
|
|
HLSLPROGRAM
|
|||
|
|
#pragma vertex vert
|
|||
|
|
#pragma fragment frag
|
|||
|
|
|
|||
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|||
|
|
|
|||
|
|
struct Attributes
|
|||
|
|
{
|
|||
|
|
float4 positionOS : POSITION;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Varyings
|
|||
|
|
{
|
|||
|
|
float4 positionHCS : SV_POSITION;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
CBUFFER_START(UnityPerMaterial)
|
|||
|
|
float4 _Color;
|
|||
|
|
CBUFFER_END
|
|||
|
|
|
|||
|
|
Varyings vert(Attributes IN)
|
|||
|
|
{
|
|||
|
|
Varyings OUT;
|
|||
|
|
OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);
|
|||
|
|
return OUT;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
half4 frag(Varyings IN) : SV_Target
|
|||
|
|
{
|
|||
|
|
return _Color;
|
|||
|
|
}
|
|||
|
|
ENDHLSL
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|