Jar*_*red 2 c# xna colors hlsl fog
我在我的 Effect 文件中创建了一个雾功能..在像素着色器中,我计算了相机位置和输入位置的距离,如下所示:
float x = distance(_in.pos3d, CameraPosition);
float fd;
if(Fog)
{
if(x > FogDistance)
fd = ((x-FogDistance) * FogIntensity > 100) ? 100 : ((x-FogDistance) * FogIntensity);
//_in.color = ???;
}
Run Code Online (Sandbox Code Playgroud)
其中:x 是相机位置和顶点位置的距离,fd 是雾颜色的百分比,FogDistance 是物体不受雾影响的距离,FogIntensity 是雾的强度。
我想要的是一种包含 (fd %) 雾色的颜色。例如,如果雾颜色为橙色,输入为白色,fd 为 25%,则生成的颜色将为白色 + 25% 橙色。
编辑:顺便说一下,对于无法维护的设置代码,我深表歉意。
编辑 2:我注意到有两个透明层有一个透明的结果,所以我稍微清理了这个问题。顶点输入没有百分比。
你想要这个lerp功能(MSDN)。那就是“线性插值”函数。
像素着色器中的颜色本质上与向量相同,因此您可以对它们使用任何向量函数。
该lerp函数采用 0 到 1 之间的值,而不是百分比(在 0 到 100 的范围内)。
因此,您的代码可能如下所示:
_in.color = lerp(_in.color, someOtherColor, fogAmount);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4384 次 |
| 最近记录: |