| #version 450 | |
| #extension GL_EXT_shader_explicit_arithmetic_types: enable | |
| #extension GL_EXT_shader_explicit_arithmetic_types_int8: require | |
| #extension GL_EXT_shader_explicit_arithmetic_types_int16: require | |
| layout(binding = 0) uniform Uniforms | |
| { | |
| uint index; | |
| }; | |
| void main() | |
| { | |
| } | |
| void bitOps8(int8_t a, int8_t b) | |
| { | |
| int8_t i8; | |
| i8vec2 i8v2; | |
| i8vec3 i8v3; | |
| i8vec4 i8v4; | |
| uint8_t u8; | |
| u8vec2 u8v2; | |
| u8vec3 u8v3; | |
| u8vec4 u8v4; | |
| i8 = bitfieldReverse(i8); | |
| i8v2 = bitfieldReverse(i8v2); | |
| i8v3 = bitfieldReverse(i8v3); | |
| i8v4 = bitfieldReverse(i8v4); | |
| u8 = bitfieldReverse(u8); | |
| u8v2 = bitfieldReverse(u8v2); | |
| u8v3 = bitfieldReverse(u8v3); | |
| u8v4 = bitfieldReverse(u8v4); | |
| i8 = findMSB(i8); | |
| i8v2 = findMSB(i8v2); | |
| i8v3 = findMSB(i8v3); | |
| i8v4 = findMSB(i8v4); | |
| i8 = findMSB(u8); | |
| i8v2 = findMSB(u8v2); | |
| i8v3 = findMSB(u8v3); | |
| i8v4 = findMSB(u8v4); | |
| i8 = findLSB(i8); | |
| i8v2 = findLSB(i8v2); | |
| i8v3 = findLSB(i8v3); | |
| i8v4 = findLSB(i8v4); | |
| i8 = findLSB(u8); | |
| i8v2 = findLSB(u8v2); | |
| i8v3 = findLSB(u8v3); | |
| i8v4 = findLSB(u8v4); | |
| i8 = bitCount(i8); | |
| i8v2 = bitCount(i8v2); | |
| i8v3 = bitCount(i8v3); | |
| i8v4 = bitCount(i8v4); | |
| i8 = bitCount(u8); | |
| i8v2 = bitCount(u8v2); | |
| i8v3 = bitCount(u8v3); | |
| i8v4 = bitCount(u8v4); | |
| i8 = bitfieldExtract(i8, a, b); | |
| i8v2 = bitfieldExtract(i8v2, a, b); | |
| i8v3 = bitfieldExtract(i8v3, a, b); | |
| i8v4 = bitfieldExtract(i8v4, a, b); | |
| u8 = bitfieldExtract(u8, a, b); | |
| u8v2 = bitfieldExtract(u8v2, a, b); | |
| u8v3 = bitfieldExtract(u8v3, a, b); | |
| u8v4 = bitfieldExtract(u8v4, a, b); | |
| i8 = bitfieldInsert(i8, i8, a, b); | |
| i8v2 = bitfieldInsert(i8v2, i8v2, a, b); | |
| i8v3 = bitfieldInsert(i8v3, i8v3, a, b); | |
| i8v4 = bitfieldInsert(i8v4, i8v4, a, b); | |
| u8 = bitfieldInsert(u8, u8, a, b); | |
| u8v2 = bitfieldInsert(u8v2, u8v2, a, b); | |
| u8v3 = bitfieldInsert(u8v3, u8v3, a, b); | |
| u8v4 = bitfieldInsert(u8v4, u8v4, a, b); | |
| } | |
| void bitOps16(int16_t a, int16_t b) | |
| { | |
| int16_t i16; | |
| i16vec2 i16v2; | |
| i16vec3 i16v3; | |
| i16vec4 i16v4; | |
| uint16_t u16; | |
| u16vec2 u16v2; | |
| u16vec3 u16v3; | |
| u16vec4 u16v4; | |
| i16 = bitfieldReverse(i16); | |
| i16v2 = bitfieldReverse(i16v2); | |
| i16v3 = bitfieldReverse(i16v3); | |
| i16v4 = bitfieldReverse(i16v4); | |
| u16 = bitfieldReverse(u16); | |
| u16v2 = bitfieldReverse(u16v2); | |
| u16v3 = bitfieldReverse(u16v3); | |
| u16v4 = bitfieldReverse(u16v4); | |
| i16 = findMSB(i16); | |
| i16v2 = findMSB(i16v2); | |
| i16v3 = findMSB(i16v3); | |
| i16v4 = findMSB(i16v4); | |
| u16 = findMSB(u16); | |
| u16v2 = findMSB(u16v2); | |
| u16v3 = findMSB(u16v3); | |
| u16v4 = findMSB(u16v4); | |
| i16 = findLSB(i16); | |
| i16v2 = findLSB(i16v2); | |
| i16v3 = findLSB(i16v3); | |
| i16v4 = findLSB(i16v4); | |
| i16 = findLSB(u16); | |
| i16v2 = findLSB(u16v2); | |
| i16v3 = findLSB(u16v3); | |
| i16v4 = findLSB(u16v4); | |
| i16 = bitCount(i16); | |
| i16v2 = bitCount(i16v2); | |
| i16v3 = bitCount(i16v3); | |
| i16v4 = bitCount(i16v4); | |
| i16 = bitCount(u16); | |
| i16v2 = bitCount(u16v2); | |
| i16v3 = bitCount(u16v3); | |
| i16v4 = bitCount(u16v4); | |
| i16 = bitfieldExtract(i16, a, b); | |
| i16v2 = bitfieldExtract(i16v2, a, b); | |
| i16v3 = bitfieldExtract(i16v3, a, b); | |
| i16v4 = bitfieldExtract(i16v4, a, b); | |
| u16 = bitfieldExtract(u16, a, b); | |
| u16v2 = bitfieldExtract(u16v2, a, b); | |
| u16v3 = bitfieldExtract(u16v3, a, b); | |
| u16v4 = bitfieldExtract(u16v4, a, b); | |
| i16 = bitfieldInsert(i16, i16, a, b); | |
| i16v2 = bitfieldInsert(i16v2, i16v2, a, b); | |
| i16v3 = bitfieldInsert(i16v3, i16v3, a, b); | |
| i16v4 = bitfieldInsert(i16v4, i16v4, a, b); | |
| u16 = bitfieldInsert(u16, u16, a, b); | |
| u16v2 = bitfieldInsert(u16v2, u16v2, a, b); | |
| u16v3 = bitfieldInsert(u16v3, u16v3, a, b); | |
| u16v4 = bitfieldInsert(u16v4, u16v4, a, b); | |
| } |