Как использовать битовые операции в GLSL 1.3 с OpenGL 2.1
Я пытаюсь написать шейдер, который использует много битовых операций. На самом деле они поддерживаются начиная с glsl 1.30, но я использую только OpenGL 2.1.
Есть ли способ использовать битовые операции с моей версией OpenGL?
3 ответа
Все совместимое с SM3 (~OpenGL 2.1) оборудование поддерживает ограниченную целочисленную функциональность. Обычно это делается путем эмуляции целых чисел с плавающей точкой и не включает битовые операции.
Для битовых операций вам потребуется либо GLSL 1.3, либо EXT_gpu_shader4.
Если причина, по которой у вас есть только OpenGL 2.1, заключается в том, что ваш драйвер несколько устарел, возможно, вам повезет, что у вас все еще есть EXT_gpu_shader4 (хотя обновление драйверов может быть хорошей идеей в этом случае).
Если причина в том, что ваша видеокарта просто не поддерживает ничего лучше, вам не повезло.
Если у вас есть EXT_gpu_shader4 (проверьте строку расширения), вы можете добавить:
#extension EXT_gpu_shader4 : require
к вашим шейдерам GLSL 1.2, и это должно работать.
Это должно помочь вам начать.
lowp ivec4 imod4_2(lowp ivec4 x)
{
return x - (2 * (x/2));
}
lowp ivec4 parselowbits(lowp int x)
{
// Implement (x % y) where y is known to be the constant 2
// by first dividing x by (8, 4, 2, 1) and then doing a mod
// by (2, 2, 2, 2) to generate an int vector.
lowp ivec4 numerator = ivec4(x);
lowp ivec4 denominator = ivec4(8, 4, 2, 1);
lowp ivec4 modNumerator = numerator / denominator;
lowp ivec4 modResult = imod4_2(modNumerator);
return modResult;
}
lowp ivec4 parsehighbits(lowp int x)
{
// Implement (x % y) where y is known to be the constant 2
// by first dividing by (8*16, 4*16, 2*16, 1*16) and then doing a mod
// by (2, 2, 2, 2) to generate an int vector.
lowp ivec4 numerator = ivec4(x);
lowp ivec4 denominator = ivec4(8*16, 4*16, 2*16, 1*16);
lowp ivec4 modNumerator = numerator / denominator;
lowp ivec4 modResult = imod4_2(modNumerator);
return modResult;
}
Вышеуказанные функции работают на верхнем и нижнем полубайтах (4 бита) компонента, такого как.r.g входного вектора. Вам, конечно, нужно будет прочитать значения и умножить их на 255, чтобы денормализовать. Тогда реализовать AND легко:
lowp ivec4 and4(lowp ivec4 a, lowp ivec4 b)
{
lowp ivec4 a_and_b = a * b;
return a_and_b;
}
Если вы хотите побитовое И(A & B) == B
, вот действительно тупое решение, которое работает (до значений 255):
bool bitMaskCheck(float value, float check){
return (check == 1.0 &&
(value == 1.0 ||
value == 3.0 ||
value == 5.0 ||
value == 7.0 ||
value == 9.0 ||
value == 11.0 ||
value == 13.0 ||
value == 15.0 ||
value == 17.0 ||
value == 19.0 ||
value == 21.0 ||
value == 23.0 ||
value == 25.0 ||
value == 27.0 ||
value == 29.0 ||
value == 31.0 ||
value == 33.0 ||
value == 35.0 ||
value == 37.0 ||
value == 39.0 ||
value == 41.0 ||
value == 43.0 ||
value == 45.0 ||
value == 47.0 ||
value == 49.0 ||
value == 51.0 ||
value == 53.0 ||
value == 55.0 ||
value == 57.0 ||
value == 59.0 ||
value == 61.0 ||
value == 63.0 ||
value == 65.0 ||
value == 67.0 ||
value == 69.0 ||
value == 71.0 ||
value == 73.0 ||
value == 75.0 ||
value == 77.0 ||
value == 79.0 ||
value == 81.0 ||
value == 83.0 ||
value == 85.0 ||
value == 87.0 ||
value == 89.0 ||
value == 91.0 ||
value == 93.0 ||
value == 95.0 ||
value == 97.0 ||
value == 99.0 ||
value == 101.0 ||
value == 103.0 ||
value == 105.0 ||
value == 107.0 ||
value == 109.0 ||
value == 111.0 ||
value == 113.0 ||
value == 115.0 ||
value == 117.0 ||
value == 119.0 ||
value == 121.0 ||
value == 123.0 ||
value == 125.0 ||
value == 127.0 ||
value == 129.0 ||
value == 131.0 ||
value == 133.0 ||
value == 135.0 ||
value == 137.0 ||
value == 139.0 ||
value == 141.0 ||
value == 143.0 ||
value == 145.0 ||
value == 147.0 ||
value == 149.0 ||
value == 151.0 ||
value == 153.0 ||
value == 155.0 ||
value == 157.0 ||
value == 159.0 ||
value == 161.0 ||
value == 163.0 ||
value == 165.0 ||
value == 167.0 ||
value == 169.0 ||
value == 171.0 ||
value == 173.0 ||
value == 175.0 ||
value == 177.0 ||
value == 179.0 ||
value == 181.0 ||
value == 183.0 ||
value == 185.0 ||
value == 187.0 ||
value == 189.0 ||
value == 191.0 ||
value == 193.0 ||
value == 195.0 ||
value == 197.0 ||
value == 199.0 ||
value == 201.0 ||
value == 203.0 ||
value == 205.0 ||
value == 207.0 ||
value == 209.0 ||
value == 211.0 ||
value == 213.0 ||
value == 215.0 ||
value == 217.0 ||
value == 219.0 ||
value == 221.0 ||
value == 223.0 ||
value == 225.0 ||
value == 227.0 ||
value == 229.0 ||
value == 231.0 ||
value == 233.0 ||
value == 235.0 ||
value == 237.0 ||
value == 239.0 ||
value == 241.0 ||
value == 243.0 ||
value == 245.0 ||
value == 247.0 ||
value == 249.0 ||
value == 251.0 ||
value == 253.0 ||
value == 255.0)) ||
(check == 2.0 &&
(value == 2.0 ||
value == 3.0 ||
value == 6.0 ||
value == 7.0 ||
value == 10.0 ||
value == 11.0 ||
value == 14.0 ||
value == 15.0 ||
value == 18.0 ||
value == 19.0 ||
value == 22.0 ||
value == 23.0 ||
value == 26.0 ||
value == 27.0 ||
value == 30.0 ||
value == 31.0 ||
value == 34.0 ||
value == 35.0 ||
value == 38.0 ||
value == 39.0 ||
value == 42.0 ||
value == 43.0 ||
value == 46.0 ||
value == 47.0 ||
value == 50.0 ||
value == 51.0 ||
value == 54.0 ||
value == 55.0 ||
value == 58.0 ||
value == 59.0 ||
value == 62.0 ||
value == 63.0 ||
value == 66.0 ||
value == 67.0 ||
value == 70.0 ||
value == 71.0 ||
value == 74.0 ||
value == 75.0 ||
value == 78.0 ||
value == 79.0 ||
value == 82.0 ||
value == 83.0 ||
value == 86.0 ||
value == 87.0 ||
value == 90.0 ||
value == 91.0 ||
value == 94.0 ||
value == 95.0 ||
value == 98.0 ||
value == 99.0 ||
value == 102.0 ||
value == 103.0 ||
value == 106.0 ||
value == 107.0 ||
value == 110.0 ||
value == 111.0 ||
value == 114.0 ||
value == 115.0 ||
value == 118.0 ||
value == 119.0 ||
value == 122.0 ||
value == 123.0 ||
value == 126.0 ||
value == 127.0 ||
value == 130.0 ||
value == 131.0 ||
value == 134.0 ||
value == 135.0 ||
value == 138.0 ||
value == 139.0 ||
value == 142.0 ||
value == 143.0 ||
value == 146.0 ||
value == 147.0 ||
value == 150.0 ||
value == 151.0 ||
value == 154.0 ||
value == 155.0 ||
value == 158.0 ||
value == 159.0 ||
value == 162.0 ||
value == 163.0 ||
value == 166.0 ||
value == 167.0 ||
value == 170.0 ||
value == 171.0 ||
value == 174.0 ||
value == 175.0 ||
value == 178.0 ||
value == 179.0 ||
value == 182.0 ||
value == 183.0 ||
value == 186.0 ||
value == 187.0 ||
value == 190.0 ||
value == 191.0 ||
value == 194.0 ||
value == 195.0 ||
value == 198.0 ||
value == 199.0 ||
value == 202.0 ||
value == 203.0 ||
value == 206.0 ||
value == 207.0 ||
value == 210.0 ||
value == 211.0 ||
value == 214.0 ||
value == 215.0 ||
value == 218.0 ||
value == 219.0 ||
value == 222.0 ||
value == 223.0 ||
value == 226.0 ||
value == 227.0 ||
value == 230.0 ||
value == 231.0 ||
value == 234.0 ||
value == 235.0 ||
value == 238.0 ||
value == 239.0 ||
value == 242.0 ||
value == 243.0 ||
value == 246.0 ||
value == 247.0 ||
value == 250.0 ||
value == 251.0 ||
value == 254.0 ||
value == 255.0)) ||
(check == 4.0 &&
(value == 4.0 ||
value == 5.0 ||
value == 6.0 ||
value == 7.0 ||
value == 12.0 ||
value == 13.0 ||
value == 14.0 ||
value == 15.0 ||
value == 20.0 ||
value == 21.0 ||
value == 22.0 ||
value == 23.0 ||
value == 28.0 ||
value == 29.0 ||
value == 30.0 ||
value == 31.0 ||
value == 36.0 ||
value == 37.0 ||
value == 38.0 ||
value == 39.0 ||
value == 44.0 ||
value == 45.0 ||
value == 46.0 ||
value == 47.0 ||
value == 52.0 ||
value == 53.0 ||
value == 54.0 ||
value == 55.0 ||
value == 60.0 ||
value == 61.0 ||
value == 62.0 ||
value == 63.0 ||
value == 68.0 ||
value == 69.0 ||
value == 70.0 ||
value == 71.0 ||
value == 76.0 ||
value == 77.0 ||
value == 78.0 ||
value == 79.0 ||
value == 84.0 ||
value == 85.0 ||
value == 86.0 ||
value == 87.0 ||
value == 92.0 ||
value == 93.0 ||
value == 94.0 ||
value == 95.0 ||
value == 100.0 ||
value == 101.0 ||
value == 102.0 ||
value == 103.0 ||
value == 108.0 ||
value == 109.0 ||
value == 110.0 ||
value == 111.0 ||
value == 116.0 ||
value == 117.0 ||
value == 118.0 ||
value == 119.0 ||
value == 124.0 ||
value == 125.0 ||
value == 126.0 ||
value == 127.0 ||
value == 132.0 ||
value == 133.0 ||
value == 134.0 ||
value == 135.0 ||
value == 140.0 ||
value == 141.0 ||
value == 142.0 ||
value == 143.0 ||
value == 148.0 ||
value == 149.0 ||
value == 150.0 ||
value == 151.0 ||
value == 156.0 ||
value == 157.0 ||
value == 158.0 ||
value == 159.0 ||
value == 164.0 ||
value == 165.0 ||
value == 166.0 ||
value == 167.0 ||
value == 172.0 ||
value == 173.0 ||
value == 174.0 ||
value == 175.0 ||
value == 180.0 ||
value == 181.0 ||
value == 182.0 ||
value == 183.0 ||
value == 188.0 ||
value == 189.0 ||
value == 190.0 ||
value == 191.0 ||
value == 196.0 ||
value == 197.0 ||
value == 198.0 ||
value == 199.0 ||
value == 204.0 ||
value == 205.0 ||
value == 206.0 ||
value == 207.0 ||
value == 212.0 ||
value == 213.0 ||
value == 214.0 ||
value == 215.0 ||
value == 220.0 ||
value == 221.0 ||
value == 222.0 ||
value == 223.0 ||
value == 228.0 ||
value == 229.0 ||
value == 230.0 ||
value == 231.0 ||
value == 236.0 ||
value == 237.0 ||
value == 238.0 ||
value == 239.0 ||
value == 244.0 ||
value == 245.0 ||
value == 246.0 ||
value == 247.0 ||
value == 252.0 ||
value == 253.0 ||
value == 254.0 ||
value == 255.0)) ||
(check == 8.0 &&
(value == 8.0 ||
value == 9.0 ||
value == 10.0 ||
value == 11.0 ||
value == 12.0 ||
value == 13.0 ||
value == 14.0 ||
value == 15.0 ||
value == 24.0 ||
value == 25.0 ||
value == 26.0 ||
value == 27.0 ||
value == 28.0 ||
value == 29.0 ||
value == 30.0 ||
value == 31.0 ||
value == 40.0 ||
value == 41.0 ||
value == 42.0 ||
value == 43.0 ||
value == 44.0 ||
value == 45.0 ||
value == 46.0 ||
value == 47.0 ||
value == 56.0 ||
value == 57.0 ||
value == 58.0 ||
value == 59.0 ||
value == 60.0 ||
value == 61.0 ||
value == 62.0 ||
value == 63.0 ||
value == 72.0 ||
value == 73.0 ||
value == 74.0 ||
value == 75.0 ||
value == 76.0 ||
value == 77.0 ||
value == 78.0 ||
value == 79.0 ||
value == 88.0 ||
value == 89.0 ||
value == 90.0 ||
value == 91.0 ||
value == 92.0 ||
value == 93.0 ||
value == 94.0 ||
value == 95.0 ||
value == 104.0 ||
value == 105.0 ||
value == 106.0 ||
value == 107.0 ||
value == 108.0 ||
value == 109.0 ||
value == 110.0 ||
value == 111.0 ||
value == 120.0 ||
value == 121.0 ||
value == 122.0 ||
value == 123.0 ||
value == 124.0 ||
value == 125.0 ||
value == 126.0 ||
value == 127.0 ||
value == 136.0 ||
value == 137.0 ||
value == 138.0 ||
value == 139.0 ||
value == 140.0 ||
value == 141.0 ||
value == 142.0 ||
value == 143.0 ||
value == 152.0 ||
value == 153.0 ||
value == 154.0 ||
value == 155.0 ||
value == 156.0 ||
value == 157.0 ||
value == 158.0 ||
value == 159.0 ||
value == 168.0 ||
value == 169.0 ||
value == 170.0 ||
value == 171.0 ||
value == 172.0 ||
value == 173.0 ||
value == 174.0 ||
value == 175.0 ||
value == 184.0 ||
value == 185.0 ||
value == 186.0 ||
value == 187.0 ||
value == 188.0 ||
value == 189.0 ||
value == 190.0 ||
value == 191.0 ||
value == 200.0 ||
value == 201.0 ||
value == 202.0 ||
value == 203.0 ||
value == 204.0 ||
value == 205.0 ||
value == 206.0 ||
value == 207.0 ||
value == 216.0 ||
value == 217.0 ||
value == 218.0 ||
value == 219.0 ||
value == 220.0 ||
value == 221.0 ||
value == 222.0 ||
value == 223.0 ||
value == 232.0 ||
value == 233.0 ||
value == 234.0 ||
value == 235.0 ||
value == 236.0 ||
value == 237.0 ||
value == 238.0 ||
value == 239.0 ||
value == 248.0 ||
value == 249.0 ||
value == 250.0 ||
value == 251.0 ||
value == 252.0 ||
value == 253.0 ||
value == 254.0 ||
value == 255.0)) ||
(check == 16.0 &&
(value == 16.0 ||
value == 17.0 ||
value == 18.0 ||
value == 19.0 ||
value == 20.0 ||
value == 21.0 ||
value == 22.0 ||
value == 23.0 ||
value == 24.0 ||
value == 25.0 ||
value == 26.0 ||
value == 27.0 ||
value == 28.0 ||
value == 29.0 ||
value == 30.0 ||
value == 31.0 ||
value == 48.0 ||
value == 49.0 ||
value == 50.0 ||
value == 51.0 ||
value == 52.0 ||
value == 53.0 ||
value == 54.0 ||
value == 55.0 ||
value == 56.0 ||
value == 57.0 ||
value == 58.0 ||
value == 59.0 ||
value == 60.0 ||
value == 61.0 ||
value == 62.0 ||
value == 63.0 ||
value == 80.0 ||
value == 81.0 ||
value == 82.0 ||
value == 83.0 ||
value == 84.0 ||
value == 85.0 ||
value == 86.0 ||
value == 87.0 ||
value == 88.0 ||
value == 89.0 ||
value == 90.0 ||
value == 91.0 ||
value == 92.0 ||
value == 93.0 ||
value == 94.0 ||
value == 95.0 ||
value == 112.0 ||
value == 113.0 ||
value == 114.0 ||
value == 115.0 ||
value == 116.0 ||
value == 117.0 ||
value == 118.0 ||
value == 119.0 ||
value == 120.0 ||
value == 121.0 ||
value == 122.0 ||
value == 123.0 ||
value == 124.0 ||
value == 125.0 ||
value == 126.0 ||
value == 127.0 ||
value == 144.0 ||
value == 145.0 ||
value == 146.0 ||
value == 147.0 ||
value == 148.0 ||
value == 149.0 ||
value == 150.0 ||
value == 151.0 ||
value == 152.0 ||
value == 153.0 ||
value == 154.0 ||
value == 155.0 ||
value == 156.0 ||
value == 157.0 ||
value == 158.0 ||
value == 159.0 ||
value == 176.0 ||
value == 177.0 ||
value == 178.0 ||
value == 179.0 ||
value == 180.0 ||
value == 181.0 ||
value == 182.0 ||
value == 183.0 ||
value == 184.0 ||
value == 185.0 ||
value == 186.0 ||
value == 187.0 ||
value == 188.0 ||
value == 189.0 ||
value == 190.0 ||
value == 191.0 ||
value == 208.0 ||
value == 209.0 ||
value == 210.0 ||
value == 211.0 ||
value == 212.0 ||
value == 213.0 ||
value == 214.0 ||
value == 215.0 ||
value == 216.0 ||
value == 217.0 ||
value == 218.0 ||
value == 219.0 ||
value == 220.0 ||
value == 221.0 ||
value == 222.0 ||
value == 223.0 ||
value == 240.0 ||
value == 241.0 ||
value == 242.0 ||
value == 243.0 ||
value == 244.0 ||
value == 245.0 ||
value == 246.0 ||
value == 247.0 ||
value == 248.0 ||
value == 249.0 ||
value == 250.0 ||
value == 251.0 ||
value == 252.0 ||
value == 253.0 ||
value == 254.0 ||
value == 255.0)) ||
(check == 32.0 &&
(value == 32.0 ||
value == 33.0 ||
value == 34.0 ||
value == 35.0 ||
value == 36.0 ||
value == 37.0 ||
value == 38.0 ||
value == 39.0 ||
value == 40.0 ||
value == 41.0 ||
value == 42.0 ||
value == 43.0 ||
value == 44.0 ||
value == 45.0 ||
value == 46.0 ||
value == 47.0 ||
value == 48.0 ||
value == 49.0 ||
value == 50.0 ||
value == 51.0 ||
value == 52.0 ||
value == 53.0 ||
value == 54.0 ||
value == 55.0 ||
value == 56.0 ||
value == 57.0 ||
value == 58.0 ||
value == 59.0 ||
value == 60.0 ||
value == 61.0 ||
value == 62.0 ||
value == 63.0 ||
value == 96.0 ||
value == 97.0 ||
value == 98.0 ||
value == 99.0 ||
value == 100.0 ||
value == 101.0 ||
value == 102.0 ||
value == 103.0 ||
value == 104.0 ||
value == 105.0 ||
value == 106.0 ||
value == 107.0 ||
value == 108.0 ||
value == 109.0 ||
value == 110.0 ||
value == 111.0 ||
value == 112.0 ||
value == 113.0 ||
value == 114.0 ||
value == 115.0 ||
value == 116.0 ||
value == 117.0 ||
value == 118.0 ||
value == 119.0 ||
value == 120.0 ||
value == 121.0 ||
value == 122.0 ||
value == 123.0 ||
value == 124.0 ||
value == 125.0 ||
value == 126.0 ||
value == 127.0 ||
value == 160.0 ||
value == 161.0 ||
value == 162.0 ||
value == 163.0 ||
value == 164.0 ||
value == 165.0 ||
value == 166.0 ||
value == 167.0 ||
value == 168.0 ||
value == 169.0 ||
value == 170.0 ||
value == 171.0 ||
value == 172.0 ||
value == 173.0 ||
value == 174.0 ||
value == 175.0 ||
value == 176.0 ||
value == 177.0 ||
value == 178.0 ||
value == 179.0 ||
value == 180.0 ||
value == 181.0 ||
value == 182.0 ||
value == 183.0 ||
value == 184.0 ||
value == 185.0 ||
value == 186.0 ||
value == 187.0 ||
value == 188.0 ||
value == 189.0 ||
value == 190.0 ||
value == 191.0 ||
value == 224.0 ||
value == 225.0 ||
value == 226.0 ||
value == 227.0 ||
value == 228.0 ||
value == 229.0 ||
value == 230.0 ||
value == 231.0 ||
value == 232.0 ||
value == 233.0 ||
value == 234.0 ||
value == 235.0 ||
value == 236.0 ||
value == 237.0 ||
value == 238.0 ||
value == 239.0 ||
value == 240.0 ||
value == 241.0 ||
value == 242.0 ||
value == 243.0 ||
value == 244.0 ||
value == 245.0 ||
value == 246.0 ||
value == 247.0 ||
value == 248.0 ||
value == 249.0 ||
value == 250.0 ||
value == 251.0 ||
value == 252.0 ||
value == 253.0 ||
value == 254.0 ||
value == 255.0)) ||
(check == 64.0 &&
(value == 64.0 ||
value == 65.0 ||
value == 66.0 ||
value == 67.0 ||
value == 68.0 ||
value == 69.0 ||
value == 70.0 ||
value == 71.0 ||
value == 72.0 ||
value == 73.0 ||
value == 74.0 ||
value == 75.0 ||
value == 76.0 ||
value == 77.0 ||
value == 78.0 ||
value == 79.0 ||
value == 80.0 ||
value == 81.0 ||
value == 82.0 ||
value == 83.0 ||
value == 84.0 ||
value == 85.0 ||
value == 86.0 ||
value == 87.0 ||
value == 88.0 ||
value == 89.0 ||
value == 90.0 ||
value == 91.0 ||
value == 92.0 ||
value == 93.0 ||
value == 94.0 ||
value == 95.0 ||
value == 96.0 ||
value == 97.0 ||
value == 98.0 ||
value == 99.0 ||
value == 100.0 ||
value == 101.0 ||
value == 102.0 ||
value == 103.0 ||
value == 104.0 ||
value == 105.0 ||
value == 106.0 ||
value == 107.0 ||
value == 108.0 ||
value == 109.0 ||
value == 110.0 ||
value == 111.0 ||
value == 112.0 ||
value == 113.0 ||
value == 114.0 ||
value == 115.0 ||
value == 116.0 ||
value == 117.0 ||
value == 118.0 ||
value == 119.0 ||
value == 120.0 ||
value == 121.0 ||
value == 122.0 ||
value == 123.0 ||
value == 124.0 ||
value == 125.0 ||
value == 126.0 ||
value == 127.0 ||
value == 192.0 ||
value == 193.0 ||
value == 194.0 ||
value == 195.0 ||
value == 196.0 ||
value == 197.0 ||
value == 198.0 ||
value == 199.0 ||
value == 200.0 ||
value == 201.0 ||
value == 202.0 ||
value == 203.0 ||
value == 204.0 ||
value == 205.0 ||
value == 206.0 ||
value == 207.0 ||
value == 208.0 ||
value == 209.0 ||
value == 210.0 ||
value == 211.0 ||
value == 212.0 ||
value == 213.0 ||
value == 214.0 ||
value == 215.0 ||
value == 216.0 ||
value == 217.0 ||
value == 218.0 ||
value == 219.0 ||
value == 220.0 ||
value == 221.0 ||
value == 222.0 ||
value == 223.0 ||
value == 224.0 ||
value == 225.0 ||
value == 226.0 ||
value == 227.0 ||
value == 228.0 ||
value == 229.0 ||
value == 230.0 ||
value == 231.0 ||
value == 232.0 ||
value == 233.0 ||
value == 234.0 ||
value == 235.0 ||
value == 236.0 ||
value == 237.0 ||
value == 238.0 ||
value == 239.0 ||
value == 240.0 ||
value == 241.0 ||
value == 242.0 ||
value == 243.0 ||
value == 244.0 ||
value == 245.0 ||
value == 246.0 ||
value == 247.0 ||
value == 248.0 ||
value == 249.0 ||
value == 250.0 ||
value == 251.0 ||
value == 252.0 ||
value == 253.0 ||
value == 254.0 ||
value == 255.0)) ||
(check == 128.0 &&
(value == 128.0 ||
value == 129.0 ||
value == 130.0 ||
value == 131.0 ||
value == 132.0 ||
value == 133.0 ||
value == 134.0 ||
value == 135.0 ||
value == 136.0 ||
value == 137.0 ||
value == 138.0 ||
value == 139.0 ||
value == 140.0 ||
value == 141.0 ||
value == 142.0 ||
value == 143.0 ||
value == 144.0 ||
value == 145.0 ||
value == 146.0 ||
value == 147.0 ||
value == 148.0 ||
value == 149.0 ||
value == 150.0 ||
value == 151.0 ||
value == 152.0 ||
value == 153.0 ||
value == 154.0 ||
value == 155.0 ||
value == 156.0 ||
value == 157.0 ||
value == 158.0 ||
value == 159.0 ||
value == 160.0 ||
value == 161.0 ||
value == 162.0 ||
value == 163.0 ||
value == 164.0 ||
value == 165.0 ||
value == 166.0 ||
value == 167.0 ||
value == 168.0 ||
value == 169.0 ||
value == 170.0 ||
value == 171.0 ||
value == 172.0 ||
value == 173.0 ||
value == 174.0 ||
value == 175.0 ||
value == 176.0 ||
value == 177.0 ||
value == 178.0 ||
value == 179.0 ||
value == 180.0 ||
value == 181.0 ||
value == 182.0 ||
value == 183.0 ||
value == 184.0 ||
value == 185.0 ||
value == 186.0 ||
value == 187.0 ||
value == 188.0 ||
value == 189.0 ||
value == 190.0 ||
value == 191.0 ||
value == 192.0 ||
value == 193.0 ||
value == 194.0 ||
value == 195.0 ||
value == 196.0 ||
value == 197.0 ||
value == 198.0 ||
value == 199.0 ||
value == 200.0 ||
value == 201.0 ||
value == 202.0 ||
value == 203.0 ||
value == 204.0 ||
value == 205.0 ||
value == 206.0 ||
value == 207.0 ||
value == 208.0 ||
value == 209.0 ||
value == 210.0 ||
value == 211.0 ||
value == 212.0 ||
value == 213.0 ||
value == 214.0 ||
value == 215.0 ||
value == 216.0 ||
value == 217.0 ||
value == 218.0 ||
value == 219.0 ||
value == 220.0 ||
value == 221.0 ||
value == 222.0 ||
value == 223.0 ||
value == 224.0 ||
value == 225.0 ||
value == 226.0 ||
value == 227.0 ||
value == 228.0 ||
value == 229.0 ||
value == 230.0 ||
value == 231.0 ||
value == 232.0 ||
value == 233.0 ||
value == 234.0 ||
value == 235.0 ||
value == 236.0 ||
value == 237.0 ||
value == 238.0 ||
value == 239.0 ||
value == 240.0 ||
value == 241.0 ||
value == 242.0 ||
value == 243.0 ||
value == 244.0 ||
value == 245.0 ||
value == 246.0 ||
value == 247.0 ||
value == 248.0 ||
value == 249.0 ||
value == 250.0 ||
value == 251.0 ||
value == 252.0 ||
value == 253.0 ||
value == 254.0 ||
value == 255.0));
}
// Usage
// 0b10000
#define MY_BITWISE 16
// 0b10101
float someValue = 21;
if(bitMaskCheck(someValue, MY_BITWISE)){
// some logic here
}
// This is the same as (someValue & MY_BITWISE) == MY_BITWISE