Add a preview for 2d array textures. Bind gl textures according to texture type rather than hardcoded assumptions, making it more consistent with the other rendering APIs.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5839 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2021-05-09 13:01:15 +00:00
parent ff4b88dd45
commit 2538e37e28
12 changed files with 113 additions and 107 deletions

View file

@ -17,6 +17,7 @@ char shaders[][64] =
"crepuscular_sky",
"depthonly",
"default2d",
"default2danim",
"defaultadditivesprite",
"defaultskin",
"defaultsky",

View file

@ -1,5 +1,5 @@
!!ver 100-450
!!samps 1
!!samps img=0
//this shader is present for support for gles/gl3core contexts
//it is single-texture-with-vertex-colours, and doesn't do anything special.
@ -26,7 +26,7 @@ void main ()
#ifdef PREMUL
f.rgb *= f.a;
#endif
f *= texture2D(s_t0, tc);
f *= texture2D(s_img, tc);
gl_FragColor = f;
}
#endif

View file

@ -0,0 +1,36 @@
!!ver 300-450
!!samps anim:2DArray=0
#include "sys/defs.h"
//this shader is present for support for gles/gl3core contexts
//it is single-texture-with-vertex-colours, and doesn't do anything special.
//beware that a few things use this, including apparently fonts and bloom rescaling.
//its really not meant to do anything special.
varying vec2 tc;
varying vec4 vc;
#ifdef VERTEX_SHADER
void main ()
{
tc = v_texcoord;
vc = v_colour;
gl_Position = ftetransform();
}
#endif
#ifdef FRAGMENT_SHADER
void main ()
{
//figure out which frame to use.
ivec3 sz = textureSize(s_anim, 0);
float layer = mod(e_time*10, sz.z-1);
vec4 f = vc;
#ifdef PREMUL
f.rgb *= f.a;
#endif
f *= texture(s_anim, vec3(tc, layer));
gl_FragColor = f;
}
#endif