| #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; | |
| } |