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  	}