画出了几个比较吃卡的选项
收集了一些名词解释:
ssao全称“screen-spaceambientocclusion”(屏幕空间环境光遮蔽)。其最先运用于crysis(孤岛危机)游戏中,通过gpu的shader实现
ssao通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以近似地表现出物体身上在环境光照下产生的轮廓阴影。可以利用“逐象素场景深度计算”技术计算得出的深度值直接参与运算。
现在的效果确实错误还比较大,应该先进行简单的空间划分(或类似处理)然后计算。
不过个人认为这种方法只是近似地模拟,效果并不正确,但确实能增强场景的层次感,让画面更细腻,让场景细节更加明显。
不同于显卡驱动中普通的ao选项,burnout的ssao是全动态的,无需预处理,无loading时间,无需消耗内存,不使用cpu,全由gpu处理,对gpu有较大的消耗
ssao默认是关闭的,可以在游戏视频选项中打开
评测
在7950gt下跑,加了ssao后,下降了15%。而且,显卡越烂,下降的越厉害。效率消耗主要是在于要多渲染一遍场景到深度以及之后进行的ssao处理。这遍可以进行优化,如果物体的纹理不带alpha,则可以把他们都合在一批或几批渲染。至于深度图的尺寸,采用了与窗口一样的尺寸,这样精度高。也可以采用低分辨率,但效果会有锯齿,还需要进行模糊处理才比较自然。当然,如果本来就用了延迟渲染技术,本来就有深度图了,那就可以直接拿来用了。
与prt对比
prt用于静态场景确实是个比较好的方案,毕竟可以预计算。但是对于动态的场景,还需要动态更新。另外,prt的质量依赖于网格的细分程度,要是模型太简,则效果也糟糕。
因此,prt对于虚拟现实项目里的高楼大厦等场景(这些模型都是很精简的)来说,就显得不合适了
目前已发行的游戏中,运用ssao的游戏有
crysis(孤岛危机)
burnout(tm)paradisetheultimatebox(火爆狂飙5天堂)
另外,星际争霸2的开发也运用到了ssao
hdr是英文high-dynamicrange的缩写,中文译名为高动态光照渲染。hdr可以令3d画面更像真,就像人的眼睛在游戏现场中的视线效果,大幅提升游戏的真实感。
hdr并不是想许多玩家理解的那样就是简单的“高亮”,不是让画面有更大的亮度或是对比度,大家都知道,当人从黑暗的地方走到阳光下时,我们的眼睛会不由自主的迷起来,那是因为在黑暗的地方,人为了更好的分辨物体,瞳孔张开很大,以便吸收光线;而突然到了光亮处瞳孔来不及收缩,视网膜上的视神经无法承受如此多的光线,人自然会迷上眼睛阻止大量光线冲击视神经。我们的眼睛非常敏感,而pc就不具备这种功能。所以,hdr的最终效果因该是亮处的效果是鲜亮的,而黑暗处你也可以清晰的分辨物体的轮廓,位置和深度,而不是以前的一团黑。动态、趋近真实的物理环境是hdr的特效表现原则。
一、不断变换的光强
这两张图片表现了游戏的曝光控制功能,模拟人眼自动适应光线变化的能力,而不是照相机。很明显左边的图木板反射的光强度要高,但它不等同于hdr。在游戏中,如果你盯着一个面向阳光直射的物体,物体表面会出现丰富的光反射(也就是下图的效果);如果盯着不放,物体表面的泛光会渐渐淡出,还原出更多的细节(上图的效果)。hdr特效是变化的,因此称做高动态光照。在这方面,valve的设计非常的精巧。
二、hdr的立方体映射
在hdr的立方体映射【图】1中,手枪闪亮的金属表面很实际的反映出周围事物留下的倒影,蓝天映衬在击锤左侧,而褐色的建筑出现在右侧,该场景中地面和前方的场景是比较暗的,以前的光渲染方式肯定会将手枪表面和周围场景一致化,做出来的效果就是一团黑或者手枪表面是永远单调的反光。
hdr的立方体映射【图】2则表现强烈的光束从窗外投射进来,枪支的金属表面上反射出异常明亮的光影。
三、hdr开/关画质对比
hdr特效是实时产生的,你把它关掉当然也能玩,但这些小细节和其它特效一起,共同产生了逼真的画面。想看看关掉hdr会有什么效果,可以参考以下对比画面:
关掉hdr之后的效果,以现有眼光来看也还不错,但绝大多数人体验过hdr的效果后,就不愿意再面对那些平淡无奇的画面了。
四、hdr技术的实现
hdr就是一种新的模型,它可以将画面中的每个象素色彩和亮度值用实际物理参数或是线性函数来表示。这样每个参数都可以用实际数值来表示,而且不再限定整数。在实际的应用中,电脑无法达到无限取值范围,所以nvidia采用的是有industriallinghtandmagic开发的16位openexr格式,需要1个bit位用来标志“指数”,5个bit用来存放指数的值,10个bit存放色度坐标(u,v)的尾数,其动态范围从6.14×10-5到6.41×104,在显卡中处理分为3个步骤:
1、将画面用高光照动态范围渲染,并储存每个象素的亮度特性,而着色器、纹理过滤以及缓存操作都支持浮点格式;
2、将hdri画面转成低动态范围的画面(rgba或是srgb);
3、色彩和gamma校正后传送到显示设备。
景深(depthoffield):
在摄影教程上,景深是指在焦距里出现物体前后的距离。你也可以经常在电视里看见这样的镜头,两个角色一前一后对话的时候,通过改变焦距吸引你的注意力。在crysis里也会采用这种表现手法
容积雾(volumetricfog):
和云系统象类似,实时的雾不但可以反射光线,而且可以适应不同的地形
particle
粒子是一种3d概念,指没有大小、形状的对象,简单地说就是“点”,一般都用一个扁平的公告板贴图(永远对这镜头的贴图)增加效果,一般处理火星、烟雾、火焰之类。如crysis里粒子效果,我只看出低和中的差异低的烟雾是扁平的,会和地面有交界,中以上都是容积性的,没有交界。再高就看不出来了。
垂直同步
1、要知道什么是垂直同步,必须要先明白显示器的工作原理。
显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数——水平同步和垂直同步。
2、啥叫水平同步?啥叫垂直同步?
垂直和水平是crt中两个基本的同步信号,水平同步信号决定了crt画出一条横越屏幕线的时间,垂直同步信号决定了crt从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着crt显示器的刷新率水平!
3、关键部分
为什么是否关闭垂直同步信号会影响我们cs中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。
如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。
而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。
但是,但是,但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因。