This topic is 5215 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Hi, I am trying to calculate my own lighting by taking the distance from a light source to the current pixel and then modulating it with shades of gray. Here is my vertex shader:
VS_OUTPUT VS(
float3 InPos  : POSITION,
float3 InNormal : NORMAL,
float2 InTexCoord : TEXCOORD0
)
{
VS_OUTPUT Out = (VS_OUTPUT)0;

// Transform the position and normal
float3 Pos = mul(float4(InPos, 1), (float4x3)World);
float3 Normal = normalize(mul(InNormal, (float3x3)World));

Out.Pos  = mul(float4(Pos, 1), ViewProjection);
Out.TextureUV = InTexCoord;

//calculate lighting term (clamped to 0,1)
Out.LightTerm = distance (DirFromLight, Pos);

Out.LightTerm = lerp(0.0, 1.0, (Out.LightTerm - NearLightRange)/ (FarLightRange - NearLightRange));
return Out;
}


Near and far Lightrange simply specify a distance to calculate the color. DirFromLight is defined as:
float3 DirFromLight < string UIDirectional = "Light Direction"; > = {0.577, -0.577, 0.577};

PS_OUTPUT PS ( VS_OUTPUT In)
{
PS_OUTPUT Output;

// Lookup mesh texel
Output.RGBColor = tex2D(MeshTextureSampler, In.TextureUV);

//shade lighting falloff based on lighting term
Output.RGBColor.r *= (In.LightTerm);
Output.RGBColor.g *= (In.LightTerm);
Output.RGBColor.b *= (In.LightTerm);

return Output;
}


I declare LightTerm to a TEXCOORD1 semantic (clamped to 0,1) My problem right now is this: it works, I can see the lighting falloff to black, however if I move the camera closer, the lighting changes (sortof follows the camera around). I have not defined any Camera Position semantic, neither do I pass the shader my camera location. More of what's happening is that everything to the left of my viewspace is bright and everything to the right is dark. No matter where I move this happens. I would like it to be fixed to the light position DirFromLight (and the ranges specified). Any ideas? EDIT: omg I figured it out a second after hitting post, I change the distance call to InPos rather than the transformed Pos. wee! hope this helps some poor sod (like I was a second ago) =)

1. 1
2. 2
3. 3
4. 4
Rutin
13
5. 5

• 24
• 10
• 9
• 9
• 11
• Forum Statistics

• Total Topics
633695
• Total Posts
3013373
×