Unity3D URP 仿蜘蛛侠风格化Bloom&AO
本篇文章介绍在URP中如何进行风格化后处理,使用Renderer Feather 和自定义 Render Pass 实现。这种做法比起使用PostProcessing具有很大的自由度,能够自由控制渲染时机,减少束缚。
本教程使用Unity2022.3.5f1 版本。较低版本Shader Graph 没有Full Screen Sample Buffer。
以下两张图是蜘蛛侠动画剧照,高光Bloom部分很多是点阵的方式表现,一些AO使用混合平行斜线来表现。


类似的卡通渲染方案也被游戏 HiFi Rush 所使用。

Bloom
Bloom效果流程:
先制作Bloom效果,将Bloom渲染到一张Texture上,再将这个Texture通过我们的风格化Shader最后渲染到屏幕上
原始Bloom基本参照Unity的做法,在Packages/com.unity.render-pipelines.core/Runtime 文件夹中可找到相关代码
制作控制面板VolumeComponent.CS
- 直接复制Unity Bloom需要的控制参数。
- 添加我们风格化点阵需要的控制参数。
[VolumeComponentMenuForRenderPipeline("CustomBloomEffect", typeof(UniversalRenderPipeline))]
public class CustomBloomEffectComponent : VolumeComponent, IPostProcessComponent
{
//bloom settings copy from Unity default Bloom
[Header("Bloom Settings")]
public FloatParameter threshold = new FloatParameter(0.9f,true);
public FloatParameter intensity = new FloatParameter(1,true);
public ClampedFloatParameter scatter = new ClampedFloatParameter(0.7f,0,1,true);
public IntParameter clamp = new IntParameter(65472,true);
public ClampedIntParameter maxIterations = new ClampedIntParameter(6,0,10);
public NoInterpColorParameter tint = new NoInterpColorParameter(Color.white);
//Custom Bloom Dots
[Header("Dots")]
public IntParameter dotsDensity = new IntParameter(10,true);
public ClampedFloatParameter dotsCutoff = new ClampedFloatParameter(0.4f,0,1, true);
public Vector2Parameter scrollDirection = new Vector2Parameter(new Vector2());
[Header("AOLines")]
public ClampedFloatParameter linesWidth = new ClampedFloatParameter(0.001f,0.001f,0.01f, true</

本文介绍了如何在Unity2022.3.5f1的URP中使用RendererFeather和自定义RenderPass实现Bloom和AO的风格化处理,包括Bloom效果的制作流程和如何在ShaderGraph中结合CompositeShader进行渲染。

4152

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



