自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 优化的前提是质量尽量无损

为了提升游戏性能,各种优化手段纷纷拍马杀到,但是优化真的是没有一个        FFT作为Ocean Animation几乎是一个标配了,采用GPU FFT更是优势明显,为了优化显存,采用了RGBA16F的Buffer,这带来的好处是显存省了一把,速度也提升了,因为Sample的带宽降低了,然后

2014-03-09 15:31:27 965

原创 浮点数精度误差带来的一个BUG

浮点数我想没有程序员不了解的,大多情况下浮点数是可以满足精度的,而且32位的浮点数

2014-03-09 15:12:07 1961 1

原创 魔兽世界的Screen Space Local Reflection

魔兽世界虽然是一个老游戏了,但是它在图形渲染上还在不断地更新,虽然跟现在的很多引擎相比有些方面不是同一时代的,但是不得不说魔兽世界有些地方做的很到位,他的反射就用了一个很讨巧的方法就是前面一直提到的Screen Space Local Reflection(SSLR),这方面魔兽世界应该说是做的最好的        对于中低端显卡来说还是一个很费的操作,我们尝试了Screen Spac

2014-01-24 12:17:50 2528

原创 Impostor的副产品

最近在用Impostor优化主城性能,基本取得了阶段性的结果,对性能提升还是很明显的,GPU/CPU都很有优势,测试的时候有了一点意外的惊喜,经常玩游戏的人都知道远处的Mesh会闪的人眼睛都快要瞎掉了,尤其是那些建筑物的台阶,简直是烦的要死,到魔兽的主城转一转领一下暴风城的台阶就知道了,真心不爽,开了2xmsaa效果也不行,只有开了8xmsaa才会舒心一笑,但是这性能代价就大了去了。之所以闪的这么

2014-01-24 11:24:04 839

原创 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 1483

原创 提升树叶渲染性能

树的渲染的大部分消耗都是花在树叶上,为了是树叶看起来很茂密,美术一般会加很多叶子的三角形,但是三角形太多的话会让vs压力很大,因为树叶的动画都是在vsli

2014-01-24 10:39:08 1727

转载 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 993

转载 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 2488

转载 Zoom An Image With Different Interpolation Types

http://www.codeproject.com/Articles/236394/Bi-Cubic-and-Bi-Linear-Interpolation-with-GLSL

2014-01-19 17:03:13 1406

原创 Screen Door Effect

在游戏开发中难免会遇到物体逐渐消失或者出现的相关需求,在只有一个主光源的时候用translucent with z就可以简单解决,但是现在的引擎不支持点光源都不好意思跟人讲,如果要考虑点光源translucent with z还真是比较苍白,无能为力了只能。对于草这样overdraw很严重的情况用translucent with z无疑是对原来的性能消耗雪上加霜。对于物体切换lod时poo会非常明

2014-01-19 16:46:39 1920

原创 Triangle waves

一般的做周期曲线都采用sin来做,但是sin这个操作是个很费的操作,有时候需要一个近似的类似于sin的周期曲线,GPU Gems3第16章详细讲解了Crysis树木渲染的关键技术,其中就提到这个问题,这个方法被称之为Triangle Wave。Crysis将shader共享出来用的时候可以直接替换掉sin函数,赶紧记下来免得日后忘记了,Speedtree的shader里也是用这个来做树的动画的,可

2014-01-15 19:42:49 927

原创 空城

MMO游戏的主城是各种瓶颈的集散地,模型比别的区域要多出来很多,NPC也来凑热闹,有人的地方才有江湖,主城就是最大的江湖自然也就是玩家如春笋般孜孜不倦的一拨又一波,这对显卡带来非常致命的冲击,各种内存,显存吃紧,IO爆满,顿卡非常严重,如果是笔记本那真是惨不忍睹啊,换个固态硬盘笔记本马上回来个第二春,以前玩wow联想小Y显卡也不错,玩魔兽足够了,但是到了主城一转视角就卡几秒,后来果断加了个ssd,

