强制float3向0.0或1.0迁移

时间:2013-10-05 07:16:47

标签: math hlsl

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

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

它强制值保持在0和1之间,这就是我想要的。但是,我想增加0.5以上的值,并在不使用舍入的情况下将值降低到0.5以下,以便在面向光源的模型侧面与不是光源的模型侧面之间产生更大的差异。我可以用什么来实现这一目标?

1 个答案:

答案 0 :(得分:0)

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

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

因子越高,法线贴图的影响越小。它会增加0到1之间的值。