Skip to content

boulders

Boulders scattered over the ground from a size distribution, in patches and around fresh craters, as relief or 3D models.

Key Type Default Range Unit Description
coverage number 0.02 (0, 1) Golombek-Rapp k, the fraction of the ground covered by boulders, between 0 and 1; used with golombek_rapp sizes, where higher values give more boulders.
qa number 1.79 1/m Constant term of the Golombek-Rapp q = qa + qb / k, per metre; a larger q leaves fewer large boulders. Also used for golombek_rapp ejecta.
qb number 0.152 1/m Term of the Golombek-Rapp q = qa + qb / k divided by the coverage k, per metre.
min_diameter number 0.1 (0, inf) m Smallest boulder generated, in metres; lower values add many more small boulders.
max_diameter number 4.0 (0, inf) m Largest boulder generated, in metres, exclusive; above the smallest.
sizes boulder sizes {"type": "golombek_rapp", ...} Size distribution of the boulders between craters, per m^2; patches and bedrock scale its density.
seed integer 1 Seed of the boulders, their attributes and the patches; changing it gives a different boulder field of the same statistics.
ejecta_sizes boulder sizes {"type": "golombek_rapp", ...} Size distribution of the blocks at the rim of a fresh crater, per m^2; golombek_rapp uses the ejecta's coverage with qa and qb.
extrapolate boolean false Lets the size distributions be evaluated outside their valid diameters, such as beyond a table's published ones; otherwise they must cover the boulder sizes.
bedrock_abundance number 3.0 (0, inf) Boulder abundance on bedrock over that on soil, and in between in proportion; used with the exposure field.
exposure_spacing number 1.0 (0, inf) m Spacing in metres the ground is read at for the exposure field, fixed so that which boulders exist does not depend on the level of detail.
bedrock_mean_size number 1000.0 (0, inf) m With a density map, the side in metres of the squares bedrock is held to the map's mean over, so it gathers boulders without adding any; a GeoTIFF map uses its own cells.
min_height_ratio number 0.4 (0, inf) Smallest boulder height over diameter; each boulder's is drawn uniformly between the two ratios.
max_height_ratio number 0.6 (0, inf) Largest boulder height over diameter; at least the smallest.
min_burial number 0.1 [0, 1) Smallest buried share of a boulder's height; each boulder's is drawn uniformly between the two shares.
max_burial number 0.4 [0, 1) Largest buried share of a boulder's height, below 1; more burial leaves less of the boulder exposed.
max_lean number 0.26 [0, inf) rad Largest tilt of a boulder from the vertical, in radians.
side_share number 0.0 [0, 1] Share of boulders resting on a side, their intermediate axis up, rather than on their broadest face.
end_share number 0.0 [0, 1] Share of boulders standing on an end, their long axis up; with side_share, at most 1.
max_tilt number 0.0 [0, 3.14159] rad Largest tilt of a boulder's up axis from the vertical in a random direction, after its lean, in radians; tilts are spread evenly over that cap of directions.
follow_slope boolean false Settles each boulder on the slope of the ground beneath it before its tilt.
settle boolean true Tips each boulder model over until it rests stably on a face, its centre of mass over what it stands on, rather than balanced on an edge or corner.
max_slope number, optional null (0, 1.5708) rad Steepest ground, across a boulder's diameter, that boulders stay on, in radians; steeper ground has none, models and drawn boulders alike. Unset keeps boulders on any slope.
roll_distance number, optional null (0, inf) m With max_slope, boulders on steeper ground roll down it and rest where it is gentle enough, gathering at the foot of slopes; those that would roll farther than this many metres are left out. Unset leaves out every boulder on steeper ground.
burial_by_wear number 0.0 [0, 1] How far wear sets burial, from 0 to 1: blocks of fresh craters sit near the smallest burial and those of worn ones sink toward the largest, while boulders between craters span every stage; 0 draws burial uniformly.
relief one of dome, shape, none "dome" How the boulders drawn into the heights look there.
shape_files list of string [] Rock meshes (.obj with its .mtl, .gltf or .glb) the boulder shapes are drawn from instead of the procedural styles, each boulder picking one by its shape seed; paths relative to the configuration. Empty keeps the procedural shapes.
shape_prototypes integer 64 How many shapes the boulders share, so they can be drawn as instances; 0 gives every boulder a shape of its own.
patches: Patches of richer and poorer boulder cover across the ground.
Key Type Default Range Unit Description
spread number 1.0 [1, inf) Boulder abundance varies from 1 / spread to spread times its mean, at least 1; 1 is the same everywhere.
size number 200.0 (0, inf) m Typical width of a patch of richer or poorer boulder cover, in metres.
clusters: Clusters of the boulders between craters around scattered centres; off unless share is set.
Key Type Default Range Unit Description
share number 0.0 [0, 1] Share of the boulders between craters gathered in clusters, from 0 to 1; 0 leaves them scattered.
spacing number 50.0 (0, inf) m Typical distance between cluster centres, in metres; with thomas, one centre per spacing squared on average.
radius number 5.0 (0, inf) m Gaussian radius of a cluster, in metres; below the spacing with nearest, at most twice it with thomas.
model one of nearest, thomas "nearest" How cluster centres are laid out and their clusters combine.
ejecta: Blocks thrown out by craters of the nearest crater layer before this one that dug into boulder, densest at the rim and thinning outward.
Key Type Default Range Unit Description
min_crater_diameter number 0.0 [0, inf) m Smallest crater, in metres, that throws blocks out; 0 with no regolith thickness disables crater blocks.
regolith_thickness number, optional null (0, inf) m Regolith thickness in metres: craters smaller than it over the excavation depth ratio dig no boulder and throw no blocks. Unset ignores the regolith.
excavation_depth_ratio number 0.1 (0, 1] Depth of excavation over crater diameter, in (0, 1]; with the regolith thickness it sets the smallest crater that throws blocks.
coverage number 0.1 (0, 1) Golombek-Rapp k, the fraction of ground covered by blocks at the rim of a fresh crater, between 0 and 1; used with golombek_rapp ejecta sizes.
profile one of smoothstep, exponential "smoothstep" How the share of a crater's blocks falls off with distance from its centre.
reach number 3.0 (1, inf) Distance from the crater's centre, in crater radii, beyond which it adds no blocks; over 1.
decay_radii number 0.7 (0, inf) With the exponential profile, the e-folding distance of the blocks outside the rim, in crater radii.
floor_share number 0.05 [0, 1] With the exponential profile, the crater floor's share of the rim's blocks, from 0 to 1.
aging one of freshness, age "freshness" How a crater's blocks wear away with time, so that few are left around old craters.
min_freshness number 0.7 [0, 1) With freshness aging, the freshness (current over fresh depth) at or below which a crater keeps no blocks; from 0 to below 1.
lifetime_gyr number 4.0 (0, inf) Gyr With age aging, the crater age in Gyr at which a crater keeps no blocks.
aging_exponent number 3.0 [0, inf) With age aging, the exponent of (1 - age / lifetime); higher values strip blocks from craters sooner.
gravity number, optional null (0, inf) Surface gravity in m/s^2: with the regolith thickness, it limits how far blocks are thrown, after Bart and Melosh (2010). Unset applies no such limit.
exposure: Raises the abundance of boulders where the ground beneath is bedrock, judged from its shape; unset disables it.
Key Type Default Range Unit Description
reach number 12.0 (0, inf) m Distance in metres around a point at which its surroundings are read, to tell rises from lows.
rise_soil number 0.01 Height above the surroundings, as a share of the reach, at or below which the ground is soil.
rise_boulder number 0.035 Height above the surroundings, as a share of the reach, at or above which the ground is bedrock; above the soil threshold.
slope_soil number 0.2 Slope, as rise over run, at or under which soil holds.
slope_boulder number 0.4 Slope, as rise over run, at or over which no soil holds and the ground is bedrock; above the soil threshold.
floor_cover number 0.0 [0, 1) Share of level ground that is bedrock too, in noise patches, as on a swept lava floor; from 0 to below 1, and 0 for none.
floor_patch number 60.0 (0, inf) m Width of the bedrock patches on level ground, in metres.
seed integer 0 Seed of the bedrock patches on level ground.
fillet: Regolith piled against each boulder's base, around relief and models alike; off unless height_share is set.
Key Type Default Range Unit Description
height_share number 0.0 [0, 1] Height of the regolith piled against a boulder, as a share of its exposed height, from 0 to 1; 0 draws no fillets.
width_ratio number 0.3 (0, inf) How far the fillet reaches beyond the boulder's edge, over its diameter; it falls to nothing there.
ventifacts: Windward facets planed on boulders by sand-laden wind, from wear; off unless share is set.
Key Type Default Range Unit Description
share number 0.0 [0, 1] Share of boulders with a windward facet planed by sand-laden wind, from 0 to 1; 0 for none. Gale crater: 0.39 (Bridges et al. 2014).
wind_azimuth number 0.0 rad Where the abrading wind blows toward, in radians counter-clockwise from east; facets face the other way.
min_angle number 0.8726646259971648 (0, 1.5708) rad Gentlest facet slope from horizontal, in radians; 50 to 60 deg on basalt (Laity and Bridges 2009).
max_angle number 1.0471975511965976 (0, 1.5708) rad Steepest facet slope from horizontal, in radians.
second_wind_azimuth number, optional null rad A second abrading wind, where it blows toward, in radians; some faceted boulders get a second facet facing it and a keel between. Unset for none.
keel_share number 0.0 [0, 1] Share of faceted boulders with the second facet, from 0 to 1. Gale crater: 12 of 39 (Bridges et al. 2014).
fragmentation: Boulders broken by wear into pieces that replace them, split and then scattered as rubble; off unless split_wear is below 1.
Key Type Default Range Unit Description
min_diameter number 1.0 (0, inf) m Smallest boulder that breaks, in metres.
split_wear number 1.0 [0, 1] Wear from 0 (fresh) to 1 from which boulders split into pieces that still fit; 1 breaks nothing.
rubble_wear number 1.0 [0, 1] Wear from which the pieces scatter as rubble, turn and sink; at least split_wear.
min_pieces integer 2 [2, 12] Fewest pieces a boulder breaks into, at least 2.
max_pieces integer 5 [2, 12] Most pieces a boulder breaks into, at most 12.
gap_ratio number 0.04 [0, inf) Widest crack between split pieces, as a share of the boulder's diameter.
spread_ratio number 0.6 [0, inf) How far rubble scatters beyond the cracks, as a share of the boulder's diameter.
slab_share number 0.7 [0, 1] Share of broken boulders split by roughly parallel cracks right through them; the rest crack out from the middle.
models: Which boulders become 3D models of their own rather than relief in the heights; neither threshold set means no models.
Key Type Default Range Unit Description
min_diameter number, optional null (0, inf) m Boulders at least this many metres across become 3D models; unset applies no diameter threshold.
min_samples number, optional null (0, inf) Boulders spanning at least this many samples at the spacing evaluated become 3D models, so finer levels of detail make more of them; unset applies no such threshold.
max_diameter number, optional null (0, inf) m Boulders this many metres across or wider are not models, keeping a band of sizes as models; unset applies no upper limit.
max_samples number, optional null (0, inf) Boulders spanning this many samples or more are not models; unset applies no such limit.
relief_range: Which boulders are drawn into the heights by diameter: none below min_diameter or from max_diameter, and models only when asked.
Key Type Default Range Unit Description
min_diameter number 0.0 [0, inf) m Smallest boulder drawn into the heights, in metres; smaller ones stay in the lists only, for the renderer's surface detail.
max_diameter number, optional null (0, inf) m Boulders this many metres across or wider are not drawn into the heights; unset applies no upper limit.
models boolean false Draws the 3D model boulders into the heights as well, as a stand-in for far views.
shapes: The boulders' 3D boulder shapes, used by shape relief and by models.
Key Type Default Range Unit Description
subdivisions integer 3 [0, 6] Times the solid's triangles are split in four, 0 to 6; more give finer, smoother shapes with more triangles.
weathering number 1.0 [0, inf) Scales every style's edge softness: 0 gives sharp edges, 1 the styles' own, more is more worn.
seed integer 0 Seed the shapes are drawn with, along with each shape's own seed; changing it reshapes every boulder.
styles[]: Kinds of boulder each shape is drawn from, picked by weight; at least one.
Key Type Default Range Unit Description
name string "" Label of the style, for reference; it does not change the shapes.
weight number 1.0 [0, inf) Relative share of boulders given this style, not negative; the styles' weights must not all be 0.
solid one of icosahedron, cube, pyramid, prism, tetrahedron "icosahedron" Solid the shape starts from, before it is stretched, rounded, roughened and fractured.
min_fractures integer 0 [0, 64] Fewest flat fracture planes cutting a boulder, from 0; each boulder's count is drawn between the two.
max_fractures integer 0 [0, 64] Most flat fracture planes cutting a boulder, at most 64 and at least the fewest.
max_fracture_tilt number 1.0 [0, 1] Largest vertical component of a fracture plane's unit normal, from 0 to 1: 0 keeps normals horizontal, cutting a slab about its rim only.
noise_amplitude number 0.05 [0, 1) Largest relative change of the radius by the roughening noise, in [0, 1); 0 leaves the surface unroughened.
noise_wavelength number 0.6 (0, inf) Wavelength of the roughening noise's first octave, in long-axis lengths; positive, with smaller values giving finer bumps.
noise_octaves integer 3 [1, 12] Octaves of the roughening noise, 1 to 12, each halving in wavelength; more add finer detail.
face_roughness number 0.0 [0, 0.5] How far fracture faces undulate, as a share of each plane's offset from 0 to 0.5; 0 keeps them flat.
intermediate: Range of the intermediate axis over the long one, b / a, within (0, 1]; lower values give more elongated boulders.
Key Type Default Range Unit Description
min number 0.0 Lower end of the interval the value is drawn uniformly from.
max number 0.0 Upper end of the interval the value is drawn uniformly from.
short_axis: Range of the short, vertical axis over the long one, c / a, within (0, 1] and at most the intermediate ratio; lower values give flatter boulders.
Key Type Default Range Unit Description
min number 0.0 Lower end of the interval the value is drawn uniformly from.
max number 0.0 Upper end of the interval the value is drawn uniformly from.
rounding: Range of the share, from 0 to 1, by which the shape is rounded toward the ellipsoid of its axes: 0 keeps the solid's edges and corners, 1 is the ellipsoid.
Key Type Default Range Unit Description
min number 0.0 Lower end of the interval the value is drawn uniformly from.
max number 0.0 Upper end of the interval the value is drawn uniformly from.
fracture_depth: Range of where each fracture plane lies, as a share of the shape's reach along its normal, within (0, 1]; lower values cut more away.
Key Type Default Range Unit Description
min number 0.0 Lower end of the interval the value is drawn uniformly from.
max number 0.0 Upper end of the interval the value is drawn uniformly from.
edge_softness: Range of how far edges and corners are worn back where faces meet, as weathering rounds them, in long-axis lengths from 0 to 0.5; 0 keeps them sharp.
Key Type Default Range Unit Description
min number 0.0 Lower end of the interval the value is drawn uniformly from.
max number 0.0 Upper end of the interval the value is drawn uniformly from.
density_map: Map that sets the abundance of boulders between craters point by point, scaling the sizes to what it measures; unset keeps the abundance the sizes set everywhere.
Key Type Default Range Unit Description
measure one of scale, count, areal_fraction "scale" What the map's values measure.
min_diameter number 0.0 m Smallest diameter the map measures, in metres; positive for a count or areal fraction.
max_diameter number, optional null m Largest diameter the map measures, in metres, exclusive; unset for no limit.
area_unit number 1.0 (0, inf) m^2 Square metres per area unit of a count: 1 for per m^2, 1e6 for per km^2.
total boolean true The map counts every feature of its kind, including the secondaries thrown from a crater layer's craters and the boulders a layer throws out around craters, which are taken out of it first; off when it counts only what the layer generates.
field: The map.
Key Type Default Range Unit Description
path string "" GeoTIFF read in the surface's coordinates, relative to the configuration's folder: metres on a plane, longitude and latitude in degrees on a sphere. Empty uses value.
value number 0.0 The field everywhere when no path is given.
band integer 0 Band of the GeoTIFF read, from 0.
method one of nearest, bilinear, cubic "bilinear" How the GeoTIFF is interpolated: nearest or bilinear, which stay within the cells read.
scale number 1.0 (0, inf) Multiplies every cell, such as 0.001 for a map stored in thousandths; positive.
fallback number, optional null Value outside the GeoTIFF and where its cells are no-data or NaN; unset leaves none, and the layer then keeps its own setting there.
periodic_longitude boolean false The GeoTIFF's x is longitude repeating every 360 degrees, so a map from 0 to 360 serves -180 to 180.
slope_map: Map of how steeply boulder counts fall with size, such as a mean diameter map, bending the sizes into a local power law through their count at its reference diameter; needs a size distribution. Unset keeps the sizes' shape everywhere.
Key Type Default Range Unit Description
measure one of exponent, mean_diameter "exponent" What the map's values measure.
reference_diameter number 1.0 (0, inf) m Diameter D0 in metres where the local power law meets the layer's own count, as N(>=D) = N(>=D0) (D / D0)^-alpha; for a mean diameter map, the smallest diameter averaged.
min_exponent number 1.0 (0, inf) Smallest exponent alpha the map's values are clamped to; with the largest it bounds the boulders drawn, so generous bounds draw more to thin.
max_exponent number 6.0 (0, inf) Largest exponent alpha the map's values are clamped to; above the smallest.
field: The map.
Key Type Default Range Unit Description
path string "" GeoTIFF read in the surface's coordinates, relative to the configuration's folder: metres on a plane, longitude and latitude in degrees on a sphere. Empty uses value.
value number 0.0 The field everywhere when no path is given.
band integer 0 Band of the GeoTIFF read, from 0.
method one of nearest, bilinear, cubic "bilinear" How the GeoTIFF is interpolated: nearest or bilinear, which stay within the cells read.
scale number 1.0 (0, inf) Multiplies every cell, such as 0.001 for a map stored in thousandths; positive.
fallback number, optional null Value outside the GeoTIFF and where its cells are no-data or NaN; unset leaves none, and the layer then keeps its own setting there.
periodic_longitude boolean false The GeoTIFF's x is longitude repeating every 360 degrees, so a map from 0 to 360 serves -180 to 180.
manual[]: Catalog boulders placed as given and never thinned or left out; x, y and diameter are read.
Key Type Default Range Unit Description
x number 0.0 Centre along x in the surface's coordinates; the longitude in degrees on a sphere.
y number 0.0 Centre along y in the surface's coordinates; the latitude in degrees on a sphere.
diameter number 0.0 (0, inf) m Rim-to-rim diameter, in metres.
age_gyr number 0.0 [0, inf) Gyr Age in Gyr; older craters are more degraded under a degradation model and are applied earlier in oldest-first order.
id integer 0 Stable ID that seeds the crater's outline; 0 derives one from its position and diameter.
completeness: Where the manual boulders are a complete catalog: the diameter in metres from which they stand in for generated boulders, infinite or no value where there is no catalog. Unset keeps every generated boulder.
Key Type Default Range Unit Description
path string "" GeoTIFF read in the surface's coordinates, relative to the configuration's folder: metres on a plane, longitude and latitude in degrees on a sphere. Empty uses value.
value number 0.0 The field everywhere when no path is given.
band integer 0 Band of the GeoTIFF read, from 0.
method one of nearest, bilinear, cubic "bilinear" How the GeoTIFF is interpolated: nearest or bilinear, which stay within the cells read.
scale number 1.0 (0, inf) Multiplies every cell, such as 0.001 for a map stored in thousandths; positive.
fallback number, optional null Value outside the GeoTIFF and where its cells are no-data or NaN; unset leaves none, and the layer then keeps its own setting there.
periodic_longitude boolean false The GeoTIFF's x is longitude repeating every 360 degrees, so a map from 0 to 360 serves -180 to 180.
fade: How boulders too small to resolve at the sample spacing fade out.
Key Type Default Range Unit Description
start_samples number 2.0 [0, inf) Samples across a feature's diameter up to which it is left out entirely.
end_samples number 4.0 (0, inf) Samples across a feature's diameter from which it is applied in full; it fades in between the two counts.
shape one of linear, smoothstep, smootherstep, gaussian "smoothstep" Curve of the fade between the start and end sample counts.
Every key with its default
{
    "type": "boulders",
    "coverage": 0.02,
    "qa": 1.79,
    "qb": 0.152,
    "min_diameter": 0.1,
    "max_diameter": 4.0,
    "sizes": {
        "type": "golombek_rapp"
    },
    "seed": 1,
    "patches": {
        "spread": 1.0,
        "size": 200.0
    },
    "clusters": {
        "share": 0.0,
        "spacing": 50.0,
        "radius": 5.0,
        "model": "nearest"
    },
    "ejecta": {
        "min_crater_diameter": 0.0,
        "regolith_thickness": null,
        "excavation_depth_ratio": 0.1,
        "coverage": 0.1,
        "profile": "smoothstep",
        "reach": 3.0,
        "decay_radii": 0.7,
        "floor_share": 0.05,
        "aging": "freshness",
        "min_freshness": 0.7,
        "lifetime_gyr": 4.0,
        "aging_exponent": 3.0,
        "gravity": null
    },
    "ejecta_sizes": {
        "type": "golombek_rapp"
    },
    "extrapolate": false,
    "exposure": null,
    "bedrock_abundance": 3.0,
    "exposure_spacing": 1.0,
    "bedrock_mean_size": 1000.0,
    "min_height_ratio": 0.4,
    "max_height_ratio": 0.6,
    "min_burial": 0.1,
    "max_burial": 0.4,
    "max_lean": 0.26,
    "side_share": 0.0,
    "end_share": 0.0,
    "max_tilt": 0.0,
    "follow_slope": false,
    "settle": true,
    "max_slope": null,
    "roll_distance": null,
    "burial_by_wear": 0.0,
    "fillet": {
        "height_share": 0.0,
        "width_ratio": 0.3
    },
    "ventifacts": {
        "share": 0.0,
        "wind_azimuth": 0.0,
        "min_angle": 0.8726646259971648,
        "max_angle": 1.0471975511965976,
        "second_wind_azimuth": null,
        "keel_share": 0.0
    },
    "fragmentation": {
        "min_diameter": 1.0,
        "split_wear": 1.0,
        "rubble_wear": 1.0,
        "min_pieces": 2,
        "max_pieces": 5,
        "gap_ratio": 0.04,
        "spread_ratio": 0.6,
        "slab_share": 0.7
    },
    "relief": "dome",
    "models": {
        "min_diameter": null,
        "min_samples": null,
        "max_diameter": null,
        "max_samples": null
    },
    "relief_range": {
        "min_diameter": 0.0,
        "max_diameter": null,
        "models": false
    },
    "shapes": {
        "styles": [
            {
                "name": "angular",
                "weight": 0.2,
                "solid": "icosahedron",
                "intermediate": {
                    "min": 0.6,
                    "max": 0.9
                },
                "short_axis": {
                    "min": 0.45,
                    "max": 0.7
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.0
                },
                "min_fractures": 7,
                "max_fractures": 12,
                "fracture_depth": {
                    "min": 0.55,
                    "max": 0.85
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.06,
                "noise_wavelength": 0.9,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.02,
                    "max": 0.06
                },
                "face_roughness": 0.03
            },
            {
                "name": "platy",
                "weight": 0.12,
                "solid": "icosahedron",
                "intermediate": {
                    "min": 0.6,
                    "max": 0.9
                },
                "short_axis": {
                    "min": 0.22,
                    "max": 0.38
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.0
                },
                "min_fractures": 5,
                "max_fractures": 9,
                "fracture_depth": {
                    "min": 0.6,
                    "max": 0.88
                },
                "max_fracture_tilt": 0.7,
                "noise_amplitude": 0.05,
                "noise_wavelength": 0.9,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.02,
                    "max": 0.05
                },
                "face_roughness": 0.03
            },
            {
                "name": "subrounded",
                "weight": 0.15,
                "solid": "icosahedron",
                "intermediate": {
                    "min": 0.65,
                    "max": 0.9
                },
                "short_axis": {
                    "min": 0.45,
                    "max": 0.7
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.0
                },
                "min_fractures": 4,
                "max_fractures": 7,
                "fracture_depth": {
                    "min": 0.65,
                    "max": 0.9
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.07,
                "noise_wavelength": 0.8,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.06,
                    "max": 0.12
                },
                "face_roughness": 0.02
            },
            {
                "name": "rounded",
                "weight": 0.1,
                "solid": "icosahedron",
                "intermediate": {
                    "min": 0.7,
                    "max": 0.95
                },
                "short_axis": {
                    "min": 0.5,
                    "max": 0.75
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.0
                },
                "min_fractures": 0,
                "max_fractures": 3,
                "fracture_depth": {
                    "min": 0.75,
                    "max": 0.95
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.1,
                "noise_wavelength": 0.7,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.1,
                    "max": 0.18
                },
                "face_roughness": 0.02
            },
            {
                "name": "block",
                "weight": 0.13,
                "solid": "cube",
                "intermediate": {
                    "min": 0.6,
                    "max": 0.85
                },
                "short_axis": {
                    "min": 0.4,
                    "max": 0.6
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.15
                },
                "min_fractures": 3,
                "max_fractures": 7,
                "fracture_depth": {
                    "min": 0.6,
                    "max": 0.85
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.07,
                "noise_wavelength": 0.8,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.06,
                    "max": 0.12
                },
                "face_roughness": 0.06
            },
            {
                "name": "wedge",
                "weight": 0.1,
                "solid": "prism",
                "intermediate": {
                    "min": 0.55,
                    "max": 0.85
                },
                "short_axis": {
                    "min": 0.4,
                    "max": 0.6
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.2
                },
                "min_fractures": 2,
                "max_fractures": 5,
                "fracture_depth": {
                    "min": 0.65,
                    "max": 0.9
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.07,
                "noise_wavelength": 0.8,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.06,
                    "max": 0.12
                },
                "face_roughness": 0.06
            },
            {
                "name": "pyramid",
                "weight": 0.1,
                "solid": "pyramid",
                "intermediate": {
                    "min": 0.7,
                    "max": 0.95
                },
                "short_axis": {
                    "min": 0.45,
                    "max": 0.7
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.2
                },
                "min_fractures": 2,
                "max_fractures": 4,
                "fracture_depth": {
                    "min": 0.7,
                    "max": 0.92
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.07,
                "noise_wavelength": 0.8,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.06,
                    "max": 0.12
                },
                "face_roughness": 0.06
            },
            {
                "name": "shard",
                "weight": 0.05,
                "solid": "tetrahedron",
                "intermediate": {
                    "min": 0.6,
                    "max": 0.9
                },
                "short_axis": {
                    "min": 0.4,
                    "max": 0.6
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.2
                },
                "min_fractures": 2,
                "max_fractures": 4,
                "fracture_depth": {
                    "min": 0.7,
                    "max": 0.92
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.04,
                "noise_wavelength": 0.8,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.02,
                    "max": 0.05
                },
                "face_roughness": 0.03
            },
            {
                "name": "sphere",
                "weight": 0.05,
                "solid": "icosahedron",
                "intermediate": {
                    "min": 0.85,
                    "max": 1.0
                },
                "short_axis": {
                    "min": 0.7,
                    "max": 0.9
                },
                "rounding": {
                    "min": 0.0,
                    "max": 0.0
                },
                "min_fractures": 0,
                "max_fractures": 1,
                "fracture_depth": {
                    "min": 0.8,
                    "max": 0.95
                },
                "max_fracture_tilt": 1.0,
                "noise_amplitude": 0.08,
                "noise_wavelength": 0.7,
                "noise_octaves": 4,
                "edge_softness": {
                    "min": 0.12,
                    "max": 0.2
                },
                "face_roughness": 0.02
            }
        ],
        "subdivisions": 3,
        "weathering": 1.0,
        "seed": 0
    },
    "shape_files": [],
    "density_map": null,
    "slope_map": null,
    "manual": [],
    "completeness": null,
    "shape_prototypes": 64,
    "fade": {
        "start_samples": 2.0,
        "end_samples": 4.0,
        "shape": "smoothstep"
    }
}

Used in: example_albedo_rocks_and_slopes, example_boulders_buried, example_boulders_ejecta, example_boulders_exposure, example_boulders_fragments, example_boulders_layer, example_boulders_max_slope, example_boulders_models and 11 more