我为在我的 xna 游戏中添加雾效果而苦苦挣扎了一段时间。我在文件 (.Fx) 中使用自定义着色器效果。“ PixelShaderFunction ” 可以正常工作。但问题是我所有的土地都是一样的颜色。我认为问题出在相机和模型之间距离的计算上。
float distance = length(input.TextureCoordinate - cameraPos);
这是我使用“PixelShaderFunction”的完整代码
// Both techniques share this same pixel shader.
float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
{
float distance = length(input.TextureCoordinate - cameraPos);
float l = saturate((distance-fogNear)/(fogFar-fogNear));
return tex2D(Sampler, input.TextureCoordinate) * lerp(input.Color, fogColor, l);
}