47 lines
1 KiB
HLSL
47 lines
1 KiB
HLSL
#include "common.hlsli"
|
|
|
|
struct vv
|
|
{
|
|
float3 pos0 : POSITION0;
|
|
float3 pos1 : POSITION1;
|
|
float3 n0 : NORMAL0;
|
|
float3 n1 : NORMAL1;
|
|
float2 tc0 : TEXCOORD0;
|
|
float2 tc1 : TEXCOORD1;
|
|
float4 rgbh0 : TEXCOORD2; // rgb.h
|
|
float4 rgbh1 : TEXCOORD3; // rgb.h
|
|
float4 sun_af : COLOR0; // x=sun_0, y=sun_1, z=alpha, w=factor
|
|
};
|
|
|
|
struct vf
|
|
{
|
|
float4 hpos : POSITION;
|
|
float3 Pe : TEXCOORD0;
|
|
float2 tc0 : TEXCOORD1; // base0
|
|
float2 tc1 : TEXCOORD2; // base1
|
|
float4 af : COLOR1; // alpha&factor
|
|
};
|
|
|
|
#define L_SCALE (2.0h * 1.55h)
|
|
vf main(vv I)
|
|
{
|
|
vf o;
|
|
|
|
// lerp pos
|
|
float factor = I.sun_af.w;
|
|
float4 pos = float4(lerp(I.pos0, I.pos1, factor), 1);
|
|
|
|
float h = lerp(I.rgbh0.w, I.rgbh1.w, factor) * L_SCALE;
|
|
|
|
o.hpos = mul(m_VP, pos); // xform, input in world coords
|
|
o.Pe = mul(m_V, pos);
|
|
|
|
// replicate TCs
|
|
o.tc0 = I.tc0;
|
|
o.tc1 = I.tc1;
|
|
|
|
// calc normal & lighting
|
|
o.af = float4(h, h, I.sun_af.z, factor);
|
|
return o;
|
|
}
|
|
FXVS;
|