[sig13]Lighting technology of "The Last Of Us"

最后更新于:2022-04-01 11:27:04

![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215544b42b3.jpg "") siggraph13上面的文章,相关技术还是用在ps3上。 《The Last Of Us》实实在在代表ps3的图像最高水平: **LightMap** ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215544de376.jpg "") 使用的是light map,技术从quake1时代就一直在用,到现在依旧是很有生命力,对于静态场景静态光照的确是更优的选择。 ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554560941.jpg "") 分成ambient component和directional component两个部分:和之前valve的做法很像了,然后把相关的光照信息使用spherial harmonic系数存下来。 **directional ambient shadow** paper中给的图不是特别好,看这个吧: ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155458bf62.jpg "") 不同于传统ambient occlusion这个是对于ambient lighting中有方向的部分 实际生活中ambient lighting也不是各个方向一样的,图中就是右上角照过来的ambient lighting要强一些,人在右上角方向才应该产生比较多的ambient shadow,而如果是在右下角就应该少。 传统ambient shadow会是根据物体表面normal来计算occlusion(或者说是shadow),没有考虑ambient lighting本身的方向。 这里naughty dog的做法是: ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215545b5560.jpg "") - 先是根据light map中有方向的部分去渲染屏幕空间中,ambient lighting的主要的方向 - 然后使用这个方向去和人物做line check - 这个检测是在spu上做的 - 人物也是使用了胶囊体来模拟来简化计算 - 最后产生一个屏幕空间的ambient shadow **接缝处理** 也谈到了light map典型的一些问题,比如接缝处理等等。 这些在地形渲染上也会有,做一个焊接的操作
';

CompanyOfHeroes2渲染技术

最后更新于:2022-04-01 11:27:01

文章链接:http://url.cn/OzAQM8 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215543a72bc.jpg) 主要讲即时战略游戏CompanyOfHeroes2在冬天环境下的一些渲染技术,文章结合硬件以及游戏的实际情况,在每一种方法背后,还列出思考和尝试的过程,很实战的一篇。 **物件上的积雪** **积雪** relic试图做geometry上的积累,但是这个要达到好的效果,就需要有一个很好的积雪边缘fading的效果,这个要做好,就需要offline工具来生成这些边缘和normal的信息。 并且需要在shader里面产生geometry,并且有很多例外,所以最后relic放弃了这个做法。 进而relic结合了company of heroes的特点,2.5d的上帝视角,所以其实做了geometry积累也没有那么大的意义,转而来让雪可以在color上fade掉就可以: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215543c9c79.jpg) 那这个就容易太多了,在vertex shader里面计算出要积雪的distance,在pixel shader里面fade out即可。 **snow shadow map** 让最上面的地方才有积雪,这个用一个低精度的类似shadow map即可得到occlusion信息,潮湿什么的都可以这么做。 另外这个shadow map可以进行一些扩展,记录min/max height, relic使用这个做了边缘fade out的改进,使得效果更加的自然。 **地形上的雪** 地形上的雪是额外的一层,不属于地形标准层的一部分。 自己可以有高度。 dx11上面使用tesselation来提升效果。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215543e31a5.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554413f20.jpg) 车辆在雪地上的痕迹通过一个track map来描述,dx11就是用tessellation来生成geometry,dx10(dx9已经去死了)上面只是normal变下。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155442c9eb.jpg) **冰** ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155444883a.jpg) 这里着实让我兴奋了下: 冰使用类似地形的多层材质的方法来渲染,这样冰的破损,再冻回来都可以有一个很好的表示,realtime时候的做法就和编辑地形材质一样,在material mask上面修改即可。 但是冰的破损如果只是这样,边缘就太润滑了,而且mask精度低的话,还会有明显的“格子”感,这里relic使用类似shadow中poisson filter的方法,使用一个贴图扰动uv,来达成碎冰状的感觉: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554462931.jpg) **volume ambient occlusion** 这里也展示了relic良好的技术结合产品的综合能力。 - 雪地场景的ao是格外的重要----场景颜色简单,偏白色(简直就是展示ao的专用场景么) - rts游戏没有必要做到那么精细的ao - 重用snow shadow map来产生ao,而且这个ao是volume based,而不是screen space这种在理论上还是有不少信息缺失的情况 效果不俗: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554486a74.jpg) **其他** **暴风雪的优化**: 使用1/4 buffer,可以大幅度提高性能 **deferred shading**: 和之前在本博客提到的多个地方也比较一致,deferred shading如果只是认为为多光源而生就太不到位了,它很好的简化了渲染pipeline,把geometry&material信息与shading分开,提升了整个pipeline的结构。 如果pipeline复杂到一定程度,那么选择deferred shading就是非常必要的了
';

《钢铁侠》等电影中的image based lighting和physical shading

最后更新于:2022-04-01 11:26:59

http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM_slides.compressed.pdf http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM.pdf siggraph10上面physically based lighting course里的文章。 由Industrial Light and Magic带来,原来的标题是《钢铁侠》和《终结者》中的image based lighting和physical shading,但是实际上这个paper覆盖了IML多年的积累,包括《珍珠港》,《绿巨人》等电影。 同时里面的很多做法,对realtime graphics也非常的有指导意义。 **film reality** 一点需要澄清的是,cg开发者的终极目标是film reality,不是真实的人眼可见的那种reality,这个限制来源于存储介质是LDR,所以在这个限制下,很多东西要考虑到这些因素。 **90年代** ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155427c961.jpg) 在90年代的时候,是捕捉一个LDR的环境贴图(当时是LDR的,后来是HDR),来作image based lighting,当时使用cook torrence来做specular公式。 一些hack:比较典型的是一些ambient的光照,这个没法非常准确的进行capture,并生成shadow信息,会使用大量的spotlight来模拟: (简直就是irradiance volume) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155429877b.jpg) 《珍珠港》 michael bay(《勇闯夺命岛》《珍珠港》《变形金刚》的导演)挑战IML说要一个比以往电影中cg渲染的飞机要更真实的效果,IML一顿捣鼓,结果大家都看到了,不说还以为是真实拍的飞机呢,如同战争比10所大学更能推进技术进步,需求真的是技术进步最好的助燃剂。 到了90年代晚期,raytracing(光线追踪)技术已经比较成熟,但是IML还是没有使用,源于在如此复杂的场景中使用不太现实,而且他们习惯使用的软件(renderman)中还没有这个功能(嗯,不错的实战经验),所以继续他们的image based lighting。 在珍珠港中,添加了 - reflection occlusion,从image中读取的光照信息,加一个occlusion,防止在犄角旮旯的地方,应该比较暗,还很明亮的反射环境 - ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215542b29f8.jpg) - ambient environment - ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215542d137f.jpg) 来以手头拥有的资源,以很低的消耗(开发消耗和生成实际图像的运算消耗)达到了接近raytracing的GI质量。 最终到达了这样的质量:(coooool) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215542ef1e6.jpg) 《绿巨人》(<hulk>) 到了绿巨人这里有了一个进展,就是环境贴图改成hdr的了,并且分辨率也进一步加大。 《钢铁侠》 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155431511c.jpg) 到了《钢铁侠》这里主要是处理的材质上的事情,在环境贴图等image based lighting上面的工作已经比较成熟了(稳定的使用高分辨率的HDR环境贴图),但是在钢铁侠中的对材质高要求带来了新的挑战,很快项目组发现材质上的BRDF不够好。 这里必须要提的几个是:可见做一个很棒的最后结果,中间有多少积累工作需要做,他们很多的工作甚至不会再最终产品中露头 - 在《变形金刚》中,ILM已经成功的做了不少的适用于车上的材质,这为钢铁侠中的工作铺垫了不少 - ILM使用BRDF探测器(记录材质如何对光进行反射,bungie在halo上也做过这样的事情), - 但是发现chrome合金部分过于复杂,以至于没法收集足够的信息。 - 收集的信息很棒,但是美术想做点改动就非常的难(估计一大票莫名参数直接眩晕了) - 最后探测BRDF工作没有使用,但是却帮助项目组更好的理解了材质的BRDF 基于这些分析,最后ILM使用各向异性的specular function来做超酷金属效果: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215543362a2.jpg) 各向异性的brdf的研究也比较多了,ILM用的是在一些矢量方向上使用不同的specular exponent。 使用brickmap来做ray traced reflection surface caching。 ILM在钢铁侠开发期间也遇到了不少问题,其中一个就是很多参数(影响的factor),这些有些过于复杂,美术一顿调之后存在个人之间很不同,同时也会出现不真实的情况,简化等问题在后面的《终结者》的开发中有了很多进步。 这里ILM说的一个挺不错:ambient和diffuse其实是一个东西,reflectance和specular其实是一个东西。 《终结者》 到了《终结者:救赎》,ILM希望能够解决在之前项目开发中的一些头痛问题(比如太多参数调节的窘境),并迎接新的挑战(终结者中的一些场景的变化更加剧烈等)。 ILM采用更加基于物理的材质光照系统(physically based lighting)来: - 达到一个更加简单,更加直观,更物理正确的光照渲染系统 - 这里包括: - 能量守恒的材质 - normalized specular - more physically plausible specular falloff - more heavily image based - importance sampled raytracing 能量守恒 这个是物理光照中基本都会有的一项,就是保证反射的光强度不会超过入射光。 同时ILM把ambient和diffuse合并,specular和reflectance合并,这样只要平衡diffuse和specular就好了(不像原来要平衡4项)。 normalized specular 一个光在粗糙表面上反射,那么反射面会更大,同时亮度降低,其实这也是能量守恒的一种。 原来ILM没有这一项,是通过人手动来调的,现在做到specular公式中,那么结果不用调就比较自然了。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155434cfa6.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554360e62.jpg) normalized Importance sample raytracing importance sample就是通过去采样主要的部分来尽可能有效的去采样场景。 这个让我想起ue3的塞玛利亚人里面的反射就只反射霓虹灯,而建筑物什么的一概不管的这种,这应该也算是一种importance sample。 实际应用的时候,importance sample包括: - 主要采样image中比较亮的点 - 在粗糙表面的时候,会对反射的方向做一些改变,指向最有效的部分 最后结果和标准raytracing差不多,但是效率却好很多。 变革的烦恼与收获 ILM在做了这些技术改变之后,和很多公司一样,有几点痛楚: - 对生产的影响,ILM在开发的同时也在制作电影,于是就沿用原先的系统来做原先系统可以处理的很好的部分,比如里面的摩托车机器人,然后在系统开发好之后,在做有挑战的部分,比如骷髅机器人 - 开始技术的改变也导致了工具的效率问题(如果到游戏上还得加上bug和crash),开始做好的工具效率颇低(相比于原来) - 习惯于原先hack的美术们,对这个新系统的使用也颇有不习惯,ILM内部甚至引发了一场“圣战”,简而言之,费了好多力气才把新的系统(energy conservation, normalized specular等)推行下去 - 不过到了后面的项目(《钢铁侠2》)的时候,痛楚期过去,全线转入新的物理材质光照系统,品质和开发效率都更加的高 最后来个图,钢铁侠是这样拍的,感觉演员拍的时候应该不会很high吧: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155437d892.jpg)
';

