I am still new to Blender. I created this to test my understanding of using nodes rather than using buttons.
I created the table and dropped a cloth onto it, using a cloth simulation tutorial as a guide. The result came out looking a bit like satin but not really very realistic.
I then changed the material of the cloth to a generated texture rather than UV unwrapping what is effectively just a plane. The texture was a plain fabric texture and I added in a “Multiply” node to give some displacement, using a bit of a tutorial which created a wooden table top as a guide. This was much better but I had seen how powerful using the nodes can be so I decided to experiment. With this second render, the image on the cloth and the displacement both came from the same image. I decided to change this so that the displacement still came from the plain fabric texture but the image did not.
In the node editor I duplicated the Texture Coordinate, Mapping and Image Texture nodes, changed the scaling and image texture and then plugged the ones for the image into the Diffuse BSDF node and the ones for the texture into the Mutliply node.
I deliberately overdid the displacement just so I could be sure that it had worked correctly, so I ended up with what looks like an image printed onto rough linen or white denim. The image itself is just something I knocked up very quickly in GIMP and made seamless just so I had something completely different from the image I was using for the texture.
I am sure that somewhere on the internet there is probably a tutorial about how to do this but I worked it out for myself and then looked at what I’d done and thought, “Wow! I did that!”
The attached image is part of the render, saved as a JPG so that I could get it to upload (I think there is a file-size limit for those of us who haven’t posted enough to these forums). If I had uploaded a smaller version of the whole image it would have been more difficult to see the cloth texture on which the image is “printed”.