crytek关于son of rome在gdc和siggraph都做了presentation,两者有些地方一样的,干脆一勺烩了吧:

http://advances.realtimerendering.com/s2014/crytek/Sigg14_Schulz_Mader_Ryse_Rendering_Techniques.pptx

http://www.crytek.com/download/2014_03_25_CRYENGINE_GDC_Schultz.pdf

看到一直推动行业水准前进的公司陷入财务困境属实揪心,希望crytek能更接地气的赚到钱,别趴下。

pre

ryse:son of rome是xbox one独占的游戏,xbox one硬件性能不太好,计算能力比高端pc要差,加上这个团队里面的人也比较少,所以crytek在son of rome里面也没有做更新换代式渲染技术升级,更多的是进行polish和改进,其实这种我反而更加喜欢,一些概念理解更加深刻,一些技术实用精致,很不错。

另外xbox one毕竟ram大了很多,8g的ram相比上一代的512mb,足以在很多领域较上一代产生算法级的变化,能做的事情多太多了,crytek在static shadow,large scale ao方面也是大笔一挥,2048的,8192的轮番上阵。

其实做久了,会发现革命性的东西看起来很美,我们实际收益最多的还是类似文中这些精益求精的点点滴滴,所谓以正合以奇胜吧。

Lighting&material

physical based shading

这个现在已经是标配了,大家起码在名词上都号称PhysicallyBasedShading,但是其背后在模型选择,融合以及整个程序美术团队的合作上却颇有深度,初级的(比如cod:black ops)与超级的(比如disney的动画片)有天壤之别。

son of rome被定位为xbox one上首发画面标杆,希望进一步接近电影级画质,crytek认为关键就在于进一步推进physically based的水准,并且这些从数据制作到最后的算法实现都要完整正确才行(Physically Based Shading can only work well if it gets respected inall areas)

shading model:在distributionfunction和diffuse brdf更复杂(真实)了些

*specular brdf

**macrofacet model

***distribution function : ggx(和disney的一样)

*****fresnel&visibility项是最常用的schlick approximation和schilick-smith approximation

*diffuse brdf:oren nayar模型

期间都做了些小优化。

material:

*diffuse albedo

*specular reflectance--这个根据材质的材质的折射率来制定的

*roughness--制作过程中使用反过来的,这个美术刷起来更直观

*normal

这里和早期物理光照常用的diffuse/specular color/gloss/normal也非常的接近。

deferred rendering

早期cryengine使用的是light prepass,但是在更复杂的shading model情况下,则必须要deferred rendering才行。

其中:

* normal使用的是BFN来提升8bit的精度

* 在几个通道里面会出现多种信息共享的情况

特殊光照模型的使用forward lighting

specular aliasing

非常喜欢的部分:crytek把normal和roughness(概念上接近gloss)联系起来,认为normal描述宏观上材质的粗糙程度,而roughness描述微观上的,而距离比较远的时候,normal则显得越发细致,这种情况的roughness就开始受到normal的影响。

crytek把normal存在rgb,roughness放在alpha通道,然后有一个处理过程,使用toksvig factor来矫正一次roughness,保证在sample到小mipmap的时候,如果normal方向很散的话,roughness会被提升。

这个矫正在http://blog.csdn.net/toughbro/article/details/39248549有。

材质本身但是如果一旦有潮湿等效果,改变roughness的操作的时候,这个问题就又出现了,最后又加了一个全屏的处理:

把specularcolor根据roughness的变化做了一个矫正(crytek实际实现的时候使用roughness的反,也就是smoothness来操作的,roughness美术用起来太不顺手了)

lightingattenuation

attenuation从传统的变成更加物理正确的:

间接光照

使用environment light probe来获取,每个有specular和diffuse两个部分。

采用的是手动摆放的方式,1关大约100来个。

env probe加上一个parallex correction来提升准确度。

ambient light


