Screen Space Curvature for better surface detail visualization (+implementation details)


Yesterday I bought new tablet (S7) specifically for Nomad. I absolutely love this app! I’ve been dreaming about this kind of experience for years. :slight_smile:

Current AO post-process works ok on renders but flickering and low resolution makes it super annoying while sculpting. I think Matcap rendering could be improved by adding curvature effect similar to other sculpting apps.

Few years ago I suggested adding same thing in Blender, my proposal was quite popular and feature was implemented by Lukas Stockner.

This effect is based on a trick that texture artists used to obtain Cavity maps long before programs like Substance Designer existed. It’s super cheap and can work real-time on any modern hardware. It’s not perfect but many people find it useful.
Implementation details are on Right-Click-Select page. Blender source for reference is located here.

I hope you like this idea. :slight_smile:


You can increase the main resolution in “Render resolution”.
SSR, AO and DOF always run at half the resolution of the main resolution.

I’m tempted to add an option to let the user change the resolution for SSR/AO/DOF but I’m not sure if I should add a single option or three different ones.

I already made a curvature feature but decided not to release it for now.
It was the same implementation than the one I did in Sketchab or SculptGL.
Maybe I’ll expose it at some point but nothing sure for now.


decided not to release it for now.

Oh. I hope you change your mind. I understand this effect is not pretty but I believe it’s extremely useful. It gives you a good preview of what the details will look like during texturing phase in other apps.

So far I like Blender implementation the most because of separate sliders for convex and concave areas. I often use screen space curvature for convex areas and combine it with SSAO for concave ones. Would be great to have this level of control in Nomad. Including convex SSAO in matcap rendering.


As for SSAO. The biggest problem is that this effect requires a lot of samples to give good results. Increasing screen resolution will not solve the flickering problem. Blender uses 32 samples for single frame and gives acceptable results but I’m sure that’s too much for mobile hardware.
I think this could be improved by using blue noise texture for sampling and animate it’s position when user interacts with Nomad (navigation, sculpting ect.). Kinda like temporal sampling but in user brain instead of GPU. :wink:

It does obviously, the difference between running the SSAO at native depth vs half depth is huge!
Much bigger difference than running everything at x2.0 (which is the only option in Nomad for now).

I tried with a test mesh in blender and the AO was rather subtle.
To get the same result in Nomad you need to set a very low strength and with high bias, which already reduce the visible annoyance.

There’s already dithering almost everywhere already.
But there is no temporal AA in Nomad, it’s one of the main reason why there is so much difference between moving and static.

Just to be clear for me it’s not a shader or technique issue, it’s a UX one.

I could easily increase the sample count AND the resolution, to match other softwares.
But then it would run like a potatoe (especially on Android devices…), so I want to make it optional.
But I prefer to think first before dropping multiple “resolution” and “sample count” sliders.

1 Like

I think we deviated from the main topic. It wasn’t about improving the quality of the AO, but about a completely different kind of effect. The Screen Space Curvature can be emulated with AO but it would require a absurd amount of samples (100 or more) and as you said - it would run like a potato.

I just want common post-process that bump-up small details like contour of clay stroke, edge of flatten stroke, alpha details ect. Screen Space Curvature is great for such kind of things and it’s super cheap (as opposed to SSAO).

So I am asking if you are willing to implement/restore this kind of post-process?

It’s a nice “wow” type effect, reminds me of the HDR effect in photos… I would suggest in case it gets implemented, maybe with a hint when it gets switched on educating new users “details may appear exaggerated using this effect” so they won’t be surprised that the exported 3D model appears too smooth :smiley:

Yes I’ll probably add it in the postprocess menu (at the bottom :stuck_out_tongue:).

Not sure yet if I’ll expose the top/bottom value slider (or 2 colors), I’ll see.

1 Like

Yes I’ll probably add it in the postprocess menu (at the bottom :stuck_out_tongue:).



“details may appear exaggerated using this effect”

When we added it to Blender people realized how crooked their sculpts are. :laughing: But that’s the point! With this post process you can control tiny details, sharp edges, surface noise ect.