@@ -14,13 +14,12 @@ class PerlinNoise
1414{
1515public:
1616
17- float noise_lq[256 ][256 ];
18- float noise_lq_lite[32 ][32 ];
19- float noise_mq[256 ][256 ];
20- float noise_hq[256 ][256 ];
21- float noise_perlin[512 ][512 ];
22- float noise_lq_vol[32 ][32 ][32 ];
23- float noise_hq_vol[32 ][32 ][32 ];
17+ float noise_lq[256 ][256 ][3 ];
18+ float noise_lq_lite[32 ][32 ][3 ];
19+ float noise_mq[256 ][256 ][3 ];
20+ float noise_hq[256 ][256 ][3 ];
21+ float noise_lq_vol[32 ][32 ][32 ][3 ];
22+ float noise_hq_vol[32 ][32 ][32 ][3 ];
2423
2524
2625 PerlinNoise ();
@@ -46,14 +45,6 @@ class PerlinNoise
4645 return noise (n);
4746 }
4847
49- static inline float cos_interp (float a, float b, float x)
50- {
51- float ft = x * 3.1415927 ;
52- float f = (1 - cos (ft)) * .5 ;
53-
54- return a*(1 -f) + b*f;
55- }
56-
5748 static inline float cubic_interp (float v0, float v1, float v2, float v3, float x)
5849 {
5950 float P = (v3 - v2) - (v0 - v1);
@@ -100,53 +91,6 @@ class PerlinNoise
10091
10192 }
10293
103- static inline float perlin_octave_2d (float x,float y, int width, int seed, float period)
104- {
105-
106- float freq=1 /(float )(period);
107-
108- int num=(int )(width*freq);
109- int step_x=(int )(x*freq);
110- int step_y=(int )(y*freq);
111- float zone_x=x*freq-step_x;
112- float zone_y=y*freq-step_y;
113- int box=step_x+step_y*num;
114- int noisedata=(box+seed);
115-
116- float u=cubic_interp (noise (noisedata-num-1 ),noise (noisedata-num),noise (noisedata-num+1 ),noise (noisedata-num+2 ),zone_x);
117- float a=cubic_interp (noise (noisedata-1 ),noise (noisedata),noise (noisedata+1 ),noise (noisedata+2 ),zone_x);
118- float b=cubic_interp (noise (noisedata+num -1 ),noise (noisedata+num),noise (noisedata+1 +num),noise (noisedata+2 +num),zone_x);
119- float v=cubic_interp (noise (noisedata+2 *num -1 ),noise (noisedata+2 *num),noise (noisedata+1 +2 *num),noise (noisedata+2 +2 *num),zone_x);
120-
121- float value=cubic_interp (u,a,b,v,zone_y);
122-
123- return value;
124- }
125-
126-
127- static inline float perlin_octave_2d_cos (float x,float y, int width, int seed, float period)
128- {
129-
130- float freq=1 /(float )(period);
131-
132- int num=(int )(width*freq);
133- int step_x=(int )(x*freq);
134- int step_y=(int )(y*freq);
135- float zone_x=x*freq-step_x;
136- float zone_y=y*freq-step_y;
137- int box=step_x+step_y*num;
138- int noisedata=(box+seed);
139-
140- float a=cos_interp (noise (noisedata),noise (noisedata+1 ),zone_x);
141- float b=cos_interp (noise (noisedata+num),noise (noisedata+1 +num),zone_x);
142-
143- float value=cos_interp (a,b,zone_y);
144-
145- return value;
146- }
147-
148-
149-
15094 static inline float perlin_octave_3d (float x,float y, float z,int width, int seed, float period)
15195 {
15296 float freq=1 /(float )(period);
@@ -204,21 +148,6 @@ class PerlinNoise
204148 }
205149
206150
207- static inline float perlin_noise_2d (int x, int y, int width, int octaves, int seed, float persistance, float basePeriod)
208- {
209- float p = persistance;
210- float val = 0.0 ;
211-
212- for (int i = 0 ; i<octaves;i++)
213- {
214- val += perlin_octave_2d_cos (x,y,width,seed,basePeriod) * p;
215-
216- basePeriod *= 0.5 ;
217- p *= persistance;
218- }
219- return val;
220- }
221-
222151 static inline float perlin_noise_3d (int x, int y, int z, int width, int octaves, int seed, float persistance, float basePeriod)
223152 {
224153 float p = persistance;
0 commit comments