平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0
数据加载中……

多人骨骼动画测试用例及多线程显卡驱动程序下的优化问题

测试1. 渲染1008个Wow的Cat动画模型,每个Cat有346个面,28根骨骼,只需1次Batch.
                            

OpenGL DirectX
P4 2.8G Geforce7950GT 36 30
Core2 1.8G ATI1650XT 33 40
AMD64 1.8G Geforce6150 19 11


测试2  渲染175个Wow的Orc动画模型,每个Orc有1260个面,53根骨骼,需要分10次Batch,但使用同一个顶点Buffer,顶点数 2728 , 面数分别为 726, 22, 8, 66, 16, 13, 116, 34, 114, 142. 兽人模型体现了真实的游戏需求, Cat模型过于理想化.
 

OpenGL DirectX

P4 2.8G Geforce7950GT

27 30
Core2 1.8G ATI650XT 36 56
AMD64 1.8G Geforce6150 23 16.5

/**********************************************************************************************
1.HLSL下1008个cat的例子,使用float3x4 M*V比float4x3 V * M 慢2帧.
2.矩阵从4x4改为4x3后,帧率只提高了1帧,可能GPU不是瓶颈,传送4x4和传送4x3矩阵到寄存器效率相差不多.
3.OpenGL的实现在7950GT下目前有严重问题,竟然比DX低了8-10帧,WHY! 在N卡上OpenGL实现绝对要比DirectX快, 查SwapBuffers不明消耗15ms,未决! TNND,原来是Fraps对OpenGL测帧不准,反而拖慢了SwapBuffers,实际测试后OpenGL比DirectX高出6,7帧,这才正常.
4.ATI显卡对OpenGL支持得差是出名的, 在ATI显卡上DirectX比OpenGL快很正常,OpenGL主要慢在Shader计算上,而且其GLSL的代码和HLSL一模一样, M$和ATI有黑幕.
5.对兽人渲染排序材质后,DirectX提高2帧,OpenGL不变.
6.使用GPUPerfStudio在ATI 1650下做测试,发现OpenGL实现时呈现GPU瓶颈,而DirectX实现时呈现CPU瓶颈. 两者的逻辑层实现是统一的,OpenGL的GPU瓶颈在Vertex processing上,但是简化Skin Vertex Shader处理后未见效率提升,似乎瓶颈不是在Vertex shader上.这样只可能在顶点数量上,但顶点数仅有308,且DirectX模式一样的顶点却高出10帧,OpenGL下Vertex cache有问题,或者每次渲染都传送更新了顶点流?VBO有问题?未决!
7.优化了数次后,没有达到预期目标,感觉相当沮丧.
**********************************************************************************************/

http://linghuye.googlepages.com/RenderCraftPerf.7z

References:
http://developer.nvidia.com/object/multi-thread-gdc-2006.html
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=235486#Post235486
http://ati.amd.com/developer/gdc/PerformanceTuning.pdf

posted on 2008-03-11 22:04 linghuye 阅读(2036) 评论(2)  编辑 收藏 引用 所属分类: 3D图形学研究

评论

# re: 多人骨骼动画测试用例及多线程显卡驱动程序下的优化问题  回复  更多评论   

连续点两次Demo - Welcom to DestinyMatrix之后程序会非法操作
2008-03-11 23:36 | eating

# re: 多人骨骼动画测试用例及多线程显卡驱动程序下的优化问题  回复  更多评论   

呵呵,那就不要点两次嘛.
放在这里主要是为了方便我自己下载测试的.有兴趣的也可以测试下,进入后直接敲F5, 然后F3 -> 菜单View -> Graphic Options -> 切换到DirectX模式.
看看在你机器上是OpenGL快,还是DirectX快. OpenGL的shader,机器如果支持GLSL 1.2的应该会更快一丁点.
2008-03-12 08:59 | linghuye
只有注册用户登录后才能发表评论。