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

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

OpenGLDirectX
P4 2.8G Geforce7950GT3630
Core2 1.8G ATI1650XT3340
AMD64 1.8G Geforce61501911


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

OpenGLDirectX

P4 2.8G Geforce7950GT

2730
Core2 1.8G ATI650XT3656
AMD64 1.8G Geforce61502316.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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值