xxxxxxxxxx
35
precision mediump float;
varying vec2 pos;
void main() {
float a = 1.; // TRUE
float b = 0.; // FALSE
// Use multiplication for AND
// a | b | a * b
// 1 | 1 | 1
// 1 | 0 | 0
// 0 | 1 | 0
// 0 | 0 | 0
float c = a * b;
// Use addition and step for OR
// a | b | step(a + b)
// 1 | 1 | 1
// 1 | 0 | 1
// 0 | 1 | 1
// 0 | 0 | 0
float d = step(0., a + b);
// Use 1- for NOT
// a | 1 - a
// 1 | 0
// 0 | 1
float e = 1. - a;
// Output logic values for AND, OR, and NOT
gl_FragColor = vec4(c, d, e, 1.);
}