0f7bbfcf0e
Add separate cl_movement cvar to enable/disable reporting input sequences to DP servers (which use different pathways). Does not affect other protocols. This is separate from cl_nopred but will usually have the same result in the long run. Fixed movevalues for DPP7 clients, if they try using prediction they should now (mostly) get the same values that DP normally uses for QW servers. Reworked sky overrides somewhat. Now uses skyboxes where possible. Fixed dpcompat_makeshitup a little, for better compat. Fixed echo $foo$bar not exanding bar. Try to fix the meanings of vid_hardwaregamma. Fixes for builtins/features/etc that apparently only xonotic uses. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5143 fc73d0e0-1445-4013-8a0c-d673dee63da5
79 lines
1.8 KiB
HLSL
79 lines
1.8 KiB
HLSL
!!permu UPPERLOWER
|
|
!!samps diffuse upper lower fullbright
|
|
|
|
struct a2v
|
|
{
|
|
float4 pos: POSITION;
|
|
float2 tc: TEXCOORD0;
|
|
float3 normal: NORMAL;
|
|
};
|
|
struct v2f
|
|
{
|
|
float4 pos: SV_POSITION;
|
|
float2 tc: TEXCOORD0;
|
|
float3 light: TEXCOORD1;
|
|
};
|
|
|
|
#include <ftedefs.h>
|
|
|
|
#ifdef VERTEX_SHADER
|
|
//attribute vec2 v_texcoord;
|
|
//uniform vec3 e_light_dir;
|
|
//uniform vec3 e_light_mul;
|
|
//uniform vec3 e_light_ambient;
|
|
v2f main (a2v inp)
|
|
{
|
|
v2f outp;
|
|
outp.pos = mul(m_model, inp.pos);
|
|
outp.pos = mul(m_view, outp.pos);
|
|
outp.pos = mul(m_projection, outp.pos);
|
|
outp.light = e_light_ambient + (dot(inp.normal,e_light_dir)*e_light_mul);
|
|
outp.tc = inp.tc.xy;
|
|
return outp;
|
|
}
|
|
#endif
|
|
#ifdef FRAGMENT_SHADER
|
|
Texture2D t_diffuse : register(t0);
|
|
#ifdef UPPER
|
|
Texture2D t_upper : register(t1);
|
|
Texture2D t_lower : register(t2);
|
|
Texture2D t_fullbright : register(t3);
|
|
#else
|
|
Texture2D t_fullbright : register(t1);
|
|
#endif
|
|
|
|
SamplerState SampleType;
|
|
|
|
float4 main (v2f inp) : SV_TARGET
|
|
{
|
|
float4 col;
|
|
col = t_diffuse.Sample(SampleType, inp.tc);
|
|
|
|
#ifdef MASK
|
|
#ifndef MASKOP
|
|
#define MASKOP >= //drawn if (alpha OP ref) is true.
|
|
#endif
|
|
//support for alpha masking
|
|
if (!(col.a MASKOP MASK))
|
|
discard;
|
|
#endif
|
|
|
|
#ifdef UPPER
|
|
float4 uc = t_upper.Sample(SampleType, inp.tc);
|
|
col.rgb += uc.rgb*e_uppercolour.rgb*uc.a;
|
|
#endif
|
|
#ifdef LOWER
|
|
float4 lc = t_lower.Sample(SampleType, inp.tc);
|
|
col.rgb += lc.rgb*e_lowercolour.rgb*lc.a;
|
|
#endif
|
|
col.rgb *= inp.light;
|
|
//#ifdef FULLBRIGHT
|
|
float4 fb = t_fullbright.Sample(SampleType, inp.tc)*e_glowmod;
|
|
// col.rgb = lerp(col.rgb, fb.rgb, fb.a); //matches vanilla quake...
|
|
col.rgb += fb.rgb * fb.a; //but nothing expects it to.
|
|
//#endif
|
|
col *= e_colourmod;
|
|
// col = fog4(col);
|
|
return col;
|
|
}
|
|
#endif
|