#define MAX_LIGHT 2 #define MAX_CAU_CASTER 2 #define SPOT_ANGLE 2.093 #define SPOT_FALLOFF 1 #define SHADOW_COLOR float4(0.3,0.3,0.3,1.0) #define SHADOW_BIAS_POINT 0.0001 #define SHADOW_EPSILON_POINT 0.0001 uniform sampler2D colorTexture : register(s0); uniform sampler2D bumpMap : register(s1); uniform float4 lightRange1; uniform float lightPower1; uniform float4 lightColor1; uniform float4 lightRange2; uniform float lightPower2; uniform float4 lightColor2; uniform float specularity; uniform float4 specularColor; uniform float albedo; #include "illum.hlsl" struct PS_IN { float2 texCoord:TEXCOORD0; float3 tangent:TEXCOORD1; float3 binormal:TEXCOORD2; float3 normal:TEXCOORD3; float3 V: TEXCOORD4; float3 L1: TEXCOORD5; float3 L2: TEXCOORD6; }; float4 FPSArm_PS(PS_IN IN):COLOR { float4 Color = 0; float3 N = normalize(IN.normal);//NormalMap(IN.tangent, IN.binormal, IN.normal, IN.texCoord, bumpMap); float dist = length(IN.V); float3 V = IN.V /dist; float3 L1 = IN.L1; float3 L2 = IN.L2; float4 diffuseColor = albedo * tex2D(colorTexture, IN.texCoord); if(lightPower1 !=0) Color = Illumination(N, L1, V, lightColor1 * lightPower1, lightRange1, diffuseColor, specularity, specularColor); if(lightPower2 !=0) Color = Illumination(N, L2, V, lightColor2 * lightPower2, lightRange2, diffuseColor, specularity, specularColor); float4 ret = Color; return float4(ret.xyz, dist); }