[转]3D引擎渲染效率如何提升
2012-06-24 19:59
316 查看
gametp
之前参加游戏开发交流会时做的一些笔录以及本人的一些愚见,贴出来与大家分享,请莫见笑。
这个演讲是完美技术总监?忘记了,好像是,做的一个演讲,分享3D渲染效率优化方面的经验,以下是部分演讲内容:
今天非常荣幸能和大家一起分享一下引擎优化方面的技术。说到引擎优化,其实它涵盖的范围非常广泛,今天只有一个小时时间,所以只能给大家简单介绍一些比较实用的方法和分析方法。引擎优化涉及到内存分配、多线程加载、Shider的优化、LOD,说到LOD,里面一般涉及到地形的LOD、人物模型的LOD等等很多方面。首先对游戏引擎进行优化,必须先有一些分析的方法,找出它实际的引擎的瓶颈所在。一般的分析方法有两种,一种是使用这些现成的分析工作,比如说NV的PerfHUD和英特尔的vTune,这些工具都非常强大,但是由于种种原因,它们都有一些限制,毕竟这些工具都是为自己的厂商服务的,所以在分析程序的时候会有一些限制。今天我们主要介绍程序内建统计分析函数的方法来分析程序的瓶颈。
编者:以前只是听说完美的研发中心比较强大,现在是切身的感受到了。
下面介绍一下如何设计统计分析函数,从应用上可以分为两种,宏观统计和微观统计,宏观统计就是根据自己需求统计一些现在游戏渲染的东西,比如地形、人物模型这些渲染的统计。微观统计就是比较贴近于硬件,如统计一些D3D的渲染状态的更新次数,这些是属于微观统计。从功能上分,又分为时耗统计和技术统计,时耗例如如渲染地形需要多长时间,技术统计是指渲染一个地形有多少个三角形面这些方面。下面我具体来介绍一下宏观统计里面的时耗统计是什么样的。
关于效率统计
关于水的渲染优化
下面简单介绍一下渲染状态的管理,D3D里面的SetRenderState函数设置渲染状态是一个非常耗时的操作,但是它每种渲染状态设置的时候,消耗的时间并不是相同的,具体的也可以通过前面所讲的统计方法,分析出到底哪个状态消耗的时间最多,我们就尽可能减少那个状态的设置。
关于渲染状态管理
下面介绍一下游戏当中的LOD。LOD技术主要是指对不同复杂度的模型,对同一对象采用不同复杂度的模型来渲染的一种技术,主要是根据视点与对象的远近来调整不同复杂度的模型。
关于游戏中的LOD
编者:感谢演讲者的分享,稀饭的同学抱走吧。
之前参加游戏开发交流会时做的一些笔录以及本人的一些愚见,贴出来与大家分享,请莫见笑。
这个演讲是完美技术总监?忘记了,好像是,做的一个演讲,分享3D渲染效率优化方面的经验,以下是部分演讲内容:
今天非常荣幸能和大家一起分享一下引擎优化方面的技术。说到引擎优化,其实它涵盖的范围非常广泛,今天只有一个小时时间,所以只能给大家简单介绍一些比较实用的方法和分析方法。引擎优化涉及到内存分配、多线程加载、Shider的优化、LOD,说到LOD,里面一般涉及到地形的LOD、人物模型的LOD等等很多方面。首先对游戏引擎进行优化,必须先有一些分析的方法,找出它实际的引擎的瓶颈所在。一般的分析方法有两种,一种是使用这些现成的分析工作,比如说NV的PerfHUD和英特尔的vTune,这些工具都非常强大,但是由于种种原因,它们都有一些限制,毕竟这些工具都是为自己的厂商服务的,所以在分析程序的时候会有一些限制。今天我们主要介绍程序内建统计分析函数的方法来分析程序的瓶颈。
编者:以前只是听说完美的研发中心比较强大,现在是切身的感受到了。
下面介绍一下如何设计统计分析函数,从应用上可以分为两种,宏观统计和微观统计,宏观统计就是根据自己需求统计一些现在游戏渲染的东西,比如地形、人物模型这些渲染的统计。微观统计就是比较贴近于硬件,如统计一些D3D的渲染状态的更新次数,这些是属于微观统计。从功能上分,又分为时耗统计和技术统计,时耗例如如渲染地形需要多长时间,技术统计是指渲染一个地形有多少个三角形面这些方面。下面我具体来介绍一下宏观统计里面的时耗统计是什么样的。
关于效率统计
关于水的渲染优化
下面简单介绍一下渲染状态的管理,D3D里面的SetRenderState函数设置渲染状态是一个非常耗时的操作,但是它每种渲染状态设置的时候,消耗的时间并不是相同的,具体的也可以通过前面所讲的统计方法,分析出到底哪个状态消耗的时间最多,我们就尽可能减少那个状态的设置。
关于渲染状态管理
下面介绍一下游戏当中的LOD。LOD技术主要是指对不同复杂度的模型,对同一对象采用不同复杂度的模型来渲染的一种技术,主要是根据视点与对象的远近来调整不同复杂度的模型。
关于游戏中的LOD
编者:感谢演讲者的分享,稀饭的同学抱走吧。
相关文章推荐
- 【转】3D引擎渲染效率如何提升
- 如何理解3D渲染引擎
- 3D引擎渲染效率如何提升
- 如何让ThinkPHP的模板引擎达到最佳效率
- 如何用DataSet.GetChanges来提升数据库资料更新效率。
- 如何提升MySQL批量插入的效率
- 了解浏览器如何工作—渲染引擎
- 如何使用PowerShell提升开发效率(以Windows Embedded CE为例)
- Horde3D——基于C++编写的3D渲染引擎
- PHP如何大幅度提升运行效率? -- 把它编译成机器码!
- WEB前端底层知识之浏览器是如何工作的(2)--渲染引擎
- 如何提升团队的研发效率?来听听阿里研发专家是怎么说的
- 如何提升JavaScript的递归效率
- Android-框架使用之-懒惰开发-如何提升开发效率
- PHP如何大幅度提升运行效率? -- 把它编译成机器码!
- 教你如何用 5 个 “F ” 大幅提升产品设计效率
- JavaScript 如何工作:渲染引擎和性能优化技巧
- 如何提升工作效率-收集加总结
- 如何提升团队效率