2014-01-14 16:40:55 808

原创 Particle Trimming

Particle做为游戏表现的一大手段,对整个画面的提升有很大的作用,Particle越多让玩家觉得场景越丰富,但是随之而来的是对性能的严重吞噬,如果提升Particle是一个大的Title,这里介绍一下在不损失质量的前提下如果大幅降低像素填充的方法。        大多的Particle都是用AlphaBlend的方法进行绘制的,这意味着Particle本身面片的Z不会像不透明物体那样会有d

2014-01-13 11:05:29 1545

原创 Cache The RenderList

大部分游戏渲染的时候都会构建一个管理Render物体的List,所以简称RenderList,所有要绘制的物体的RT,Shader,Texture,Shader Constant都是保存在这个数据结构里的,构建好RenderList之后才会把这些需求发给GPU执行。        在场景物件很多的时候这个RenderList的构件时间极其夸张,有时候会占到Render线程一半的时间,更让人觉得

2014-01-13 10:28:01 1102

原创 In-Game HD Video Capture using Real-Time YUYV-DXT Compression

玩游戏的时候想截取视频一般都是通过第三方工具来完成的,Fraps很多时候会被用来截取实时的游戏视频,但是用了Fraps之后会发现帧率明显下降了很多,很影响游戏的体验。如果有一种可以实时截取游戏视频而不降低帧率的方法该多好啊,无意中发现Outerra的Blog有一篇Blog专门介绍了他们如何达到这个目的的,他们当然这个方法是需要内嵌到游戏本身的,不是像Fraps那么自由可以随便在那个游戏上,理论上应

2014-01-09 14:23:49 28153

原创 Box Projected Cubemap Environment Mapping

立方体映射于1986年首次在斯内德格林在他的论文“环境映射和预测世界其他应用程序”提出,[ 2 ]吉姆·博林和马丁·纽厄尔十年之后首次提出环境映射了。然而由于硬件在同时访问6纹理图像的的能力限制,使其一直没有得以在实际中使用。随着Nvidia 的GeForce 256的发布这个问题彻底解决。。Nvidia的立方体映射硬件“是GeForce 256一个突破性的功能。它将允许开发人员创建精确的,实

2014-01-09 10:25:55 2197

原创 Fast Precomputed Ambient Occlusion for Proximity Shadows

提起AO,大家一定会想到SSAO,SSAO不需要美术进行过多的参与,只需要调一下参数就万事大吉了,但是SSAO也有一些缺陷,噪声比较明显,有时候给人的感觉不是ao而是halo让人感觉画面变脏了,至于性能如果用一个quarter精度的搞一下,8600GT下720分辨率也是需要接近2ms的开销,这还是在没有Bilateral Filter下的开销,如果加了Bilateral Filter就会开销更

2014-01-08 09:38:33 1065

原创 Pre-Compositing Textures for Terrain Rendering

地形渲染作为室外游戏必备的功能,已经有很多成熟的LOD和Shading的算法,LOD的种类非常多,但基本都是那几种LOD的变种,技术也很成熟,一般来说好的游戏的LOD技术一定不会差。换句话说LOD不会是游戏渲染的瓶颈,地形很多时候是占屏幕像素最多的集合体,大部分地形都是通过分块也就是sector来渲染的,离camera最近的几个sector往往是像素贡献大户,很多时候离camera最近的4个sec

2014-01-07 19:10:23 1009

原创 Billboard矩阵

这几天在研究Impostor,按照传统的方法可以做出来不错的效果,采用GamaStura的方法很快就可以做出来不错的效果,但是因为要扩展一下,在原先的质量上提高,而且用Instance来画,这样只需要一个quad mesh,别的信息都放在Instance Buffer上。因此需要有个Billboard矩阵,也就是说需要将一个quad mesh转换到世界坐标系。    关于Billboard矩阵

2014-01-06 12:23:49 2432

原创 神器oDepth

