这里找吧,非常巨大的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半壁江山,牛逼。