这几天写了个优化post-TnL vertex cache的程序。发现Lin的算法还是相当有效的,比起Hoppe的来。只不过最终还是比参照数据差一点-___-
---
经过一些优化,结果终于超过了Lin的,速度也与Lin的相当了。
---
发现FIFO cache的一个问题:渲染一个三角形1,2,3时,当head是1而且2,3不在cache里,1会被替换掉但之后就不在cache里了。硬件对此的实现还是会对cache performance有些影响,但对fps的影响也许就不那么大了。
... X X 1(head) X ...
---
经过一些优化,结果终于超过了Lin的,速度也与Lin的相当了。
Algorithm |
Bogomjakov02 |
Hoppe99(D3DX) |
Lin06 |
mine |
||||||
Cache size |
8 |
16 |
8 |
16 |
8 |
16 |
8 |
16 |
||
Mesh fandisk dragon bunny |
#verts 6,475 22,342 35,947 |
#tris 12,946 43,571 69,451 |
0.906 0.900 0.901 |
0.733 0.738 0.737 |
0.891 0.927 0.866 |
0.601 0.671 0.600 |
0.698 0.743 0.701 |
0.594 0.634 0.600 |
0.691 0.733 0.697 |
0.593 0.633 0.600 |
Cache size average ACMR |
0.903 |
0.736 |
0.895 |
0.624 |
0.714 |
0.610 |
0.707 |
0.609 |
||
Overall average ACMR |
0.81914 |
0.75956 |
0.66166 |
0.657861 |
---
发现FIFO cache的一个问题:渲染一个三角形1,2,3时,当head是1而且2,3不在cache里,1会被替换掉但之后就不在cache里了。硬件对此的实现还是会对cache performance有些影响,但对fps的影响也许就不那么大了。
... X X 1(head) X ...