URP : custom post processing

Hello all,
hope all is well,

this is a message someone has sent me, who is helping me work on a volumetric shader,
is his comment valid about the URP?

"I tried to re-write the Ocean.shader in URP and I managed to make it work, but if I apply it to the custom post processing effects of the camera it doesnt’ work. It seems that the custom post processing effect are not supported in URP, so you can’t use that post processing with that shader."

we we’re working on converting this ocean shader to the urp.

[ref: https://github.com/SebLague/Solar-SystemPlanetEffects]
[ref: Solar-System/Assets/Scripts/Celestial/Shaders/PostProcessing/OceanEffect.shader at 0c60882be69b8e96d6660c28405b9d19caee76d5 · SebLague/Solar-System · GitHub]
[ref: Solar-System/Assets/Scripts/Post Processing/Planet Effects/PlanetEffects.cs at 0c60882be69b8e96d6660c28405b9d19caee76d5 · SebLague/Solar-System · GitHub]

would there be a reason why this is not possible?

[ref:

]

The shader works fine. Just that most of the built-in Monobehaviour hooks are not available.
You probably need to reimplement the PostProcessing scripts as RenderPasses/RenderFeatures.
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.2/manual/universalrp-builtin-feature-comparison.html

1 Like

Sorry to necro this thread. Did you get anywhere converting the shader to URP?

RenderFeatures dont have the blending volume capabilities out of the box that PPv2 had. Is there really no built in custom volume support for post processing in URP? Seems like Unity is really dropping the ball over and over here.

Try this https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.1/manual/integration-with-post-processing.html

That wasn’t the point. Point was that you can’t create your own custom PP with URP’s built-in postprocessing as it’s currently unsupported. Unity has been working on adding support for this but it’s not done yet. Only way to do custom screenspace effects with URP today is to use Renderer Features - which cannot be blended by volumes.

This card on URP productboard is marked as “in progress”: https://portal.productboard.com/unity/1-unity-platform-rendering-visual-effects/c/37-post-processing-custom-effects

I did find an ok-ish solution.

  • Create your custom Volume, by making a class inheriting from VolumeComponent and implementing IPostProcessComponent.
  • Have a RenderFeature attached to the Renderer for your camera. Your RenderFeature can sample from any data from the already blended volume data. Like this: var settings = VolumeManager.instance.stack.GetComponent();
  • Using that data, you can do whatever you need inside the RenderFeature.

It’s cumbersome but it’s possible. I just wish this was documented fully somewhere.

1 Like