Access single bit of a texture

How can i access single bits of a texture? without too operation (there are not shift or AND-OR operator).
Thank you

An implementation (there are clearly obvious optimizations here, in particular replacing the divide by pow(2.0,shiftRight) ) for illustration purposes only:

-mr. bill

uniform sampler2D Texture0;
uniform int shiftRight;                           // shiftRight=0 for LSBit, shiftRight=7 for MSBit
varying vec2 texCoord;

void main(void)
{

    float test = texture2D( Texture0, texCoord ).r;
    float testBit =  floor( test*255.0 );         // Map from [0.0,1.0] to [0.0,255.0]
    testBit /= pow( 2.0, float( shiftRight ) );   // Shift right by shiftRight bits
                                                  // This puts bit of interest just left of fixed point
    testBit = floor( testBit );                   // Discard fractional bits
    testBit *= 0.5;                               // Shift bit of interest right one
    testBit = fract( testBit );                   // Will now be 0.0 or 0.5
    testBit *= 2.0;                               // Map from [0.0,0.5] to [0.0,1.0]
    gl_FragColor = vec4( testBit );
    
}  

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.