#version 130 //#define TEST_POST_110 uniform mat3 colorTransform; varying vec3 Color; uniform mat4 m, n; #ifdef TEST_POST_110 uniform mat4x3 um43; uniform mat3x4 un34; #else uniform mat4 um43; uniform mat4 un34; #endif varying vec4 v; #ifdef TEST_POST_110 varying vec3 u; #else varying vec4 u; #endif void main() { gl_FragColor = vec4(un34[1]); gl_FragColor += vec4(Color * colorTransform, 1.0); if (m != n) gl_FragColor += v; else { gl_FragColor += m * v; gl_FragColor += v * (m - n); } #ifdef TEST_POST_110 mat3x4 m34 = outerProduct(v, u); m34 += mat4(v.x); m34 += mat4(u, u.x, u, u.x, u, u.x, u.x); #else mat4 m34 = mat4(v.x*u.x, v.x*u.y, v.x*u.z, v.x*u.w, v.y*u.x, v.y*u.y, v.y*u.z, v.y*u.w, v.z*u.x, v.z*u.y, v.z*u.z, v.z*u.w, v.w*u.x, v.w*u.y, v.w*u.z, v.w*u.w); m34 += mat4(v.x); m34 += mat4(u, u.x, u, u.x, u, u.x, u.x); #endif if (m34 == un34) gl_FragColor += m34 * u; else gl_FragColor += (un34 * um43) * v; mat4x2 m42 = mat4x2(42); if (m42 == mat4x2(42, 0, 0, 42, 0, 0, 0, 0)) { gl_FragColor += v; } }