可以放一些专门打ambient light的光源,可以增强可以减暗,在一些室内可以用于防止全局的ambient lighting把幽暗的室内整的特别亮。

glossy realtimelocal reflection

之前一些local reflection是没有glossy信息的,用于非常光滑的表面,对于图中的比较糊的material,就需要使用到image based lighting中的glossy reflection的东西。

这里最physical correct的应该是voxel cone tracing系的,crytek也想尝试一下,但是有一个意向没有深入去搞。

最后使用的是构建了反射buffer之后进行downsample,构建一个mipmap chain出来,然后做glossy reflection。

ambient occlusion

ssdo,同时用于传统的ambientlighting和reflection occlusion(有时候也叫env occlusion..,反正就是用于做环境specular lighting部分occlusion的东东)。

加上了之后较好的处理了reflection occlusion的情况。

ao color bleeding:

传统的ao计算时候是final ambient lighting = ao * ambientlighting;

这个其实是对于真实的情况的过度简化--只是考虑到光线是从所有角度来的,如果周遭的geometry挡住了,就减少入射量,但是没有考虑到光线的多次弹射。

所以如果直接应用这个公式,那么比真实情况,或者我们觉得好的情况,会显得过黑。

把ao值做一个统一的提亮矫正,是一个可行的办法。

crytek更进一步,把diffuse gbuffer,downsample到小buffer上,

然后用这个buffer来对ao做一个矫正,一定程度上使用类似GI的方法来矫正ao,nice!

large scale ao

ssdo等只能处理屏幕空间,很小范围的ao情况,如果要到大范围情况,则无能为力,而这一块工作是非常有意义的。

