我试图达到的斜坡效果看这里: http://wiki.splashdamage.com/upload/d/d4/Simplemega_dist_ramps.jpg分布模式(纹理)和斜坡数学?
融合基础上的分布图案纹理很容易。基本上,只是这个(HLSL):
Result = lerp(SampleA, SampleB, DistributionPatternSample);
哪些工作,但没有斜坡。 http://aaronm.nuclearglory.com/private/stackoverflow/result1.png
我的第一个猜测是,纳入“斜坡因子”我可以这样做:
Result = lerp(A, B, (1.0f - Ramp)*Distribution);
然而,这并不因为工作,如果斜坡也是1.0的结果将是零,导致刚'A'被使用。这就是我用Ramp获得1.0f时所得到的结果: http://aaronm.nuclearglory.com/private/stackoverflow/result2.png
我试图将斜坡与分布相乘,这显然是不正确的。 (想通这是值得一试的尝试和探索有趣的效果没有有趣的效果被发现。)
我也试图从分布减去斜坡,就像这样:
Result = lerp(A, B, saturate(Distribution - Ramp));
但随着问题那就是斜坡是为了控制混合的清晰度。所以,这也没有做任何事情。
我希望有人能告诉我我需要做什么来完成数学计算。我试图避免分支,因为这是着色器代码。我可以通过将结果相乘来模拟分支,但我不希望这样做。我也希望有人能够让我了解为什么数学的形成方式是为了锐利。在不知道如何使用它的情况下抛出数学可能会很麻烦。
对于背景下,最上面的图片是从这里取: http://wiki.splashdamage.com/index.php/A_Simple_First_Megatexture
我明白MegaTextures(夹映射方式)和虚拟纹理(更先进的方法)是如何工作就好了。所以我不需要任何解释。我只是试图在着色器中实现这个特定的混合。
作为参考,这是我正在使用的分布模式纹理。
http://aaronm.nuclearglory.com/private/stackoverflow/distribution.png