Changeset 1067
- Timestamp:
- Nov 14, 2011, 11:37:39 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/tutorial/tut03.cpp
r1066 r1067 51 51 m_ready = false; 52 52 53 m_palette = new u8vec4[MAX_ITERATIONS * PALETTE_STEP]; 54 for (int i = 0; i < MAX_ITERATIONS * PALETTE_STEP; i++) 55 { 56 float f = i / (double)PALETTE_STEP; 57 58 double r = 0.5 * sin(f * 0.27 - 1.5) + 0.5; 59 double g = 0.5 * sin(f * 0.13 + 1.3) + 0.5; 60 double b = 0.5 * sin(f * 0.21 + 0.4) + 0.5; 61 62 uint8_t red = r * 255.0f; 63 uint8_t green = g * 255.0f; 64 uint8_t blue = b * 255.0f; 65 m_palette[i] = u8vec4(red, green, blue, 0); 66 } 67 53 68 m_centertext = new Text(NULL, "gfx/font/ascii.png"); 54 69 m_centertext->SetPos(ivec3(5, m_size.y - 15, 1)); … … 77 92 delete m_pixels; 78 93 delete m_tmppixels; 94 delete m_palette; 79 95 } 80 96 … … 143 159 { 144 160 double const maxlen = 32; 145 int const maxiter = 170;146 161 147 162 f64cmplx z0 = m_center + ScreenToWorldOffset(ivec2(i, j)); … … 153 168 //f64cmplx r0(0.3245046418497685, 0.04855101129280834); 154 169 f64cmplx z; 155 int iter = maxiter;170 int iter = MAX_ITERATIONS; 156 171 for (z = z0; iter && z.sqlen() < maxlen * maxlen; z = z * z + r0) 157 172 --iter; 158 173 159 double f = iter;160 double n = z.sqlen();161 162 double k = log(n) * 0.5f / log(maxlen);163 /* Approximate log2(k) in [1,2]. */164 f += (- 0.344847817623168308695977510213252644185 * k165 + 2.024664188044341212602376988171727038739) * k166 - 1.674876738008591047163498125918330313237;167 168 174 if (iter) 169 175 { 170 double r = 0.5 * sin(f * 0.27 - 1.5) + 0.5; 171 double g = 0.5 * sin(f * 0.13 + 1.3) + 0.5; 172 double b = 0.5 * sin(f * 0.21 + 0.4) + 0.5; 173 174 uint8_t red = r * 255.0f; 175 uint8_t green = g * 255.0f; 176 uint8_t blue = b * 255.0f; 177 *m_pixelstart++ = u8vec4(red, green, blue, 0); 176 double f = iter; 177 double n = z.sqlen(); 178 179 double k = log(n) * 0.5f / log(maxlen); 180 /* Approximate log2(k) in [1,2]. */ 181 f += (- 0.344847817623168308695977510213252644185 * k 182 + 2.024664188044341212602376988171727038739) * k 183 - 1.674876738008591047163498125918330313237; 184 185 *m_pixelstart++ = m_palette[(int)(f * PALETTE_STEP + 0.25 * m_frame)]; 178 186 } 179 187 else … … 306 314 307 315 /* If other frames are dirty, upload fake data for now */ 308 for (int i = 0; i < 4; i++)316 if (0) for (int i = 0; i < 4; i++) 309 317 { 310 318 if (m_dirty[i]) … … 359 367 360 368 private: 369 static int const MAX_ITERATIONS = 170; 370 static int const PALETTE_STEP = 32; 371 361 372 ivec2 m_size; 362 u8vec4 *m_pixels, *m_tmppixels ;373 u8vec4 *m_pixels, *m_tmppixels, *m_palette; 363 374 Shader *m_shader; 364 375 GLuint m_texid;
Note: See TracChangeset
for help on using the changeset viewer.