mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 19:40:06 +00:00
2f21fccee9
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31512 e7fa87d3-cd2b-0410-9028-fcbf551c1848
56 lines
1.1 KiB
GLSL
56 lines
1.1 KiB
GLSL
#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;
|
|
}
|