43 lines
1.2 KiB
PostScript
43 lines
1.2 KiB
PostScript
#include "common.h"
|
|
|
|
struct v2p
|
|
{
|
|
float2 tc0: TEXCOORD0; // base
|
|
float2 tc1: TEXCOORD1; // lmap
|
|
float2 tc2: TEXCOORD2; // hemi
|
|
float3 tc3: TEXCOORD3; // env
|
|
float3 c0: COLOR0;
|
|
float3 c1: COLOR1;
|
|
float fog : FOG;
|
|
};
|
|
|
|
//uniform samplerCUBE s_env;
|
|
TextureCube s_env; // Environment for forward rendering
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// Pixel
|
|
float4 main( v2p I ) : SV_Target
|
|
{
|
|
// float4 t_base = tex2D (s_base,I.tc0);
|
|
// float4 t_lmap = tex2D (s_lmap,I.tc1);
|
|
// float4 t_env = texCUBE (s_env, I.tc3);
|
|
float4 t_base = s_base.Sample( smp_base, I.tc0);
|
|
float4 t_lmap = s_lmap.Sample( smp_rtlinear, I.tc1);
|
|
float4 t_env = s_env.Sample( smp_rtlinear, I.tc3);
|
|
|
|
// lighting
|
|
float3 l_base = t_lmap.rgb; // base light-map
|
|
float3 l_hemi = I.c0*p_hemi(I.tc2); // hemi
|
|
float3 l_sun = I.c1*t_lmap.a; // sun color
|
|
float3 light = L_ambient + l_base + l_sun + l_hemi;
|
|
|
|
// final-color
|
|
float3 base = lerp (t_env,t_base,t_base.a);
|
|
float3 final = light*base*2;
|
|
|
|
// Fogging
|
|
final = lerp(fog_color, final, I.fog);
|
|
|
|
// out
|
|
return float4 (final.r,final.g,final.b,t_base.a*I.fog*I.fog);
|
|
}
|