首先准备两个Shader,第一个用于产生Stencil,第二个用于产生模型对外挤出的渲染,同时,挤出渲染过程中利用第一个shader产生的Stencil将内部留空,这样就产生了Outline勾边效果。
这两个Shader在前面已经有了,为了方便查看这里再贴出来一下。
首先是用于产生Stencil的Shader:
Shader "Unlit/PureStencil"
{
Properties
{
[IntRange]_StencilID("Stencil ID", Range(0,255)) = 1
}
SubShader
{
Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" "Queue" = "Geometry"}
Pass
{
Blend Zero One
ZWrite Off
Stencil
{
Ref [_StencilID]
Comp Always
Pass Replace
Fail Keep
}
}
}
}
其次是用于产生挤出的Shader:
Shader "Unlit/PureExtrude"
{
Properties
{
_OutlineColor("Outline Color",Color) = (1,0.5,0,0.5)
_Outline("Outline",Range(0,1)) = 0.1
}
SubShader
{
Tags { "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline"}
Pass
{
Cull Off
ZTest LEqual
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
HLSLPROGRAM
#pragma verte

本文介绍如何在Unity中利用两个自定义Shader——Stencil用于创建蒙版,Outline用于模型边缘渲染,通过设置RenderObjects和覆盖材质,实现精确的Outline效果。讲解了Shader配置和RenderFeature参数设置的详细步骤。

2559

被折叠的 条评论
为什么被折叠?



