diff --git a/include/heman.h b/include/heman.h index 8b100e4..72a21d1 100644 --- a/include/heman.h +++ b/include/heman.h @@ -92,7 +92,7 @@ heman_image* heman_generate_archipelago_heightmap( // RGB image in addition to the heightmap. void heman_generate_archipelago_political(int width, int height, heman_points* points, const heman_color* colors, heman_color ocean, - float noiseamt, int seed, heman_image** elevation, heman_image** political); + int seed, heman_image** elevation, heman_image** political); // High-level function that sums up a number of noise octaves, also known as // Fractional Brownian Motion. Taken alone, Perlin / Simplex noise are not diff --git a/src/generate.c b/src/generate.c index a38c976..5ae9bc5 100644 --- a/src/generate.c +++ b/src/generate.c @@ -283,7 +283,7 @@ heman_image* heman_generate_archipelago_heightmap( heman_image* heman_generate_archipelago_political_1(int width, int height, heman_points* points, const heman_color* colors, heman_color ocean, - float noiseamt, int seed) + int seed) { heman_image* contour = heman_image_create(width, height, 3); heman_image_clear(contour, 0); @@ -340,10 +340,10 @@ heman_image* heman_generate_archipelago_political_2(int width, int height, void heman_generate_archipelago_political(int width, int height, heman_points* points, const heman_color* colors, heman_color ocean, - float noiseamt, int seed, heman_image** elevation, heman_image** political) + int seed, heman_image** elevation, heman_image** political) { *political = heman_generate_archipelago_political_1( - width, height, points, colors, ocean, noiseamt, seed); + width, height, points, colors, ocean, seed); *elevation = heman_generate_archipelago_political_2( width, height, ocean, seed, *political); } diff --git a/src/ops.c b/src/ops.c index 63924c3..d9aeba5 100644 --- a/src/ops.c +++ b/src/ops.c @@ -347,6 +347,12 @@ heman_image* heman_ops_merge_political( HEMAN_FLOAT oceang = (HEMAN_FLOAT)((ocean >> 8) & 0xff) * inv; HEMAN_FLOAT oceanb = (HEMAN_FLOAT)(ocean & 0xff) * inv; int size = hmap->height * hmap->width; + float minh = 1000; + float maxh = -1000; + for (int i = 0; i < size; ++i) { + minh = MIN(minh, pheight[i]); + maxh = MIN(maxh, pheight[i]); + } for (int i = 0; i < size; ++i) { HEMAN_FLOAT h = *pheight++; if (h < 0) { @@ -359,7 +365,7 @@ heman_image* heman_ops_merge_political( *pmerged++ = *pcolour++; *pmerged++ = *pcolour++; } - *pmerged++ = h; + *pmerged++ = (h - minh) / (maxh - minh); } return result; } @@ -384,7 +390,7 @@ heman_image* heman_ops_emboss(heman_image* img, int mode) float land_amplitude = 0.0005; float land_frequency = 256.0; float ocean_amplitude = 0.5; - float ocean_frequency = 2.0; + float ocean_frequency = 1.0; #pragma omp parallel for for (int y = 0; y < height; y++) {