关于Depth Buffer是做什么的,搞过渲染的人都会有100%的自信来回答是用来做什么的,Depth Buffer里保存的是什么东西大家应该也比较清楚,而且怎么从投影空间转换到世界坐标系稍微花点功夫就可以保证正确。如果需要为某一个像素写入指定的深度值该怎么办?Depth Buffer的值是GPU完成光栅化之后写进去的,似乎不好人工干预。嗯,的确。但是DX还是留了接口的,只是这个接口平时真的

2014-01-06 10:52:25 1129

转载 The Mathematics of the 3D Rotation Matrix

The set of special orthogonal matrices is a closed set. What does that mean, and why do we care?A question like this is usually discussed only in an upper-division set theory class, which is a class

2014-01-03 12:54:29 1873

原创 Bilateral Filter

Bilateral Filter是一个非常神奇的Filter,在实时渲染从低分辨向高分辨率转换的时候可以起到很好的抑制锯齿的作用。Jeremy在Mixed Resolution中有详细的讲到:一般的Filter是根据像素和周围像素的距离作为权重来插值的,而Jemery采用的是高精度和低精度depth或者normal的差异来计算权重,在游戏里depth很容易拿到,所以一般就采用depth差异来决

2014-01-02 19:53:58 2077

原创 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 2147

原创 GPU Profiling

提起优化,第一件事情要做的就是Profiling,因为没有经过Profiling谁都不知道瓶颈是什么,正确的Profiling是对游戏整体性能的全面认识。关于CPU的Profiling已经非常成熟,各种软件都很齐全,甚至没有这些软件,开发者也很容易自己写一个Profiling系统,最简单的就是在函数执行的开始调用QueryPerformanceCounter,记下时间,在函数执行结束的地方再次调用

2014-01-01 19:24:09 2345 1

原创 Quarter Buffer Rendering

游戏图形开发者对效率有着无止境的只求,总是希望在不损失质量的情况下用效率高的方法来提升游戏性能。分辨率作为游戏性能的一个非常关键的因素,当然也是被重点照顾的对象,Mixe Resolution主要讲的是一种用低分辨率一般是quarter buffer来渲染游戏的某一部分,比方粒子或者AO,粒子因为很多信息是低频所以采用quarter buffer问题也不大,而粒子往往是一个游戏性能开销的大头,

2014-01-01 19:04:12 1078

转载 Applying Sampling Theory To Real-Time Graphics

经常见到MJP在GameDev回答各种问题,去他的Blog逛了逛有不少很不错的内容,尤其是对AA的理论研究非常深入,将信号处理的理论应用到游戏渲染力。Computer graphics is a field that constantly deals with discrete sampling and reconstruction of signals, although y

2014-01-01 18:20:00 1355

转载 A practical guide to SSE SIMD with C++

This is a guide to Streaming SIMD Extensions with operation system independent C++. Also the details and troubles of SIMD designing with SSE will be addressed in detail.1.0 Introduction2.0 What is

2013-12-31 13:54:45 1021

转载 Avoiding the Cost of Branch Misprediction

Introductionby Rajiv KapoorToday's modern processors derive much of their performance by executing instructions in parallel and before the time when their results are actually needed. When a s

2013-12-31 13:13:14 1188 1

转载 Let's Render Some Foliage

可以说是精简版的SpeedTree,远处的树是根据Impostor画出来的,可以画大规模的森林。IntroductionThis blog series discusses some ideas and issues around rendering foliage.  Why?  I’m on Intel’s Game Technology Developme

2013-12-31 13:12:11 985

转载 Outdoor Light Scattering From Intel

非常不错的与计算的大气效果,更难能可贵的是有Volume的 Light shaft,效果叼炸了This sample demonstrates how high-quality light scattering effects in large outdoor environments can be rendered on Intel HD graphics in real time. T

2013-12-31 13:08:48 1248 1

转载 Maximum FPS: Three Tips for Faster Code

