神奇的小数点——细分网格算法中小数位的意义
在前面介绍的三种算法中,后两种算法采用的参数都是浮点数,为什么要这样呢?难道只是简单的区别是否在中心部分继续细分么?小数部分的数值究竟起什么作用呢?
大家注意观察上图,资深的发烧友就会很容易发现在Tessell
ATIon技术中的细分网格操作中,R600利用一个小小的参数非常巧妙的解决了“效果跳跃”的现象。具体怎么回事儿,还请您往下看:
首先,我们知道,在一个游戏中的模型,会有远有近,为了节省系统资源,将近处的我们需要仔细观察的模型做Tessell
ATIon技术才是有意义的,
AMD在设计R600的时候早就想到了这一点。
那么,R600就设计成了动态的进行Tessell
ATIon技术的操作的模式,模型随着远近和大小不断的改变细节程度,这样就能保证了很好的效率。
如果一个模型的细节变化的过程被看出来,其实就是一件失败的事情。但是如果R600使用了传统的离散形式的细分网格算法,那么就很容易被看到这个变化的过程。不过这还不算什么,因为模型在经过Tessell
ATIon技术之后还需要各种其他的处理,所以在模型表面所做的光照等效果发生“突变”就会更加明显。R600巧妙的使用了浮点数作为参数,这样就能避免这种现象。
在R600的TessellATIon技术中,参数的小数部分表示的是第二次网格细分的位置。如果参数是1.1,那么第一次细分就是在两个顶点中心,第二次细分就是在距离中心全长的1/40处,如果是1.5,第二次细分就是在距离中点全长的5/40处。如果参数达到了2.0,就正好是做了两次等分。
