Realistic Snow Accumulation in Erosion Simulator

Published April 03, 2024
Advertisement

The last few days I added a simple approximation of snow accumulation to my full-scale planetary erosion simulator. It looks like this up close:

And far away:

The basic algorithm is similar to the “talus” or thermal weathering approach which I already use for ensuring that sediment does not exceed its angle of repose. The method was originally described in the 1989 SIGGRAPH paper “The Synthesis and Rendering of Eroded Fractal Terrains” by Musgrave et al.

The main idea of the thermal weathering method is to consider the difference between each pixel's elevation with its nearest neighbors (either 4 or 8). If the current pixel is significantly higher than a neighbor, then some fraction of the overage should be transferred to that neighbor. The threshold for transferring material depends on the tangent of the angle of repose of the material, which is usually around 30-35 degrees. Snow has an angle of repose of 38 degrees. When this method is applied iteratively it causes loose material to form piles with sides no steeper than the angle of repose.

This method can be applied to simulate how snow tends to accumulate in cracks of rocks. For instance, here is a real picture of the north face of Chomolungma (Mt. Everest for you colonizers).

Here, snow has precipitated and drifted into areas where the slope is not as steep. Various cracks and couloirs are highlighted with snow. Steep rocks are bare. We can create a similar effect by applying the thermal weathering method to a layer of snow that falls as the erosion simulation proceeds.

A key implementation detail is that the amount of snow that falls should be inversely related to the slope. This prevents too much snow from accumulating in places it shouldn't, and avoids needing a large number of iterations for the result to converge to stability. I calculate the gradient magnitude using a 3x3 Sobel filter and convert that to a scalar field that is 0.5 above the angle of repose, and interpolates linearly to 1 below the angle of repose. This is multiplied with the precipitation intensity to reduce the amount of precipitation.

Overall I'm mostly satisfied with the results. One possible extension is to include wind as a factor. I have already experimented with applying wind erosion to sediment. Maybe those ideas can be applied here to smooth out the snow bumps more.

The rock face from the second photo up close.
1 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement