#version 310 es layout(location = 0) in highp vec4 a_position; layout(location = 0) out mediump float v_vtxResult; layout(set = 0, binding = 0, std140, row_major) uniform Block { highp mat2x3 var[3][4]; }; mediump float compare_float (highp float a, highp float b) { return abs(a - b) < 0.05 ? 1.0 : 0.0; } mediump float compare_vec3 (highp vec3 a, highp vec3 b) { return compare_float(a.x, b.x)*compare_float(a.y, b.y)*compare_float(a.z, b.z); } mediump float compare_mat2x3 (highp mat2x3 a, highp mat2x3 b){ return compare_vec3(a[0], b[0])*compare_vec3(a[1], b[1]); } void main (void) { gl_Position = a_position; mediump float result = 1.0; result *= compare_mat2x3(var[0][0], mat2x3(2.0, 6.0, -6.0, 0.0, 5.0, 5.0)); v_vtxResult = result; }