Uncharted 2: HDR Lighting

http://www.gdcvault.com/

这里找吧,非常巨大的pptx。

 

基本3各部分,gamma&tonemapping,ssao,rendering pipeline,前面很枯燥,后面高潮迭起。

 

 

 

gamma&hdr

 

这部分看得比较枯燥,直犯困,用的时候直接参考下吧。

基本概念就是图片中存储的数据(rgb的亮度值)和monitor输出的值是有一个函数关系的,并不是一致的。

所以要进行一些处理才能达到gamma correct。

这个处理可以有硬件支持,srgb系列,可以应用到texture和rendertarget。

 

hdr那部分也看得很无趣,觉得有用的就是filmic tonmapping本来是很多texture sample和log等计算,但是有个哥们给出一个几个乘法和除法就ok的估计值,也很好。

 

 

 

ssao

 

热门一段时间了,在被阴影覆盖的地方,可以显著提高画面质量。

无normal版本是球状detect occlusion。

后面cryteck开始基于deferred shading的,在normal基础上使用半球来做,这样normal map也有ssao效果在里面。

uncharted2用volume来做探测。

一些相关optimize&polish

  • 1/4 size的depth buffer
  • 横竖膨胀一下(这让我想起来crysis的object motion blur也是有膨胀dilate这一步的)
  • blur

然后depth不连续的地方等等会有一些问题,但是一般都是业内人士才看得出来,玩家看不出来就ok,就不多费力气了(nice point)

 

ssao是spu上做的,6个一起1ms搞定,spu威武,可以预见larabee是大有可为的。

 

rendering pipeline

 

很cool的pipeline。

spu上做了标准的vertex processing, ssao, full screen lighting。

uncharted1的时候 deferred lighting就是分tile做的,可能就是spu做的,或者为spu埋下伏笔。

 

opaque pass是rgbm的msaa2x,然后到translucent pass时候resolve到fp16来做。

 

translucency pass是1/4 buffer做的。

 

postfx一部分是spu做的,distortion和ui是gpu上做的,

 

shadow上不只是sunlighting shadow,还包括spotlighting shadow。

 

后面还说到了spu上做ambient cube map,里面图上也有lightmap的痕迹,所以可能是lightmap+irradiance volume都有的。

 

然后是naughty dog的最high的底层优化,这个细节就跳过吧,基本过程就是读硬件spec,instrisic代码细节,分析代码,然后实践。

底层优化过之后都是性能翻倍的结果。

 

naughty dog无愧为业界底层之王。spu抗下gpu半壁江山,牛逼。


原文链接: http://blog.csdn.net/ccanan/article/details/5649924

你可能感兴趣的:(Uncharted 2: HDR Lighting)