fteqw/engine/shaders/glsl/postproc_laea.glsl
Spoike a85f3c5c71 Added two new projection modes. use r_projection to select alternative projections.
make sure demos freeze at the start, instead of reading everything out of the file while we're still loading content.
added a couple of lame 'list' commands.
added 'in' command.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4928 fc73d0e0-1445-4013-8a0c-d673dee63da5
2015-07-03 02:07:41 +00:00

45 lines
867 B
GLSL

!!cvarf ffov
//my attempt at lambert azimuthal equal-area view rendering, because you'll remember that name easily.
#ifdef VERTEX_SHADER
attribute vec2 v_texcoord;
varying vec2 texcoord;
uniform float cvar_ffov;
void main()
{
texcoord = v_texcoord.xy;
//make sure the ffov cvar actually does something meaningful
texcoord *= cvar_ffov / 90.0;
gl_Position = ftetransform();
}
#endif
#ifdef FRAGMENT_SHADER
uniform samplerCube s_t0;
varying vec2 texcoord;
void main()
{
vec3 tc;
vec2 d;
vec2 ang;
d = texcoord;
//compute the 2d->3d projection
float sq = d.x*d.x+d.y*d.y;
if (sq > 4.0)
gl_FragColor = vec4(0,0,0,1);
else
{
tc.x = sqrt(1.0-(sq/4.0))*d.x;
tc.y = sqrt(1.0-(sq/4.0))*d.y;
tc.z = -1.0 + (sq/2.0);
tc.y *= -1.0;
tc.z *= -1.0;
gl_FragColor = textureCube(s_t0, tc);
}
}
#endif