1
0
Fork 0
forked from fte/fteqw
fteqw/engine/shaders/hlsl9/rtlight.hlsl
Spoike 5b4756f3d9 Lazy GLSL loading, for faster load times.
Fixed some xim issues, for proper keyboard input under x11.
Cmake project can now work for cross compiling win32 targets.
Some other fun-but-pointless stuff.



git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5344 fc73d0e0-1445-4013-8a0c-d673dee63da5
2018-11-27 16:48:19 +00:00

65 lines
1.3 KiB
HLSL

!!permu BUMP
!!permu SPECULAR
!!permu OFFSETMAPPING
!!permu SKELETAL
!!permu FOG
!!samps diffuse
// texture units:
// s0=diffuse, s1=normal, s2=specular, s3=shadowmap
// custom modifiers:
// PCF(shadowmap)
// CUBE(projected cubemap)
struct a2v
{
float4 pos: POSITION;
float3 tc: TEXCOORD0;
float3 n: NORMAL0;
float3 s: TANGENT0;
float3 t: BINORMAL0;
};
struct v2f
{
#ifndef FRAGMENT_SHADER
float4 pos: POSITION;
#endif
float3 tc: TEXCOORD0;
float3 lpos: TEXCOORD1;
};
#ifdef VERTEX_SHADER
float4x4 m_modelviewprojection;
float3 l_lightposition;
v2f main (a2v inp)
{
v2f outp;
outp.pos = mul(m_modelviewprojection, inp.pos);
outp.tc = inp.tc;
float3 lightminusvertex = l_lightposition - inp.pos.xyz;
outp.lpos.x = dot(lightminusvertex, inp.s.xyz);
outp.lpos.y = dot(lightminusvertex, inp.t.xyz);
outp.lpos.z = dot(lightminusvertex, inp.n.xyz);
return outp;
}
#endif
#ifdef FRAGMENT_SHADER
sampler s_diffuse;
float l_lightradius;
float3 l_lightcolour;
float4 main (v2f inp) : COLOR0
{
float3 col = l_lightcolour;
col *= max(1.0 - dot(inp.lpos, inp.lpos)/(l_lightradius*l_lightradius), 0.0);
#ifdef FLAT
float3 diff = FLAT;
#else
float3 diff = tex2D(s_diffuse, inp.tc);
#endif
return float4(diff * col, 1);
}
#endif