Clamp 如何钳制3个值?
我想确保3个valeus加起来等于1。 这些值是浮点数,似乎不可能使用双精度Clamp 如何钳制3个值?,clamp,Clamp,我想确保3个valeus加起来等于1。 这些值是浮点数,似乎不可能使用双精度 我在DirectX和C++中,当我把它们加在一起时,它们都变成1,但是当我把它们发送给顶点着色器时,它们只会增加到0.999999,并且会引起很多问题。 我想饱和他们或什么,使他们成为一个当加在一起,但我不知道如何。 例如,一个值可以是0.2,另一个值可以是0.2,第三个值可以是0.6,但是有更多的数字,当我将它们发送到着色器而不是1时,它们相加为0.99 我用它们来缩放不同的矩阵 所以它们一起变成1很重要。为什么总和
我在DirectX和C++中,当我把它们加在一起时,它们都变成1,但是当我把它们发送给顶点着色器时,它们只会增加到0.999999,并且会引起很多问题。 我想饱和他们或什么,使他们成为一个当加在一起,但我不知道如何。 例如,一个值可以是0.2,另一个值可以是0.2,第三个值可以是0.6,但是有更多的数字,当我将它们发送到着色器而不是1时,它们相加为0.99
我用它们来缩放不同的矩阵所以它们一起变成1很重要。为什么总和是1而不是0.999999很重要?这不应该是个问题。依靠精确的浮点值(没有任何容错能力)通常是个坏主意。你可以在顶点着色器中将它们相加,然后除以和,但我认为这有点异味。在任何情况下,浮点算术(包括除法)都会根据定义引入错误,这甚至是不可能实现的