ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/noise.h
(Generate patch)

Comparing deliantra/server/include/noise.h (file contents):
Revision 1.7 by root, Sat Apr 23 05:42:11 2011 UTC vs.
Revision 1.8 by root, Tue Apr 26 03:18:07 2011 UTC

52 52
53// modelled after 2d/3d kensler noise without projection 53// modelled after 2d/3d kensler noise without projection
54template<> 54template<>
55struct noise_gen<vec2d> 55struct noise_gen<vec2d>
56{ 56{
57 static vec2d::T_numtype abs_avg() { return 0.2231; } // avg(abs(noise))
58
57 permutation<256, uint8_t> rvmap[2]; 59 permutation<256, uint8_t> rvmap[2];
58 vec2d rvec[256]; // random unit vectors
59 60
60 noise_gen<vec2d> (uint32_t seed); 61 noise_gen<vec2d> (uint32_t seed);
61 vec2d::T_numtype operator() (vec2d P); 62 vec2d::T_numtype operator() (vec2d P);
62}; 63};
63 64
64template<> 65template<>
65struct noise_gen<vec3d> 66struct noise_gen<vec3d>
66{ 67{
68 static vec3d::T_numtype abs_avg() { return 0.415; } // avg(abs(noise))
69
67 permutation<256, uint8_t> rvmap[3]; 70 permutation<256, uint8_t> rvmap[3];
68 71
69 noise_gen<vec3d> (uint32_t seed); 72 noise_gen<vec3d> (uint32_t seed);
70 vec2d::T_numtype operator() (vec3d P); 73 vec2d::T_numtype operator() (vec3d P);
71 74
110 113
111template<class vec_t> 114template<class vec_t>
112struct frac_gen 115struct frac_gen
113: noise_gen<vec_t> 116: noise_gen<vec_t>
114{ 117{
115 enum { MAX_OCTAVES = 64 }; 118 enum { MAX_OCTAVES = 32 };
116 119
117 typedef typename vec_t::T_numtype value_t; 120 typedef typename vec_t::T_numtype value_t;
118 121
119 value_t h, lac, ex[MAX_OCTAVES]; 122 value_t h, lac, ex[MAX_OCTAVES];
120 value_t fbm_mul[MAX_OCTAVES]; 123 value_t fbm_mul[MAX_OCTAVES];
123 value_t noise (vec_t P) 126 value_t noise (vec_t P)
124 { 127 {
125 return operator() (P); 128 return operator() (P);
126 } 129 }
127 130
128 frac_gen (value_t hurst_expo = .5f, value_t lacunarity = 2.f); 131 frac_gen (value_t hurst_expo = .5, value_t lacunarity = 2);
129 132
130 value_t fBm (vec_t P, int octaves); 133 value_t fBm (vec_t P, int octaves);
131 value_t turbulence (vec_t P, int octaves); 134 value_t turbulence (vec_t P, int octaves);
132 value_t multifractal (vec_t P, int octaves, value_t offset = 1); 135 value_t multifractal (vec_t P, int octaves, value_t offset = 1);
133 value_t heterofractal (vec_t P, int octaves, value_t offset = 1); 136 value_t heterofractal (vec_t P, int octaves, value_t offset = 1);
134 value_t hybridfractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 1); 137 value_t hybridfractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 1);
138 value_t ridgedmultifractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 8);
139 value_t billowfractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 2);
135 value_t terrain (vec_t P, int octaves); 140 value_t terrain (vec_t P, int octaves);
136 value_t terrain2 (vec_t P, int octaves); 141 value_t terrain2 (vec_t P, int octaves);
137 value_t ridgedmultifractal (vec_t P, int octaves, value_t offset = 1, value_t gain = 8);
138}; 142};
139 143
140#endif 144#endif
141 145

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines