[转]游戏中各种性能优化方法(不断更新)
http://www.cppblog.com/liangairan/archive/2013/03/23/198749.aspx
谈到游戏中的性能优化,说白了就是如何提高帧率和降低内存。
提高帧率的基本原则就是减少DP次数,还有是找出时间消耗高的程序代码加以修改。
但引擎涉及的东西非常多,有时优化要从多方面入手,下面一个一个来说明。
首先是水体渲染的优化:
现在很多游戏的习惯做法就是把水放在地某个高度的位置,然后地形在上面,从裁剪的角度来看,只要看得到地形,水是必然会渲染的,但如果我们看到的地形都是在水的上面,那这样渲染就太浪费了。其实有个很简单的做法,就是把地形的block,当然,我们可以把block再细分成一逻辑上的block,每个block要记录是否有地形的顶点在水的下面,有的话,如果这些block要渲染,那水也就渲染,否则水就不渲染。
地形优化:
四叉树地形LOD是最基本的优化方法了,不过这里要注意一点,每个地块对应不同LOD加上不同裂缝组合的indexbuffer,如果一开始把所有这些可能存在的indexbuffer都创建出来,那内存会非常大。我的做法是:当用到某个IndexBuffer的时候才实时创建,这样大大减少了内存。因为有很多种情况下的IndexBuffer在实际情况下是不会用到的。
粒子系统的优化:
传统的粒子系统的做法是在CPU上计算好粒子的四个顶点位置然后再填入纹理,现在有种优化方案是:定义粒子的顶点格式只有中心点和width,height,在CPU上只计算实时的中心点位置与width和height的大小,然后在GPU上再根据这些数据计算回粒子的四个顶点。
这种优化方案可以减少粒子在CPU上的运算量,但虽然利用到shader。
还有是粒子系统要共享VB和IB哦。
骨骼动画优化:
利用GPU计算顶点是骨骼动画优化的最有效手段,现在很多人的做法是只把骨骼动画的矩阵转到GPU,然后在GPU计算每个顶点的位置。这种做法受到了shader寄存器数量的限制。其实还有一种做法是把矩阵写入一个1行的浮点纹理,试想一下,如果是1X1024的浮点纹理,那可以存1024 / 4 = 256个矩阵(1个像素是R32G32B32A32F四个浮点的纹理),这种方式要求显卡支持并占一定的带宽。
模型渲染优化:
可以利用hardware instancing,LOD等方法。带骨骼动画的模型,在DX10以上可以实现骨骼动画instancing。
场景优化:
现在流行occullsion优化,就是把被遮挡的物体不渲染出来,我简单地说一下这种实现的原理:
开一个RTT,把在视锥范围内的渲染物取AABB,然后把这个AABB赋一个颜色(每个物体的AABB颜色都不一样),然后渲染的时候把这个颜色作为输出颜色渲染出来。因为开了深度,如果在后面被完全遮挡的物体,那最终这张RTT纹理是不存在这个物体的颜色,根据一些方法可以知道这个纹理是否有这颜色,然后通过这个颜色索引回该物体,然后把它剔除掉。DX9的occullsion query就是这样弄。还有Occlusion Culling,我相信原理也是类似这样。
陆续更新中……
转载于:https://www.cnblogs.com/pulas/archive/2013/03/24/2978308.html
[转]游戏中各种性能优化方法(不断更新)相关推荐
- 谈谈VR游戏中的性能优化
VR游戏相对传统游戏,个人认为主要有三个方面的不同:玩法设计,输入方式,性能压力.今天就来谈一下VR游戏中的性能优化. 为什么VR游戏的性能压力很大? ·主要有三个因素的影响:高帧率,高分辨率,画两遍 ...
- Android中的性能优化方法
文章目录 1. 为什么要进行性能优化 2. 提高应用性能的优化方向 2.1 布局优化 2.1.1 merge标签 2.1.2 ViewStub标签 2.2 绘制优化 2.3 内存泄露 2.3.1 静态 ...
- Android 性能优化方法
2019独角兽企业重金招聘Python工程师标准>>> Android 性能优化方法 对于一些Android项目,影响性能瓶颈的主要是Android自己内存管理机制问题,目前手机厂商 ...
- 大主子表关联的性能优化方法
[摘要] 主子表是数据库最常见的关联关系之一,最典型的包括合同和合同条款.订单和订单明细.保险保单和保单明细.银行账户和账户流水.电商用户和订单.电信账户和计费清单或流量详单.当主子表的数据量较大时, ...
- HBase性能优化方法总结(四):数据计算
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第四部分内容:数据计算相关的优化方法 ...
- HBase性能优化方法总结(4):读表操作
来自:http://www.cnblogs.com/panfeng412/archive/2012/03/08/hbase-performance-tuning-section3.html 本文主要是 ...
- HBase性能优化方法总结(3):写表操作
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第二部分内容:写表操作相关的优化方法 ...
- HBase性能优化方法总结(2):表的设计
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第一部分内容:表的设计相关的优化方法 ...
- 列举6个常见且实用的Web前端性能优化方法
在如今这个信息爆炸的时代,人们的节奏总是快速的,对于一个网站的耐心毕竟是有限的可怜的,如果网站不进行优化必定会流失相当一部分的客户,带来不必要的损失.那么从Web前端的性能优化上来说有哪些常见.实用的 ...
最新文章
- mysql分页关键词_数据库分页关键字
- java 锁旗标_Java多线程
- 一个IT青年北漂四年的感悟
- Linux下没有包含头文件(不知是哪个)导致编译无法通过的解决心得
- webgis 行政图报错_WebGIS 地图 示例源码下载
- C#关键字详解第一节
- java抠图边框颜色处理_java 实现抠图(项目应用场景:抠图章)
- oracle添加路由,创建持久性(静态)路由
- java构造器 权限_一文搞懂Java的 构造方法 和 访问权限
- 随机森林的基分类器可否由决策树替换为线性分类器或者K-NN?
- 中国语音产业的江湖史
- MATLAB中的信号处理
- 【优雅解决】:换源后 sudo apt-get update 出现 N: Updating from such a repository can't be done securely……
- 关于OpenCV中cv2.imwrite保存的图片是全黑色的解决方案
- python实用性函数分享_17.【Python学习分享文章】function(函数)1
- ramdisk“snmptraps”已满。因此,无法写入文件
- 项目7 创建与使用触发器
- 1990-2020年各行业竞争度--赫芬达尔指数表
- ASP.net 仿QQ弹出窗口
- 工序质量评价及改进(转载)