Optimization
文章平均质量分 66
关中出刀客
这个作者很懒,什么都没留下…
展开
-
Quarter Buffer Rendering
游戏图形开发者对效率有着无止境的只求,总是希望在不损失质量的情况下用效率高的方法来提升游戏性能。分辨率作为游戏性能的一个非常关键的因素,当然也是被重点照顾的对象,Mixe Resolution主要讲的是一种用低分辨率一般是quarter buffer来渲染游戏的某一部分,比方粒子或者AO,粒子因为很多信息是低频所以采用quarter buffer问题也不大,而粒子往往是一个游戏性能开销的大头,原创 2014-01-01 19:04:12 · 1103 阅读 · 0 评论 -
MotoGP: road reflections
MotorGP路面反射采用的也是屏幕空间的反射,对原始的屏幕空间反射做了一些修改,对于摩托车还是按照真实物体的低精度模型进行渲染,树和远处的物体都是直接flip了一下,简单粗暴,效果也很不错。过几天下个MotorGP研究一下,应该和wow的方法很接近。My final task on the quest for wet weather was figuring out what to do转载 2014-01-21 09:57:32 · 1019 阅读 · 0 评论 -
魔兽世界的Screen Space Local Reflection
魔兽世界虽然是一个老游戏了,但是它在图形渲染上还在不断地更新,虽然跟现在的很多引擎相比有些方面不是同一时代的,但是不得不说魔兽世界有些地方做的很到位,他的反射就用了一个很讨巧的方法就是前面一直提到的Screen Space Local Reflection(SSLR),这方面魔兽世界应该说是做的最好的 对于中低端显卡来说还是一个很费的操作,我们尝试了Screen Spac原创 2014-01-24 12:17:50 · 2565 阅读 · 0 评论 -
The Compact YCoCg Frame Buffer
RealTimeRendering能推荐必为精品!http://www.realtimerendering.com/blog/second-jcgt-paper-is-up-for-download/ YCoCg在图像压缩里广泛使用,在游戏里第一次听到这个词是在寒霜引擎的Five Rendering Idea里用来做后处理优化,当时是第一次听到这个方法觉得很牛逼:)第二次原创 2014-01-24 10:52:51 · 1550 阅读 · 0 评论 -
Triangle waves
一般的做周期曲线都采用sin来做,但是sin这个操作是个很费的操作,有时候需要一个近似的类似于sin的周期曲线,GPU Gems3第16章详细讲解了Crysis树木渲染的关键技术,其中就提到这个问题,这个方法被称之为Triangle Wave。Crysis将shader共享出来用的时候可以直接替换掉sin函数,赶紧记下来免得日后忘记了,Speedtree的shader里也是用这个来做树的动画的,可原创 2014-01-15 19:42:49 · 966 阅读 · 0 评论 -
空城
MMO游戏的主城是各种瓶颈的集散地,模型比别的区域要多出来很多,NPC也来凑热闹,有人的地方才有江湖,主城就是最大的江湖自然也就是玩家如春笋般孜孜不倦的一拨又一波,这对显卡带来非常致命的冲击,各种内存,显存吃紧,IO爆满,顿卡非常严重,如果是笔记本那真是惨不忍睹啊,换个固态硬盘笔记本马上回来个第二春,以前玩wow联想小Y显卡也不错,玩魔兽足够了,但是到了主城一转视角就卡几秒,后来果断加了个ssd,原创 2014-01-14 16:40:55 · 863 阅读 · 0 评论 -
Real-Time Local Reflections
Local Reflection是一个非常有创意的优化方法,用很小的代价获得了实时反射,这里的方法应该是和Crysis类似的,采了nSample次Depth来得到相交的点,其实不需要这么麻烦,后面我会专门写一个blog来详细描述wow是怎么用更优雅的方式达到更好的效果。I've been experimenting a little bit with Real-Time Local Refle转载 2014-01-21 09:14:34 · 2549 阅读 · 0 评论 -
Particle Trimming
Particle做为游戏表现的一大手段,对整个画面的提升有很大的作用,Particle越多让玩家觉得场景越丰富,但是随之而来的是对性能的严重吞噬,如果提升Particle是一个大的Title,这里介绍一下在不损失质量的前提下如果大幅降低像素填充的方法。 大多的Particle都是用AlphaBlend的方法进行绘制的,这意味着Particle本身面片的Z不会像不透明物体那样会有d原创 2014-01-13 11:05:29 · 1599 阅读 · 0 评论 -
Cache The RenderList
大部分游戏渲染的时候都会构建一个管理Render物体的List,所以简称RenderList,所有要绘制的物体的RT,Shader,Texture,Shader Constant都是保存在这个数据结构里的,构建好RenderList之后才会把这些需求发给GPU执行。 在场景物件很多的时候这个RenderList的构件时间极其夸张,有时候会占到Render线程一半的时间,更让人觉得原创 2014-01-13 10:28:01 · 1149 阅读 · 0 评论 -
Pre-Compositing Textures for Terrain Rendering
地形渲染作为室外游戏必备的功能,已经有很多成熟的LOD和Shading的算法,LOD的种类非常多,但基本都是那几种LOD的变种,技术也很成熟,一般来说好的游戏的LOD技术一定不会差。换句话说LOD不会是游戏渲染的瓶颈,地形很多时候是占屏幕像素最多的集合体,大部分地形都是通过分块也就是sector来渲染的,离camera最近的几个sector往往是像素贡献大户,很多时候离camera最近的4个sec原创 2014-01-07 19:10:23 · 1031 阅读 · 0 评论 -
Bilateral Filter
Bilateral Filter是一个非常神奇的Filter,在实时渲染从低分辨向高分辨率转换的时候可以起到很好的抑制锯齿的作用。Jeremy在Mixed Resolution中有详细的讲到:一般的Filter是根据像素和周围像素的距离作为权重来插值的,而Jemery采用的是高精度和低精度depth或者normal的差异来计算权重,在游戏里depth很容易拿到,所以一般就采用depth差异来决原创 2014-01-02 19:53:58 · 2144 阅读 · 0 评论 -
LogLuv Encoding for HDR
对于HDR的Buffer Format,个人还是认为用16f或者7e3比较好,RGBM,RGME,LogLuv个人都不是很喜欢,因为这么做的目的是什么呢,是降低带宽,节省显存,但是现在的显卡包括nv8600这样的显卡,省这么点带宽对性能的影响真的微乎其微,也许是我测试的是Deferred Shading,因为对于Deferred Shading来说HDR的Buffer只有在算Lighting之后才原创 2014-01-01 19:52:59 · 2209 阅读 · 0 评论 -
GPU Profiling
提起优化,第一件事情要做的就是Profiling,因为没有经过Profiling谁都不知道瓶颈是什么,正确的Profiling是对游戏整体性能的全面认识。关于CPU的Profiling已经非常成熟,各种软件都很齐全,甚至没有这些软件,开发者也很容易自己写一个Profiling系统,最简单的就是在函数执行的开始调用QueryPerformanceCounter,记下时间,在函数执行结束的地方再次调用原创 2014-01-01 19:24:09 · 2444 阅读 · 1 评论 -
优化的前提是质量尽量无损
为了提升游戏性能,各种优化手段纷纷拍马杀到,但是优化真的是没有一个 FFT作为Ocean Animation几乎是一个标配了,采用GPU FFT更是优势明显,为了优化显存,采用了RGBA16F的Buffer,这带来的好处是显存省了一把,速度也提升了,因为Sample的带宽降低了,然后原创 2014-03-09 15:31:27 · 983 阅读 · 0 评论