58f7424b4f
The problem was with shader-based pipeline with disabled "advanced effects" in options. In this case we don't use RTTs and gl_FragCoord contains values in range of whole window. So fo 2 players we still get gl_FragCoord.y = 0..window_size instead of gl_FragCoord.y = 0..window_size/2. The easiest way to solve it seems to be modulo it by current viewport size. It should be compatible with advanced pipeline as well as single-player games. Atm. I'm not sure if this should be applied to 0.9.2 branch. It should work fine, but needs some testing.
15 lines
380 B
GLSL
15 lines
380 B
GLSL
uniform samplerCube tex;
|
|
|
|
out vec4 FragColor;
|
|
|
|
void main(void)
|
|
{
|
|
vec3 eyedir = vec3(mod(gl_FragCoord.xy, screen) / screen, 1.);
|
|
eyedir = 2.0 * eyedir - 1.0;
|
|
vec4 tmp = (InverseProjectionMatrix * vec4(eyedir, 1.));
|
|
tmp /= tmp.w;
|
|
eyedir = (InverseViewMatrix * vec4(tmp.xyz, 0.)).xyz;
|
|
vec4 color = texture(tex, eyedir);
|
|
FragColor = vec4(color.xyz, 1.);
|
|
}
|