forked from fte/fteqw
1
0
Fork 0
fteqw/engine/shaders/vulkan/sys/defs.h

103 lines
2.5 KiB
C

#ifdef VERTEX_SHADER
#define attribute in
#define varying out
out gl_PerVertex
{
vec4 gl_Position;
};
#else
#define varying in
#endif
layout(std140, binding=0) uniform entityblock
{
mat4 m_modelviewproj;
mat4 m_model;
mat4 m_modelinv;
vec3 e_eyepos;
float e_time;
vec3 e_light_ambient; float epad1;
vec3 e_light_dir; float epad2;
vec3 e_light_mul; float epad3;
vec4 e_lmscales[4];
vec3 e_uppercolour; float epad4;
vec3 e_lowercolour; float epad5;
vec3 e_glowmod; float epad6;
vec4 e_colourident;
vec4 w_fogcolours;
float w_fogdensity; float w_fogdepthbias; vec2 epad7;
};
#define e_lmscale (e_lmscales[0])
layout(std140, binding=1) uniform lightblock
{
mat4 l_cubematrix;
vec3 l_lightposition; float lpad1;
vec3 l_lightcolour; float lpad2;
vec3 l_lightcolourscale; float l_lightradius;
vec4 l_shadowmapproj;
vec2 l_shadowmapscale; vec2 lpad3;
};
#ifdef VERTEX_SHADER
layout(location=0) attribute vec3 v_position;
layout(location=1) attribute vec2 v_texcoord;
layout(location=2) attribute vec4 v_colour;
layout(location=3) attribute vec2 v_lmcoord;
layout(location=4) attribute vec3 v_normal;
layout(location=5) attribute vec3 v_svector;
layout(location=6) attribute vec3 v_tvector;
#endif
#ifdef FRAGMENT_SHADER
layout(location=0) out vec4 outcolour;
#define gl_FragColor outcolour
#endif
#define texture2D texture
#define textureCube texture
/*defined by front-end, with bindings that suit us
uniform sampler2D s_t0;
uniform sampler2D s_t1;
uniform sampler2D s_t2;
uniform sampler2D s_t3;
uniform sampler2D s_t4;
uniform sampler2D s_t5;
uniform sampler2D s_t6;
uniform sampler2D s_t7;
uniform sampler2D s_diffuse;
uniform sampler2D s_normalmap;
uniform sampler2D s_specular;
uniform sampler2D s_upper;
uniform sampler2D s_lower;
uniform sampler2D s_fullbright;
uniform sampler2D s_paletted;
uniform sampler2D s_shadowmap;
uniform samplerCube s_projectionmap;
uniform samplerCube s_reflectcube;
uniform sampler2D s_reflectmask;
uniform sampler2D s_lightmap;
#define s_lightmap0 s_lightmap
uniform sampler2D s_deluxmap;
#define s_deluxmap0 s_deluxmap
uniform sampler2D s_lightmap1;
uniform sampler2D s_lightmap2;
uniform sampler2D s_lightmap3;
uniform sampler2D s_deluxmap1;
uniform sampler2D s_deluxmap2
uniform sampler2D s_deluxmap3;
*/
#ifdef VERTEX_SHADER
vec4 ftetransform()
{
vec4 proj = (m_modelviewproj*vec4(v_position,1.0));
proj.y *= -1;
proj.z = (proj.z + proj.w) / 2.0;
return proj;
}
#endif