基于Unity2021版本URP的Render Feature进行Outline的一种方法

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

首先准备两个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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值