Gimp 2.10 Version (best done on a 32-bit image to avoid some bump-mapping artifacts):
- Create/import the surface layer and duplicate it
- Make sure the top version has an alpha-channel
- Create the text layer in black and duplicate it. Hide one of the duplicates
- Fill the background of the text layer with grey 50% (#808080): paint in behind mode, or merge into a layer filled with gray. Hide or move to bottom of stack
- Filter ➤ Blur ➤ Gaussian blur and blur the characters about one fourth/one third (in other words, about a third of the character should remain un-blurred (pure black) where the lines are the thickest)
- Activate the top surface layer
- Filter ➤ Map ➤ Bump map and increase the depth.
- At that point this could be enough for your purposes. If you want something that looks deeper, continue.
- On the copy of the text layer: Layer ➤ Transparency ➤ Alpha to selection
- Select ➤ Shrink the selection so that its edge is half-way through the shadows created by the bump-mapping
- Select ➤ Feather the selection by the width of the same shadows
- Activate the top surface layer and Edit ➤ Clear to make fuzzy holes
- Filters ➤ Light and Shadows ➤ Drop shadow. Increase opacity to match the shadow created by the bump mapping, and possibly grow the shadow a bit
- If using a non-uniform surface you can slightly alter the bottom copy bit to make it look more natural: shift it, rotate it, distort (ripple)...