Math 强制float3向0.0或1.0迁移

Math 强制float3向0.0或1.0迁移,math,hlsl,Math,Hlsl,我有一个法线贴图的着色器,它考虑了光线方向,我想强化效果。这是用于计算模型任何给定像素亮度的线: float3 N = (2.0 * (tex2D(NormalMapSampler, Tex))) - 1.0; 它强制值保持在0和1之间,这就是我想要的。但是,我希望在不使用舍入的情况下将值增加到0.5以上,并将值减少到0.5以下,以便在模型朝向光源的一侧和模型不朝向光源的一侧之间有更显著的差异。我可以使用什么来实现这一点?公式生成值介于-1和1之间的向量。我不认为你想要的有多大意义,但你可以增

我有一个法线贴图的着色器,它考虑了光线方向,我想强化效果。这是用于计算模型任何给定像素亮度的线:

float3 N = (2.0 * (tex2D(NormalMapSampler, Tex))) - 1.0;

它强制值保持在0和1之间,这就是我想要的。但是,我希望在不使用舍入的情况下将值增加到0.5以上,并将值减少到0.5以下,以便在模型朝向光源的一侧和模型不朝向光源的一侧之间有更显著的差异。我可以使用什么来实现这一点?

公式生成值介于-1和1之间的向量。我不认为你想要的有多大意义,但你可以增加z坐标:

float3 N = (2.0 * (tex2D(NormalMapSampler, Tex))) - 1.0;
N.z *= 2; //or any other value
N = normalize(N);

因子越高,法线贴图的影响越小。当值介于0和1之间时,它会增加。

N不应该给你正常值吗?不是光量(在基本光方程的情况下,使用点积得到)。为了增加对比度,你可以简单地使用pow(lightcontrib,power)*刻度,这将允许你调整(当然要小心负值)。