[siggraph14]《正当防卫3》的Clustered Shading光照技术


siggraph2014 asia, 这个是siggraph首次在中国举行,城市是深圳,这个course是在这次会议上分享的。
由avalanche studios的emil persson(humus)带来:< Practical Clustered Shading >

sum
clusterred shading是把空间进行3维的划分,然后把光照信息存到这些cell里,然后依据此来shading。
这是一个颇具革命性的进步,由于它是对光进行了一个组织,使得海量光源的渲染效率,自定义的材质光照类型,透明物体的光照都变得更加高效和可能。
光照信息开始在3d空间去做(volume化)是最近挺明显的一个趋势。

历史
milo写了一个较为全面的历史,以及相关的研究者和文献,需要更多的细节可以看这个:
http://miloyip.com/2014/many-lights/
实际高品质游戏的应用,就是avalance studio的just cause 3(正当防卫3),这个游戏刚刚在E3上面有视频,上天入地整个一个蜘蛛侠,非常火爆,可以说是一个非常有说服力的案例了。

空间划分
[siggraph14]《正当防卫3》的Clustered Shading光照技术_第1张图片
avalanche使用的是把空间分成64x64x16份,深度方向是16份,采用exponential的分布。
然后由于很远的地方不用点光源来lighting,所以这个深度的范围是一个有限的,不用按照just cause3几公里的视距来。

光照数据

just cause 3使用的是类light link list的做法,就是使用3d texture来存放一个lighting信息的[offset, size],使用这个去sample另外一个存放光照细节的texture来获取lighting信息。
just cause 3是使用dx10级别的hardware,所以没有使用直接的dx11的light link list,但是基本的意思相仿。

光照
可以看到,想deferred/forward是和clustered shading正交的,都可以很好的支持。
尤其是自定义的材质,这个实在太棒了。

性能

可以看到,在sun light only的情况下,会略有劣势,其余的情况都是性能更好,而且灵活性大太多了。

你可能感兴趣的:(游戏,引擎,渲染,Siggraph,clustered)