ARK.KRA - Screen Space Bevel

| DOCUMENTATION |

Screen Space Bevel is a global shader that modifies GBuffer normals in screen space to create soft beveled edges without editing geometry.
By adjusting surface normals at the render stage, it introduces subtle curvature on sharp edges, improving how materials interact with light and reflections.
This results in smoother specular transitions, more defined highlights, and a less “flat” appearance across hard-surface assets, all without increasing polygon count or altering UVs.

Efficient and lightweight (~0.5ms at 1080p), suitable for both realistic and stylized rendering.

1 Like

Seems cool. What about optimization ?

Runs at around ~0.5ms at 1080p, though performance depends on your resolution, GPU, and plugin settings. All optimization methods are described in the documentation if you’d like to tweak it for your pipeline.

1 Like

Very interesting, btw can you make public demo with UI for testing ?

Works perfectly, I’d love to have a feature to exclude certain actors.

1 Like

Thanks! Glad you liked it! I’ll try to add a way to include or exclude specific meshes in the next update, but if it’s a bit tricky it might come a little later.

1 Like

Thank you!

Would this work for mobile forward renderer? I am developing for Meta quest 2/3.

Nope, this won’t work. It relies entirely on the G-Buffer, so it’s strictly for Deferred Rendering.
Plus, the render cost would likely cause too much latency for a smooth VR experience.

Hi! I bought the plugin, but unfortunately I didn’t realize right away that it doesn’t work with version 5.7, does it? :frowning: That’s really disappointing, because the plugin is really great :blush:.

Do you plan to release an update to support version 5.7? :backhand_index_pointing_right: :backhand_index_pointing_left:

Hi! Actually it is capable of working with 5.7, I just haven’t had a chance to port it over yet.
I’ll get on that right away so expect an update in the next few days.

Thanks so much for the support and for buying the plugin!

1 Like

Thank you so much! We’re really looking forward to it :blush:

1 Like

Hi, this shader looks very interesting. I’m planning to use it for cinematics. Could you share some examples of how it works on textured PBR objects? I’m especially interested in how the shader behaves on edges when the object already has textures and materials applied.

Hi!

Sure thing, I’ve attached a couple of examples below with different settings.

I used pretty extreme settings so you could spot any potential artifacts in a worst case scenario.

As you can see, the main issues at these extreme settings are normal bleeding onto adjacent surfaces and some blurring of texture normals on sharp edges. However, I would not say it is particularly noticeable even in this case.

For a more detailed comparison, here is how it looks in the normal pass:

This comparison uses the same extreme values for Radius and Strength. Only the Threshold was adjusted. I wanted to show that you can significantly reduce this issue by fine tuning the parameters.

Based on my tests, the shader is totally stable in every other aspect. It’s completely solid in the frame, noise free, and doesn’t require any temporal approximation. But I should mention right away that the shader is mainly meant for a bit of final frame polish. It is not designed to be a full replacement for geometric bevels.

1 Like

Hi,

unfortunately it is not working for me in 5.7. I am only getting big aliased edges around the objects that use the SSBevel. How can we fix this?

thanks,
Joe

Hi,

Whoa that definitely shouldn’t be happening. Sorry for the trouble.
I am going to look into this but I need a bit more detail from you to figure out what is going on.

Does setting r.SSBevel.UseCustomDepthMask to 1 trigger this?
If so does everything look normal when it is turned off?

Are you using any other global shaders in the project besides SSBevel?
If you are please try disabling them or testing the plugin in a clean project to see if there is a conflict.

Also just to clarify are you using temporal anti aliasing like TSR or TAA or DLSS?
If you are please try testing with these console commands:

  • r.ScreenPercentage 100

  • r.AntiAliasingMethod 2 or 0

  • r.CustomDepthTemporalAAJitter 1

One more thing: do you see those aliased edges in the World Normal view mode too or do they disappear there?

This information will help me a lot! I suspect it might be caused by the RDG API pipeline changes in UE 5.7 which might be making the Custom Depth mask bleed into the normal pass or it could be an issue with temporal anti aliasing.

I will do my best to fix this in the next patch. Sorry again for the hassle!

Hi,

I figured it out! :slight_smile:

The new Substrate GBuffer Setting “Adaptive GBuffer” is messing it up. When I switch this value to “Blendable GBuffer”, it works!

…it would be cool though if the bevel would also work with the adaptive gbuffer setting.

best,
Joe