fteqw/engine/shaders/hlsl11/defaultskin.hlsl
Spoike 0f7bbfcf0e Implement an area grid, primarily to avoid mods(read: xonotic) generating 2000 ents all sitting on the root area node.
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
2017-08-29 02:29:06 +00:00

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