[gpu pro]《狂野西部:生死同盟》的渲染技术
![[gpu pro]《狂野西部:生死存亡同盟》的渲染技术](http://img.reader8.net/uploadfile/jiaocheng/201401101/2917/2014012903175150321.jpg)
CallOfJuarez:BoundInBlood,中文名是《狂野西部:生死同盟》,很棒的一个渲染技术回顾。
开发商是techland,以前没太听过,查了下是建立于1991年,现在还在开发nextgen的游戏,not bad!
有自己的engine,还在不停地发展。
这篇文章非常精彩,紧凑含金量高。
deferred shading
这里techland认为deferred shading最大的好处就是可以简化render pipeline,这一点非常的赞同。
在这个基础上带来多光源的益处,更容易做的decal,ssao等等。
pipeline
开始第一步构建一个用于ambient lighting的texture,32x32,sample的时候是使用normal和sky的dot值来sample。
里面构建的东西就是各种自定义了,这个完全可以自己项目发挥。
cloud mask构建,用于render cloud投在地上的shadow。
gbuffer:
![[gpu pro]《狂野西部:生死存亡同盟》的渲染技术](http://img.reader8.net/uploadfile/jiaocheng/201401101/2917/2014012903175150322.jpg)
techland在接下来的很多地方使用了quarter buffer,所以将depth buffer downsample到1/4。
ambient lighting(simple GI):
techland实现了一个很简单的gi,在1/4buffer上面render物件的简化模型(box,sphere,cone。。。),使用min/max blending。
并且在1/4buffer渲染了一个volumetric fog。
一个简单的shadowmap构建在1/4 buffer上面,放在r通道,另外两个通道是cloud shadow和ssao。
ssao就是最简单的那种,半球采24sample。
然后这个1/4buffer进一步downsample(并且带着blur)到1/16,为后面particle用。
lighting pass:
linear space lightingrgba16f on pc, 7e3 on xbox360shadow:4个cascadecascade之间有smoothssao和cloud使用bilateral upsampling apply回来rain:使用类似shadow map的方式来计算雨的遮挡tonemapping有eye adapt,->最后转回正常的color space->color grading。
其他:terrain:heightmap basedgeometry mipmappingprocedural vegetation&mesh spreadingroad system:编辑road,path,小溪geometry:portalsoccluderslod小物件的管理简而言之,对于做项目的程序员来说,这个是一个很不错的可以对照来看看自己引擎如何的文章。