Can I use shader graph to make text look engraved or cut into stone?

I have a sign in my game, and I’m toying with the idea of using a 3D text mesh to do the text on it. However, the text looks like computer text. Any ideas how I can make it look like part of the rock surface? Perhaps with shader graph?

I’m assuming I can, but I can’t really find tutorials for this online.

TextMeshPro shaders are quite similar to regular (unlit) shaders. So a shader graph would work yes.
If the text doesn’t change decals also might be nice

Thank you. Any ideas where I might get a tutorial on that? Text Shader tutorials are turning out to be hard to find.

Just look at shader graph tutorials.
It’s just quads with textures on them

Is that why it took 4 years to convert them?

What do you mean?

It took ~4 years for the creator of TMP to complete the conversion of his shaders to SRP.

If they’re quite similar, why’d it take so long?

Thanks, though I’ve been trying quite a bit.

It’s not easy, but the good news is, using TMP, you don’t need to modify the shaders, only get tricky with TMP settings:

Maybe you could provide the settings recipe for that image.

Edit: Here you go, this is most of it. The trickiest part was selecting a TMP shader which supports that image texture; the default is the Mobile variant which does not have a spot for texture. It’s disappointing that the texture stretches for each glyph’s extent, see the ‘dot’ and narrow digit ‘1’ in my sample. I think you used two copies of TMP to achieve the outer bevel?

Set Horizontal Mapping to Word or Line, to fix that, and then you’ll need to change the Tiling value to something right for that width.

The Lighting section is where the bevels are made.

And a tiny bit of Glow on the outer edge to make a little bit of “pop” or “lift”.

Thanks for the mapping tip.

I tried Lighting and Glow, but couldn’t quite get the outer edge to look the same as yours.

Probably needs a much heavier font. Not sure I could get any/much sense of depth on a thin font like that, either.

Thanks a lot! I’ll try it out.

With my asset Text Decal, you can project TextMeshPro text as a decal in URP and generate normals directly. This allows the text to appear either engraved into or raised from the surface — all out of the box — while still supporting runtime updates and URP rendering layers.

Here’s a demo of the effect in action:

If you’re interested in dynamic text decals, the asset is now available on the Unity Asset Store: Text Decal

Key features:
:white_check_mark: Projects TextMeshPro text onto any surface as a decal
:white_check_mark: Fully compatible with URP, including integration with the URP decal renderer
:white_check_mark: Text can be updated at runtime — supports fonts, styles, and strings
:white_check_mark: Optimized for performance to minimize draw calls and handle projection correctly

That’s pretty cool! If I was in URP I would absolutely use that.

Do you have one for HDRP?

Thanks! HDRP is not supported yet — I focused on URP first since most requests came from there. But HDRP support is definitely on my roadmap, I’ll experiment with it and let you know once I have progress!