存在实时阴影贴图情况下,实现骨骼动画使用shader好,还是用cpu直接更新好?

visualvisual 2012-03-05 04:20:07
假设场景中有一个角色,带有骨骼动画,面数在3W左右。角色右上方有一个平行光源,光源会实时生成阴影贴图(shadow mapping)。

1、使用GPU更新骨骼动画。GPU很快,但是如果场景中带有会生成阴影贴图的光源时GPU就不得不多次计算同一个数据。也就是说从灯光方向看场景,生成depth map时需要把模型上的顶点更新到指定帧;在实际把场景显示到屏幕时也需要把模型上的顶点更新到指定帧。根据上面提到的情况GPU不得不对同一个顶点做两次骨骼更新运算。光源越多,计算次数越多,越不划算。

2、使用CPU更新骨骼动画。虽然CPU计算能力不如GPU,但是CPU更新顶点后可以把顶点放在内存,之后不管什么时候需要这些数据都可以直接使用,不需要再次计算。


计算骨骼动画有上面两种方法,但是不知道在多光源下哪个会比较有优势?
在shader中有没有办法把计算好的顶点数据拿回内存?如果有,那么这个问题也可以得到解决。
...全文
176 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerris 2012-03-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kevin_qing 的回复:]
vs过后的数据是可以输出的

d3d9
使用device->ProcessVertices()来处理顶点
[/Quote]

学习了
Kevin_qing 2012-03-05
  • 打赏
  • 举报
回复
vs过后的数据是可以输出的

d3d9
使用device->ProcessVertices()来处理顶点



jerris 2012-03-05
  • 打赏
  • 举报
回复
肯定用GPU了,一般最多也就四五个光源,如果你用的光源多肯定要用光源管理的方式每次只选择部分有效的光源,基本不存在你讲的问题。
还有就是如果骨骼动画的顶点少,GPU肯定没有影响,如果顶点多了,就更要用GPU计算了。

8,301

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