glviewvol
diff src/rend_fast.cc @ 6:f22be47a3572
moved to TransferFuncs completely
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Tue, 30 Dec 2014 06:22:54 +0200 |
parents | 5417c25cb238 |
children | 71b479ffb9f7 |
line diff
1.1 --- a/src/rend_fast.cc Mon Dec 29 15:59:55 2014 +0200 1.2 +++ b/src/rend_fast.cc Tue Dec 30 06:22:54 2014 +0200 1.3 @@ -34,7 +34,7 @@ 1.4 glBindTexture(GL_TEXTURE_1D, xfer_tex); 1.5 glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 1.6 glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 1.7 - glTexImage1D(GL_TEXTURE_1D, 0, have_tex_float ? GL_RGB16F : GL_RGB, XFER_MAP_SZ, 0, GL_RGB, GL_FLOAT, 0); 1.8 + glTexImage1D(GL_TEXTURE_1D, 0, have_tex_float ? GL_RGBA16F : GL_RGBA, XFER_MAP_SZ, 0, GL_RGB, GL_FLOAT, 0); 1.9 1.10 return true; 1.11 } 1.12 @@ -51,18 +51,6 @@ 1.13 Renderer::set_volume(vol); 1.14 } 1.15 1.16 -Curve &RendererFast::transfer_curve(int color) 1.17 -{ 1.18 - xfer_tex_valid = false; 1.19 - return Renderer::transfer_curve(color); 1.20 -} 1.21 - 1.22 -void RendererFast::set_simple_transfer(float low, float high) 1.23 -{ 1.24 - xfer_tex_valid = false; 1.25 - Renderer::set_simple_transfer(low, high); 1.26 -} 1.27 - 1.28 void RendererFast::update(unsigned int msec) 1.29 { 1.30 if(!vol) return; 1.31 @@ -120,28 +108,23 @@ 1.32 vol_tex_valid = true; 1.33 } 1.34 1.35 - if(!xfer_tex_valid) { 1.36 - float pixels[XFER_MAP_SZ * 3]; 1.37 + if(1) {//if(!xfer_tex_valid) { 1.38 + float pixels[XFER_MAP_SZ * 4]; 1.39 float *pptr = pixels; 1.40 1.41 for(int i=0; i<XFER_MAP_SZ; i++) { 1.42 float x = (float)i / (float)(XFER_MAP_SZ - 1); 1.43 1.44 - // TODO make 0.1 a tweakable parameter 1.45 - float val = smoothstep(xfer_low - 0.1, xfer_low + 0.1, x); 1.46 - val *= 1.0 - smoothstep(xfer_high - 0.1, xfer_high + 0.1, x); 1.47 - *pptr++ = val; 1.48 - *pptr++ = val; 1.49 - *pptr++ = val; 1.50 - /* 1.51 - *pptr++ = xfer[0].value(x); 1.52 - *pptr++ = xfer[1].value(x); 1.53 - *pptr++ = xfer[2].value(x); 1.54 - */ 1.55 + if(xfer) { 1.56 + xfer->map(x, pptr); 1.57 + } else { 1.58 + pptr[0] = pptr[1] = pptr[2] = pptr[3] = x; 1.59 + } 1.60 + pptr += 4; 1.61 } 1.62 1.63 glBindTexture(GL_TEXTURE_1D, xfer_tex); 1.64 - glTexSubImage1D(GL_TEXTURE_1D, 0, 0, XFER_MAP_SZ, GL_RGB, GL_FLOAT, pixels); 1.65 + glTexSubImage1D(GL_TEXTURE_1D, 0, 0, XFER_MAP_SZ, GL_RGBA, GL_FLOAT, pixels); 1.66 1.67 xfer_tex_valid = true; 1.68 }