Example #1
0
float perlin_smooth_noise_3d(const int x, const int y, const int z)
{
    const float corners = (
        perlin_noise_3d(x - 1, y - 1, z + 1) +
        perlin_noise_3d(x + 1, y - 1, z + 1) +
        perlin_noise_3d(x - 1, y + 1, z + 1) +
        perlin_noise_3d(x + 1, y + 1, z + 1) +
        perlin_noise_3d(x - 1, y - 1, z - 1) +
        perlin_noise_3d(x + 1, y - 1, z - 1) +
        perlin_noise_3d(x - 1, y + 1, z - 1) +
        perlin_noise_3d(x + 1, y + 1, z - 1)
        ) / 16;
    const float sides = (
        perlin_noise_3d(x - 1, y, z + 1) +
        perlin_noise_3d(x + 1, y, z + 1) +
        perlin_noise_3d(x, y - 1, z + 1) +
        perlin_noise_3d(x, y + 1, z + 1) +
        perlin_noise_3d(x - 1, y, z - 1) +
        perlin_noise_3d(x + 1, y, z - 1) +
        perlin_noise_3d(x, y - 1, z - 1) +
        perlin_noise_3d(x, y + 1, z - 1) +
        perlin_noise_3d(x - 1, y - 1, z) +
        perlin_noise_3d(x + 1, y - 1, z) +
        perlin_noise_3d(x + 1, y + 1, z) +
        perlin_noise_3d(x - 1, y + 1, z)
        ) / 8;
    const float center = perlin_noise_2d(x, y) / 12;
    return corners + sides + center;
}
Example #2
0
float perlin_smooth_noise_2d(const int x, const int y)
{
    const float corners = (
        perlin_noise_2d(x - 1, y - 1) +
        perlin_noise_2d(x + 1, y - 1) +
        perlin_noise_2d(x - 1, y + 1) +
        perlin_noise_2d(x + 1, y + 1)
        ) / 4;
    const float sides     = (
        perlin_noise_2d(x - 1, y) +
        perlin_noise_2d(x + 1, y) +
        perlin_noise_2d(x, y - 1) +
        perlin_noise_2d(x, y + 1)
        ) /    4;
    const float center    =  perlin_noise_2d(x, y) / 4;
    return corners + sides + center;
}
Example #3
0
PerlinNoise::PerlinNoise()
{
	for (int x = 0; x < 256;x++)
		for (int y = 0; y < 256;y++)
			noise_lq[x][y] = noise(x , y);

	for (int x = 0; x < 32;x++)
		for (int y = 0; y < 32;y++)
			noise_lq_lite[x][y] = noise(4*x,16*y);

	for (int x = 0; x < 256;x++)
		for (int y = 0; y < 256;y++)
			noise_mq[x][y] = InterpolatedNoise((float)x/(float)2.0,(float)y/(float)2.0);

	for (int x = 0; x < 256;x++)
		for (int y = 0; y < 256;y++)
			noise_hq[x][y] = InterpolatedNoise((float)x/(float)3.0,(float)y/(float)3.0);

	for (int x = 0; x < 32;x++)
		for (int y = 0; y < 32;y++)
			for (int z = 0; z < 32;z++)
				noise_lq_vol[x][y][z] = noise(x,y,z);

	for (int x = 0; x < 32;x++)
		for (int y = 0; y < 32;y++)
			for (int z = 0; z < 32;z++)
				noise_hq_vol[x][y][z] = noise(x,y,z);//perlin_noise_3d(x,y,z,6121,7,seed3,0.5,64);

	int seed = rand()%1000;

	int size = 512;
	int octaves = sqrt(size);

		for (int x = 0; x < size;x++)
			for (int y = 0; y < size;y++)
				noise_perlin[x][y] = perlin_noise_2d(x,y,6321,octaves,seed,0.5,size/4);
}