[gdc12]神秘海域的水技术

最后更新于:2022-04-01 11:26:57

[http://www.gdcvault.com/play/1015309/Water-Technology-of](http://www.gdcvault.com/play/1015309/Water-Technology-of) gdc12上naughty dog带来的水的技术,150+页,信息量有点大,而且很多需要很多research的工作都被“不合适”带过,可以想象这背后的工作量。 而且在crysis之后,敢在gdc上做水的分享,这个需要相当实力的,不过现在还是觉得crytek的水最强力。 水这块真的是很有趣挺有深度的一块,由于内容太多,我就主要写我觉得不太熟悉的部分吧。 **人** 水这一块参与做的,主要的是一个程序一个美术,contributor还有10个人,够狠。 **河** ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215541344cf.jpg) 这个河的部分主要这几个技术点: - refraction/reflection - flow based normal map和displacement - 泡沫 这里值得一说的是normal map的flow,这个图就很明白的: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554156b3f.jpg) flow based displacement,就是vertex在flow的基础上,加一个sin/cos的偏移,以一个环形的方式顺着flow走: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554178c20.jpg) 另外flow的效果还可以用于很多的效果:沙子,云,雪,和一些比较迷幻的效果。 **Vision:** ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155419b2e8.jpg) 此图大赞,nd的人称之为“ship graveyard” 虽然最后nd也没有实现出来,但是设计师能够想象出这样的东西,并画成原画,这个真的会让技术人员热血沸腾的。 海: nd尝试了几个技术: - fft技术很棒,但是比较费,而且参数不好调(我觉得还好吧) - perlin noise效果不行 nd需要的海水,应该具有这样的特性: - 可以比较好的参数化 - 不能只是一个height field,需要是一个vector field 最后使用的是wave particle+GerstnerWave, ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215541be685.jpg) 这个需要另外一个post来说,这里就浅尝则止吧,wave particle有这样的好处: - artist好控制 - 没有tiling的问题 - 效率高,有其适合spu优化 BigWave: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215541dd44f.jpg) 这样的大波浪,这样做的: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155420aa18.jpg) 最后公式大集合: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215542240c7.jpg) LOD 这里使用clipmap的思路,类似height map的都可以这样,其实水和地形的相似度真的是非常高,使用到camera的距离来定制lod,使用t-joint来处理接缝问题: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554240df9.jpg) **效率** 这个就看编程功底了: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_572155425a893.jpg)
';

[crytek]Spherical Skinning withDual-Quaternions and QTangents

最后更新于:2022-04-01 11:26:54

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_57215540ddc9b.jpg) [http://crytek.com/cryengine/presentations/spherical-skinning-with-dual-quaternions-and-qtangents](http://crytek.com/cryengine/presentations/spherical-skinning-with-dual-quaternions-and-qtangents) 使用quaternion对skinning进行优化: - 使用dual quaternion来取代matrix4x3 - 使用quaternion取代vertex stream中的tangnet,binormal项 得到的结果是: - vertex shader constants削减1/3 - 把vertex中的tangent/binormal/normal项压缩至8byte **DualQuaternion** 总体上说会带来性能的提升,具体在: - 积累transformation会变快 - apply transform会变慢 - shader constant的下降会大幅度提升性能(这里在某些显卡上有一个constant waterfall的情况,所以constant的降低非常有意义) 美术制作这里: 制作动画会从linear变到spherical,所以需要做一些改变。 **TangentFrameCompress** 这里所谓的tangent frame就是vertex中的tangent/binormal/normal项。 如果完全不做压缩,那就是sizeof(float)*3*3 = 36byte,所有相关压缩之后会降到8byte。 这里是把这个矩阵压缩到一个quaternion,解出t,b,n的方法是: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721554118a96.jpg) 由于quaternion是normalized,所以quaternion又可以只保留xyz项,w项推算出来,符号不是问题。 这里一个注意就是gpu 浮点数处理0的时候和cpu的ieee不一样,所以如果quaternion的w是0的时候要加一个很小的bias。
';

Cascaded Light Propagation Volumes for Real-Time Indirect Illumination

最后更新于:2022-04-01 11:26:52

http://www.crytek.com/sites/default/files/20100301_lpv.pdf http://www.crytek.com/sites/default/files/2010-I3D_CLPV.ppt 2010 i3d上的一个文章,ppt的有图,pdf则更加的详细一些。 crytek在之前的sig09上的介绍了light propagation volume,本blog里面也有了介绍:[http://blog.csdn.net/ccanan/article/details/4975066](http://blog.csdn.net/ccanan/article/details/4975066) 一些重复的事情就省去了。 开篇介绍了相当多的reference的东西,都是很不错的文章,尽管有些和crytek介绍的算法没有太大关系,但也是帮助crytek结出这么个果实不可或缺的部分。 再次对作者(Anton Kaplanyan@Crytek GmbH和Carsten Dachsbachery@VISUS / University Stuttgart)表示敬意,真是阅读了大量的文章,并且做了分析,在这基础上做了实现,最终分享出来,把游戏业进一步的向前推进,可谓hardcore! 后面的步骤和09sig上的文章差不多(本身时间也就是差了几个月么): **LightPropagationVolume Initialization:** - 渲染reflective shadow map(rsm) - rsm的每个pixel被看作是反射光的一个分布,作为virtual point light(vpl for short)照亮light propagation volume - 这里存储的值是sh系数 **SceneGeometry Injection** 使用另外一个3d tex来存储scene geometry分布,用来进行indirectlighting的遮挡,也就是会形成indirectlighting shadow。 scene geometry distribution也是用sh系数表示,来源是gbuffer,gbuffer的种类越多越好,存储是用3d的tex,所以越多就越能准确的表达occlusion的信息。 不过只有camera view的话,也能顶一下。 sh系数在3d tex里面,进一步的propagation,就完成了occlusion distribution的构建。 里面crytek给了几个名词: indirectlighting遮挡叫做fuzzy occlusion geometry 分布这个叫做geometry volume(GV) **PropagationScehe** 这里的propagation是经历了一个在destination cell在各个face上收集energy,然后以sh系数的方式在投射到中心点的这么一个过程。 在算法上,构建face上的投射是使用create一个visibility的sh系数方式来做的,乘以source的intensity就得到在这个face上光通量(flux)的分布(以sh系数的形式) 不过crytek说直接这样做就精度很差,所以做了一个变化,使用中间那个图抓的wc作为整个椎体的代表,这个角度上得到的intensity作为整个锥的一个平均值。 然后由face上的分布推出这个cell中心点的intensity分布就好。 这个过程中就会考虑到前面建立的geometry volume了,被遮挡的情况下,就会做衰减。 然后重复做这个propagation,就模拟了光的传递。 **Cascade** 看名字就知道怎么回事了,和cascaded shadow map类似的做法,有过渡,有snap to grid来防止抖动。 **实现细节** 使用2阶sh系数,也就是4个数(这个绝对是挺低的)。 cascade grid是rgba16f的32x32x32的3d texture。 rsm的resolution是256 light propagation部分做了8次迭代。 **sth more** 在有了之前的实现之后,这样几件事情顺理成章了: - 做多次bounce - 对particle一类的做indirectlighting - glossy reflection **性能:** 这个图里可以看出在console上是4ms及以下就可以达到,算是很不错了。
';

Shiny PC Graphics in Battle Filed 3

最后更新于:2022-04-01 11:26:50

http://publications.dice.se/attachments/Shiny_PC_Graphics_in_BF3_pcfinal.pptx dice的养眼美图大集合,有一些理念和数据还是不错的。 **技术和美术之间的关系** dice认为是这样的: - 技术不行,但是美术行,还是可以有好的产品 - 技术行,美术不行,结果很糟糕 - 技术行,美术不行,结果是最好的 简而言之,就是美术和技术都要尽可能做好,并且配合好,才会有好的产品出来。 render程序员也需要客观正确的看待技术和美术的关系,避免走入唯技术论的误区。 **数据** 一个多人关卡有: - 200-250MB streamed object mesh - 1.3g到1.5g的streamed object texture texture pool大小: - low:150MB - medium:200mb - high:300mb - ultra:500mb instancing主要是降低cpu端消耗,4000drawcall可以降到900这种。
';

BattleField 3和NeedForSpeedTheRun中的渲染技术

最后更新于:2022-04-01 11:26:48

http://publications.dice.se/attachments/BF3_NFS_WhiteBarreBrisebois_Siggraph2011.pptx frostbite engine(寒霜引擎) 系列引擎在battle field以外的知名游戏上<need for speed:the run>开始应用。 关注dice很长时间了,学习到很多东西,很欣喜的看到frostbite从<battle field:bad company>时候的偶有亮点(建筑地形毁坏)到现在在battlefield3中成为的图形效果新标杆,可以和CryEngine3的效果一较高下,并且在销量上也取得了不俗的成绩,可谓双重胜利。 现在使用frostbite2制作了<need for speed:the run> 本文介绍在frostbite2在两款游戏上技术的应用。 **bokeh blur** 这个效果不太感兴趣,在ce3,ue3和frostbite,还有n多其他的游戏paper里都有说。 这里说的一点挺好,就是blur,有的是不能separate的,那么这个计算量就是:O(n*n),有的是可以separate的,比如,那么计算量是O(n). 可以separate的包括gaussian blur,box,skewed box。 **ZCull Reverse** 这个是一个挺有意思的技巧,一般在deferred lighting中做point lighting的时候,是使用front face和back face各render一个pass的方式,使用stencil来确定point light sphere影响的区域。 这里介绍一个方法是把zcull的compare方式变成GreaterEqual,这样和正常的方法上在point light起作用,比如: A和B的情况,是否reverse是等价的(一个在A上省一个在B上省),但是C的话就是reverse的好多了。 使用csm,也可以这么做,画一个cube来做一个cascade,用stencil标记前一个cascade render过的pixel,挺不错的。 **MinMaxShadowMap** 这里说的问题是shadow map mask问题,把需要soft shadow(也就是shadow和unshadow部分交界的地方)和纯的shadow和unshadow的地方。 这里的算法是: - 使用hard shadow map画第一遍 - downsample,把需要soft shadow的地方和hard的地方以不同的alpha保存 - 使用alpha test来更新stencil - 使用stencil test来跳过不需要soft shadow的地方,进行pcf **Chroma sub-sampling** 并不是一个新的概念,jpg压缩中常常使用的,就是把颜色分成luminance和chroma两个部分,全精度存储luminance,低精度存chroma。 具体可以看wikipedia的连接:[link](http://en.wikipedia.org/wiki/Chroma_subsampling) 这样的压缩之后,post process 的bandwidth消耗降为1/4 **Temporally-stable Screen-Space Ambient Occlusion** frostbite2提供了两种dynamic ao: - 普通的ssao给中低端机器 - hbao给高端机器 质量对比很明显了: HBAO: SSAO: ssao的sample方式是volumetric occlusion的line的方式,效率比较好。 这里主要是说了blur的方式,把4个纯色的ao的pixel信息pack到rgba里面,这样一个9x9 gaussian blur会被降到3个horizontal tap和5个vertical tap,效率对比很明显:高于4:1的一个差距
';

KillZone3的版本发布工具

最后更新于:2022-04-01 11:26:45

http://www.guerrilla-games.com/presentations/PGAIC11.pptx killzone3的版本发布的一个分享。 **project overview** - duration:2.5year - developer:120 local, 80 remote - QA:10 local, 60 remote - head devision:350GB, 700,000文件 - change/weak:15G - depot size:15TB 原先的方法 在发布版本之前一个月,分一个branch,fix bugs,发布版本,最后在merge回来。 问题: - 版本比较大,分branch和merge回来都很麻烦 - 测试和control都不好做 - 每次release都鸡飞狗跳 改进方法: - 在main上工作,在release的branch上test - 必要的一些bug fix被嵌入release版本 - 周末会做一次release(应该就是更加频繁) - 最后一个cycle耗时2-3 weak(还是比较慢啊) dashboard上的信息更加丰富详细,每个branch也有足够的监控。
';

PracticalOcclusionCullingInKillZone3

最后更新于:2022-04-01 11:26:43

http://www.guerrilla-games.com/presentations/Siggraph2011_MichalValient_OcclusionInKillzone3.pdf 使用的是dice早先提的software rasterizer构建低精度depth buffer,然后根据这个来对bounding volume来做culling。 **实现细节** - 使用640x360的buffer - 数据的vectorize很重要 - 用汇编代码优化:使用汇编优化是一线工作室常用的做法 - depth buffer有压缩,最后encode到16bit - occluder的资源,kz3使用physics mesh,当然会有问题,严重的情况在手动解决,大部分就是用physics mesh - 按照一些标准来选取什么成为occluder,小的不行,被标记出来的不行,美术也会手动的来做occluder - 一些主要的地方就是,occlusion系统就是程序本身是比较好的也比较快的,难点在于数据资源上的这里,自动化的系统一般是不够的,需要有content上的计划(制作和修复问题)                                                                                                                                                                                                                     **数据** ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-28_5721553f359e3.JPG)
';

前言

最后更新于:2022-04-01 11:26:41

> 原文出处:[游戏引擎开发](http://blog.csdn.net/column/details/game-engine-dev.html) 作者:[toughbro](http://blog.csdn.net/toughbro) **本系列文章经作者授权在看云整理发布,未经作者允许,请勿转载!** # 游戏引擎开发 > 介绍游戏引擎开发相关知识,尤其是渲染方面
';