Welcome back to Maximum FPS! Last month I spent a long time discussing the issues involved with writing to vertex buffers in AGP memory. If you downloaded and looked at the sample code that accompanie

2013-12-31 13:03:36 1164

转载 快速冲内存定位的方法

今天遇到一个冲内存的问题,但是没看出来在哪里冲的,网上搜了一下有一个非常简单的方法可以快速抓住第一现场。http://www.brucesky.com/articles/604程序BUG往往因为无知和无意识悄然埋下。在网络库中,我写了这么一段关闭socket的代码:01void CTcpSocket::Destroy(BOOL bNotify

2013-12-30 13:20:05 1043

原创 半像素引起的那些坑

DX9下面的半像素偏移估计坑了不少人,经常不小心半像素偏移搞错就会引起很奇怪的原因,最后查了半天才发现是这么小一个问题,实在令人有些恼火,所以在DX10之后这个东西被当做垃圾直接给扔了,在DX9下面还不得不继续被其迫害。大概想了一下我被这个问题坑了好几回了,有些已经想不起来了,只能把想起来的先记下来:1.UE3早期版本的AutoBrightness有个很诡异的问题,AutoBrightness

2013-12-29 00:05:02 2636

转载 Impostor on Intel WebSite.

IntroductionRendering dynamic, complex scenes inreal-time is a challenging task. Developers and gamers alike love to haveenvironments that are as realistic in appearance as possible withoutsacrifici

2013-12-28 23:32:35 722

转载 C4 Engieng Impostor for Tree

Impostors(Redirected from Using Impostors)Figure 1. Thousands of trees rendered as real models close up and as impostors far away.The C4 Engine includes powerful impostor technol

2013-12-28 23:30:40 952

翻译 Dynamic 2D Imposters: A Simple, Efficient DirectX 9 Implementation

Introduction使用 2 Dimposters 的技术正在世界上电脑游戏变成越来越流行。目标是在没有降低细节的情况下采用将部分场景通过缓存的方式保存到显存里。场景中的三维物体被采集到一些分散的图片中。然后场景中的真实三维物体在渲染的时候被缓存的Impostor替代。通过这种方式Impostor就成为了三维物体简化方式。因为现代的游戏变比较大而且要求远比以往要多的细节,开发者正在逐渐地找

2013-12-28 23:17:39 1892

转载 GPU Based Water Simulator

这个方法非常方便美术来编辑,美术只需要提供高度图就可以生成整个地图的水域,包括河流。交互的方法也很简单,效果很不错效率也还可以,交互的波遇到障碍物还会反弹,水流的效果是根据高度的梯度算出来的,效果很逼真。This is something I played with two years ago - I posted it as a demo on gamedev.net for

2013-12-26 09:08:41 905

原创 CDLOD Terrain Paper

地形LOD方面非常不错的一篇Paper。http://www.vertexasylum.com/downloads/cdlod/cdlod_latest.pdf可以将远处的的地形sector合并在一起画,大量降低DP数目,在8600GT上2km*2km的地形画一次depth pass大概在0.8ms左右LOD过渡非常平滑,道路和地形不会存在非常明显的bias问题

2013-12-26 09:04:40 3261

转载 Real-Time Volumetric Light Shafts

真正的Volume Light Shaft,采用Interleave Sample大幅优化Volume渲染的开销。

2013-12-25 10:14:53 2085

转载 Imposters for Tree

用Impostor也就是通俗的Billboard来绘制树已经成为业界标准,SpeedTree,FarCry,Unigine,Unity都是用同一技术,只是不同的是生成Impostor是offline还是realtime的区别,当然两者各有各的好处:    Offline生成的贴图可以压缩但是因为拍的方向是固定的,所以会在顶视图的时候效果很差,而且角度变化过大的时候会明显pop,实时生成的I

2013-12-25 10:04:03 1864

Shaderx5:Advanced Rednering Techiniques

Shaderx5:Advanced Rednering Techiniques

2012-09-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除