Files
bluflame/evoke-64k/ev10/cfg/_svn/text-base/vsfsquad.txt.svn-base
2026-04-18 22:31:51 +02:00

30 lines
837 B
Plaintext

float4x4 matWVP : register(c0);
float4 res : register(c5);
float3 viewPos : register(c4);
float3 lightDir : register(c6);
float3x3 viewMatrixRotInv : register(c7);
float4 projScaleOffsetInv : register(c11);
struct vsOut
{
float4 p : POSITION;
float2 t : TEXCOORD0;
float3 e : TEXCOORD1;
float2 l : TEXCOORD2;
};
vsOut vs_main(float4 p : POSITION)
{
vsOut o = { p, p.xy, p.xyw, (float2)0.f };
o.p.xy += float2(-1.f, 1.f) * res.zw;
o.t = o.t * float2(.5f, -.5f) + .5f;
o.e.xy = o.e.xy * projScaleOffsetInv.xy + projScaleOffsetInv.zw;
o.e = mul(o.e, viewMatrixRotInv);
o.e.xy += float2(-1.f, 1.f) * res.zw;
// Compute light position
float4 lightPos = mul( float4(viewPos - lightDir, 1.0f), matWVP );
o.l = clamp( lightPos.xy / abs(lightPos.w), -1.f, 1.f );
o.l = o.l * float2(.5f, -.5f) + .5f;
return o;
};