[gpu pro3]CryEngine3:ThreeYearsOfWorkInReview
2012-03-25 13:42
846 查看
<gpu pro3>上crytek对cryengine开发方面的渲染工作做的一个总结。
里面的细节内容在以往放出的paper里面几乎都有提到,但是这篇文章注重整体上的一个回顾,相比以前的paper少了些学院派的理想化,更多了些实用性的东西,读来别有一番滋味。
跨平台
开始cryengine3向console上进发的时候,team里面有console经验的人还是很少。
开始做起来也是有比较多的困难,比如一上来发现没画什么东西呢,postfx花了30ms,particle50ms,帧数就10。。。
优化一些策略:比较通用,书里列了好多,稍微有意义的是:
优化最差情况,好的情况优化了也没意义
分帧计算,if possible
在整个team的视野上去优化,crytek提的这一个比较喜欢,这个就是engineer和researcher的最大区别,engineer必须有能力在一个更高更大的范围上去思考问题和寻求解决方案并且搞定它。编程和技术只是engineer的一个技能(当然是主要的技能),不是全部,在引擎和游戏的开发过程中,决定性的是最终产品而不只是使用的技术和代码,有些东西只有engineer能看到,这里就需要engineer有更好的综合能力。
crytek这里提到,要对需求进行过滤,一些会导致非常大消耗的设计就要和designer和artist进行探讨,设计层面上的修改是必须要纳入解决方案的,而且这个常常会导致非常大的提升。同时,engineer也在不停地像其他人灌输效率上的东西,效率优化是所有人的事情。
pipeline上,他们会有server来对每一个changelist进行监控,这个也比较常见了,不赘述。
PhysicallyBasedRendering
在crytek看来,PhysicallyBasedRendering包含了整个lighting系统,好吧,概念也没什么好抠的,这里就是ce3的lighting系统。
使用deferred lighting(不是deferred shading),gbuffer2张:是depth&normal&gloss, lighting buffer2张:diffuse&specular,这里几个好处:降低了同时写入rendertarget的数量,显存峰值会降低
有更大的自由度,deferred shading对于特殊material类型的处理还是比较乏力
hdr,crytek这个总结也挺好:准确的光照范围,减少色阶和color clippingps3上是rgbm,其他是float的render target
lightingambient pass:hemisphere lighting,其实就是一个(normal.z*0.7+0.3)*ambientLightColor这么个东西
environment lighting probe:image based lighting技术(就是把东西拍到texture里,然后拿texture来辅助光照),具体是拍一个cubemap,然后downsample一个8x8的diffuse cubemap,和一个specular用的cubemap(resolution没说),格式是rgbk(也就是rgbm)cubemap需要用ati cubemapgen这种工具处理下,否则边缘会看起来不对
apply的时候用volume lighting
根据gloss值来选取不同mipmap level
diffuse gi:light propagation volume
contact shadow:ssdo,ssao已经不给力了,ssdo里面多了一个方向信息,在算ao的过程中记录一个unoccluded direction信息(也叫bent normal),这样在计算ao的时候就有方向信息了
light pass:只是使用的blinn phong模型,其他的一堆东西没有使用。区域型的lighting(比如indoor的)使用volume来明确划分,进而避免bleeding。
shadowscascaded shadow map : logarithmic distribution,
shadow frustum的朝向是固定的(避免精度不稳定),
shadow space snapping(避免闪烁)
shadow cascade caching,远处的cascade分帧update
shadow acne: sun shadow时候画前面,只是用slope scaled depth bias,在deferred shadow pass时候使用一个固定的depth bias
deferred decal
ForwardShadingPass
deferred skin shading:screen space subsurface scatteringsoft alpha test:顺着头发的tangent方向做blur
随着对crytek的持续关注以及了解到越来越到宣传广告以外的信息之后,crytek在我眼中也变得越发真实,just human begings,希望crytek持续给力,一直做引擎市场中强有力的竞争者。
里面的细节内容在以往放出的paper里面几乎都有提到,但是这篇文章注重整体上的一个回顾,相比以前的paper少了些学院派的理想化,更多了些实用性的东西,读来别有一番滋味。
跨平台
开始cryengine3向console上进发的时候,team里面有console经验的人还是很少。
开始做起来也是有比较多的困难,比如一上来发现没画什么东西呢,postfx花了30ms,particle50ms,帧数就10。。。
优化一些策略:比较通用,书里列了好多,稍微有意义的是:
优化最差情况,好的情况优化了也没意义
分帧计算,if possible
在整个team的视野上去优化,crytek提的这一个比较喜欢,这个就是engineer和researcher的最大区别,engineer必须有能力在一个更高更大的范围上去思考问题和寻求解决方案并且搞定它。编程和技术只是engineer的一个技能(当然是主要的技能),不是全部,在引擎和游戏的开发过程中,决定性的是最终产品而不只是使用的技术和代码,有些东西只有engineer能看到,这里就需要engineer有更好的综合能力。
crytek这里提到,要对需求进行过滤,一些会导致非常大消耗的设计就要和designer和artist进行探讨,设计层面上的修改是必须要纳入解决方案的,而且这个常常会导致非常大的提升。同时,engineer也在不停地像其他人灌输效率上的东西,效率优化是所有人的事情。
pipeline上,他们会有server来对每一个changelist进行监控,这个也比较常见了,不赘述。
PhysicallyBasedRendering
在crytek看来,PhysicallyBasedRendering包含了整个lighting系统,好吧,概念也没什么好抠的,这里就是ce3的lighting系统。
使用deferred lighting(不是deferred shading),gbuffer2张:是depth&normal&gloss, lighting buffer2张:diffuse&specular,这里几个好处:降低了同时写入rendertarget的数量,显存峰值会降低
有更大的自由度,deferred shading对于特殊material类型的处理还是比较乏力
hdr,crytek这个总结也挺好:准确的光照范围,减少色阶和color clippingps3上是rgbm,其他是float的render target
lightingambient pass:hemisphere lighting,其实就是一个(normal.z*0.7+0.3)*ambientLightColor这么个东西
environment lighting probe:image based lighting技术(就是把东西拍到texture里,然后拿texture来辅助光照),具体是拍一个cubemap,然后downsample一个8x8的diffuse cubemap,和一个specular用的cubemap(resolution没说),格式是rgbk(也就是rgbm)cubemap需要用ati cubemapgen这种工具处理下,否则边缘会看起来不对
apply的时候用volume lighting
根据gloss值来选取不同mipmap level
diffuse gi:light propagation volume
contact shadow:ssdo,ssao已经不给力了,ssdo里面多了一个方向信息,在算ao的过程中记录一个unoccluded direction信息(也叫bent normal),这样在计算ao的时候就有方向信息了
light pass:只是使用的blinn phong模型,其他的一堆东西没有使用。区域型的lighting(比如indoor的)使用volume来明确划分,进而避免bleeding。
shadowscascaded shadow map : logarithmic distribution,
shadow frustum的朝向是固定的(避免精度不稳定),
shadow space snapping(避免闪烁)
shadow cascade caching,远处的cascade分帧update
shadow acne: sun shadow时候画前面,只是用slope scaled depth bias,在deferred shadow pass时候使用一个固定的depth bias
deferred decal
ForwardShadingPass
deferred skin shading:screen space subsurface scatteringsoft alpha test:顺着头发的tangent方向做blur
随着对crytek的持续关注以及了解到越来越到宣传广告以外的信息之后,crytek在我眼中也变得越发真实,just human begings,希望crytek持续给力,一直做引擎市场中强有力的竞争者。
相关文章推荐
- The work of last three weeks:Lane line detection, Online boosting, Multiboost
- 软件随想录(local.joelonsoftware.com/wiki)-2001年05月05日 这个国家的狗做什么工作? - What Is the Work of Dogs in this Cou
- The DCOM settings which are independent of whether the PC is in a work group or in a domain
- Three case of kernel loading in SkyEye
- WinForms UI Thread Invokes: An In-Depth Review of Invoke/BeginInvoke/InvokeRequred
- Some of the continuous-integration tools that work with Ant (From Ant in Action 2nd Edition)
- Null or zero primary key encountered in unit of work clone exception not working 解决方法
- Northwind Starter Kit Review: Data Access and the essence of needless work, Part II
- [gpu pro]StylizedRenderingInSpore
- Thinking In Design Pattern——Unit Of Work(工作单元)模式探索
- Three Types of Dialog Boxes in JavaScript
- Why can't I ...? Why won't ... work?" What to do in case of problems
- High Scalability - High Scalability - Scaling Pinterest - From 0 to 10s of Billions of Page Views a Month in Two Years
- first work day of 2007, first work day in new company
- A Detailed Review of Feature Extraction in Image Processing Systems图像处理系统中特征提取的详细介绍
- Three Reasons of Buying Crusher in Crusher Mall
- Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years
- Several workaround in mips simulation of SkyEye
- The Art of Doing Twice the Work in Half the Time (Essence)
- Disposal of Dust Made in Quartz Manufacturing Three