|
@@ -32,22 +32,23 @@ int main(int argc, char **argv) |
|
|
/* Fill image with simplex noise */ |
|
|
/* Fill image with simplex noise */ |
|
|
simplex_interpolator<2> s2; |
|
|
simplex_interpolator<2> s2; |
|
|
simplex_interpolator<3> s3; |
|
|
simplex_interpolator<3> s3; |
|
|
simplex_interpolator<4> s4; |
|
|
|
|
|
|
|
|
simplex_interpolator<7> s7; |
|
|
|
|
|
|
|
|
for (int j = 0; j < size.y; ++j) |
|
|
for (int j = 0; j < size.y; ++j) |
|
|
for (int i = 0; i < size.x; ++i) |
|
|
for (int i = 0; i < size.x; ++i) |
|
|
{ |
|
|
{ |
|
|
|
|
|
float x = (float)i, y = (float)j; |
|
|
float sum = 0.f; |
|
|
float sum = 0.f; |
|
|
int maxoctave = (j < size.y / 2) ? 1 : (1 << octaves); |
|
|
int maxoctave = (j < size.y / 2) ? 1 : (1 << octaves); |
|
|
|
|
|
|
|
|
for (int k = 1; k <= maxoctave; k *= 2) |
|
|
for (int k = 1; k <= maxoctave; k *= 2) |
|
|
{ |
|
|
{ |
|
|
if (i < size.x / 3) |
|
|
if (i < size.x / 3) |
|
|
sum += 0.5f / k * s2.Interp(zoom * k * vec2(i, j)); |
|
|
|
|
|
|
|
|
sum += 0.5f / k * s2.Interp(zoom * k * vec2(x, y)); |
|
|
else if (i < size.x * 2 / 3) |
|
|
else if (i < size.x * 2 / 3) |
|
|
sum += 0.5f / k * s3.Interp(zoom * k * vec3(i, j, 0.0f)); |
|
|
|
|
|
|
|
|
sum += 0.5f / k * s3.Interp(zoom * k * vec3(x, y, 0.f)); |
|
|
else |
|
|
else |
|
|
sum += 0.5f / k * s4.Interp(zoom * k * vec4(i, j, 0.0f, 0.0f)); |
|
|
|
|
|
|
|
|
sum += 0.5f / k * s7.Interp(zoom * k * vec7(x, 0.f, 0.f, 0.f, y, 0.f, 0.f)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
float c = saturate(0.5f + sum); |
|
|
float c = saturate(0.5f + sum); |
|
|