Advice for high resolution sand material

I’m trying to replicate the sand (minus the waves for now) as seen in this picture:


But as a programmer with not a lot of material experience I’m having trouble getting anything even remotely close to that. The normal map seems like it would be the most important part of this material, given the sand itself is colored pretty consistently.

I was hoping someone could point me in the right direction (maybe a tutorial or a material that uses a relevant technique) of where i might learn to create a material that has the kind of fine details as seen in the photo.

I would probably approach this as two normal maps. One for the wavy pattern and another for the fine noise.

As a test you may even be able to get something remotely like that by using some normal maps from the starter content. If you take a water normal map and scale it along one axis, and then use another normal map from a very noisy concerete surface and add them together it may be a decent starting point. Then you can try scaling/replacing the different elements independently. I feel like extracting different elements into different layers gives you better control and more realistic results especially when the different layers use different tiling factors. For one this allows you to tile the fine grain normal more without noticing tiling artifacts, and use a larger scale for the wavy normal. It also helps since the compression artifacts exist in different frequencies, cancelling each other out a bit (more than if you had baked them together).

For making the fine noise from scratch, you pretty much need to experiment with varying degrees/frequencies of black and white noise converted into a normal map. If you have photoshop, try out the nvidia filter for converting heightmaps to normal maps. Sometimes you need to blur and overlay the same layer on top of itself to get the details to be captured nicely in the normals.

For the wavy part you could try using some crazy photoshop filters, but I would probably mess around with either worldmachine or zbrush or a combination of the two. You could also try tracing the patterns from a photo using some photoshop brushes after grabbing a piece of flattish ground and using the perspective or distort tools to ‘transform’ the piece flat and do the tiling manually.

For ‘adding’ the normals, the material function “BlendAngleCorrectedNormals” will give the highest quality result. It may be important if your wavy dune normal has very steep ridges. If they are shallow you can probably use a simple add as long as you ‘tone down’ the blue channel afterwards by multiplying by 1,1,0.5. Or you may opt to instead kill the blue channel entirely on the fine grain normal before adding to get more of the macro blue channel. Depends on the content you end up with.