相关领域,voxel cone tracing,以及spinter cell 5(http://www.realtimerendering.com/blog/update-on-splinter-cell-conviction-rendering/)里面这一块都可以做的比较好,使用的方法就是基于真实的geometry来产生ao。

crytek这里也是类似,只是在更大范围来做,个人非常喜欢,算法是:

--从上往下拍一个低分辨率的depth(1km用2048x2048),然后使用这个来以7.5m为kernel计算ao

shadows

角色shadow:

会专门有一个高精度的角色shadow,在生成shadow的时候一起计算进来。

另外在cinematic里面,crytek在cinematic工具里面加入了一个tag,指明可以在这个时候使用高精度阴影。

点光源shadow

点光源的shadow是把多个projector来在大的rendertarget里面atlas起来。

分辨率等会根据projector的重要性,覆盖面积等来管理。

static shadow

使用8192x8192来hold住一个1.3kmx1.3km的shadow map,这样远处的就不用每帧都画,节省效率。

相比之下,farcry3还是更好一些:

http://blog.csdn.net/toughbro/article/details/7941821

皮肤

specular lighting使用了ggx,crytek认为这个挺好,一般大家使用Kelemen/Szirmay-Kalos模型,各花入各眼吧。

依旧是screen space subsurface scattering,这个很gpupro上面的也没啥不同啊,crytek也讲了两页。

头发

高端离线渲染使用Marschner模型,一般实时的使用kajiya-kay,crytek也是选择的这个。

挑战最大的是头发柔和的边缘,之前crytek有使用过顺着头发tangent方向blur的方法(<gpu pro3>),这回终于决定直接alpha blending了。

过程感觉还是比较纠结:头发不写depth buffer,而是把depth记录在alpha通道,然后一个后处理来搞定。

Particles

particle会使用到场景里的light probe,所有particle会接受shadow。

会使用per vertex/per control point lighting来提升性能。

其他:

实际在x1上是900p的渲染,然后upscale到1080p,囧!!!

[sig14gdc14]crytek的《罗马之子》的渲染技术相关推荐

  1. react避免子组件渲染_如何与React一起使用正确的方法来避免一些常见的陷阱

    react避免子组件渲染 One thing I hear quite often is "Let's go for Redux" in our new React app. It ...

  2. Ios子线程渲染Opengl

    1. 介绍 ios并没有像Android glsurfaceview或者Qt QOpenglWidget 那样完整Opengl渲染View封装,官方demo也是主线程创建的CADisplayLink提 ...

  3. 真实感皮肤渲染技术总结

    <GPU Gems 3>中的"Chapter 14. Advanced Techniques for Realistic Real-Time Skin Rendering&quo ...

  4. 斯图加特大学GPU光线投射体渲染技术提携

    斯图加特大学GPU光线投射体渲染技术介绍 前言:在以往人们的印象中,美国的CG技术是一世界第一流的,而没有注意德国CG技术的发展.事实上,德国大学的CG是相当高的,与美国第一流的大学学术交往非常频繁. ...

  5. 3D渲染技术分享:实时3D水面渲染(反射、折射、水深与水岸柔边)

    一.开篇 自从上次写了**<用实时反射Shader增强画面颜值>** 后,不少开发者开始尝试用它来渲染水面,但效果都差强人意. 这是因为,水面除了反射,还有许多细节需要考虑. 在此之前,也 ...

  6. 下一代3d渲染技术,体素光线投射

    原文地址http://www.tomshardware.com/reviews/voxel-ray-casting,2423.html 强烈推荐看原英文,由于本人英语水平有限,对于图形学领悟有限,又借 ...

  7. 正当防卫2 渲染技术

    引用:http://blog.csdn.net/ccanan/article/details/7935183 http://www.humus.name/Articles/Persson_Creati ...

  8. [sig12]《正当防卫2》的渲染技术1

    http://www.humus.name/Articles/Persson_CreatingVastGameWorlds.pptx http://www.humus.name/Articles/Pe ...

  9. Maya阿诺德室外环境灯光照明和渲染技术学习视频教程

    Maya阿诺德室外环境灯光照明和渲染技术学习视频教程 Maya and Arnold_ Exterior Lighting and Rendering 教程时长 1小时47分 大小 1.1G 1280 ...

最新文章

  1. oracle数据类型之number/char浅析
  2. 基于Spark的大规模推荐系统特征工程
  3. java内存模型 原子性_Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)...
  4. 最新 主流笔记本cpu列表
  5. python语言中的单行注释语句_Python 1基础语法一(注释、行与缩进、多行语句、空行和代码组)...
  6. 计算机控制技术数据存储器有,计算机控制技术复习资料.doc
  7. Matlab图像处理系列2———空间域平滑滤波器
  8. easyui酷黑风格主题模板组件html
  9. 加拿大 计算机学校排名2015,2015年加拿大大学综合排名
  10. 树莓派chromium浏览器 kiosk 全屏提示错误
  11. recy拖动item
  12. (吴恩达)6.应用机器学习的建议、机器学习系统的设计
  13. W nDOwS多系统安装,IVB新平台Wndows XP系统安装教程.doc
  14. KNN分类法与手势识别
  15. 开机后自动执行bat文件中的python程序,自动登录软件进行功能配置
  16. 自动驾驶决策规划算法第二章——Apollo EM Planner实践篇
  17. HDU 4081 Qin Shi Huang‘s National Road System(枚举+倍增优化)
  18. 特效师新人作品指引。
  19. 微信小程序的地址相关
  20. 震惊!!原来JDK的下载竟如此简单!!(附详细教程)

热门文章

  1. 在Delphi中可用FormatDateTime函数的用法
  2. 2--CAD图形界限与常规设置
  3. 一款简单实用的视频分割软件,快速将一段视频分割成两段
  4. 亚马逊国际站获取商品库存信息
  5. 运动会加油稿计算机学院,大学运动会加油稿大全
  6. 当男人爱上女人——学会诱导需求
  7. iPhone 7-b
  8. oracle号码段拆开,学习-SQL查询连续号码段的巧妙解法
  9. 多人联机射击游戏中的设计模式应用
  10. ChatGPT进入百度“弱智吧”后,疯了