[siggraph2011]Secrets of CryENGINE 3 Graphics Technology

[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第1张图片


Crytek图形三巨头NickolayKasyan, NicolasSchulz, TiagoSousa 轮番轰炸,73页的一个ppt。

link:http://advances.realtimerendering.com/s2011/SousaSchulzKazyan%20-%20CryEngine%203%20Rendering%20Secrets%20((Siggraph%202011%20Advances%20in%20Real-Time%20Rendering%20Course).ppt

                                                                                                                                                                                                                  

SlimGBuffer

  • ARGB8 for world_space_normal & glossness
  • D24S8 for depth buffer
  • 2xARGB18F做Diffuse&Specular
  • ARGB16F做scene render target
                                                                                                                                                                                                                  
CoverageBuffer

使用类类似dice的方法,不过dice是纯在cpu端construct low res depth buffer,crytek是从cpu端把depth读回来。
然后对物件的AABB或者OBB做rasterization,进而和low res depth buffer做比较看可视性。
resolution的对比是:
1080P的depth buffer会down scale到256*128
rasterizer bounding box是在另一个线程里做的。
pc上有大约4帧的延迟。
比较酷,效果各种好,但是要一个额外线程做。

                                                                                                                                                                                                                  
室内外的ambient

这里是处理室内室外不同ambient的情况,比如这样:
[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第2张图片
做的方法是当deferredlighting来做,可以:
  • 用stencil标tag
  • 画全屏quad(室外),bounding box(室内)
                                                                                                                                                                                                                  
EnvironmentProbe
采用artist摆probe的方法,这里对到底存了什么东西在这个probe没太说清楚,猜测就是cube map,然后画model的时候当environment map读取。
不过它里面提到了specular cube map和spherical light volume,不太清楚什么情况,beyond3d上求助ing。
不同probe之间使用linear blending,这个倒是比较常用的了。

                                                                                                                                                                                                                  
各种上流光照:
里面各种缩写相当欠扁,crysis2缩写成c2。。。
  • GI----light propagation volume
  • SSDO
  • real time local reflection(RLR)
  • normalized blinn phong模型
  • 直接光照的render基于光在屏幕上的覆盖率,有
    • fullscreen quad with stencil volumes
    • convex light volume
    • 2d quad
只这一页就秒杀游戏无数。。。
                                                                                                                                                                                                                  
DeferredShadows

对于阳光的shadow,有做shadow mask,全黑的地方就可以直接跳过light shading。
使用cascaded shadow map,里面用的一些名词说的不太清楚,
[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第3张图片
csm里面的shadow cascade分布是核心问题,crytek使用logarithmic texel density distribution,也就是尽量保证shadow map texel到screen space pixel mapping的比率随着cascade的增加一步步1/2这样的减少。
shadow frustum是使用保守的方式来包camera frustum,激进方式会导致camera在不同方向shadow的texel distribution不一样,shadow质量一会高一会低,这样也不好。
shadow map texel snap,这个很早就提了,frustum在变的时候是以texel为单位,就不会有shadow的锯齿在camera缓慢移动的时候慢慢走的artifact了。
可能接受阴影的地方在stencil buffer中标记出来,这样有助于有更好的cascade划分。
shadow cascade caching:也就是有些cascade几帧才update一次。
最远的cascade使用vsm,来获得非常大的半影区。

point light shadow:
使用6个方向的shadow map来做,使用texture atlas来减少memory fragmentation。
会受光的地方同样使用stencil标记。

soft shadow approximation
这张阴影图帅爆了:
[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第4张图片
图中可见,这个是近处的shadow半影区小,远处的大,属于percentage closer soft shadow。
crytek使用poison pcf还带在shadow space随机旋转的kernel。
半影区的设定和percentage closer soft shadow基本一样,基于kernal内sample点的平均距离,决定舍弃多少。

transparency shadow map,使用8bit的render target来accumulate alpha value。
                                                                                                                                                                                                                  
real time local reflection
没什么太多好说的,屏幕空间ray tracing,该gloss的地方gloss。
基本上主要是gloss的地方比较适用,清晰反射的地方会受限于screen space很多信息不全,bug不可避免。

                                                                                                                                                                                                                  
contact shadow map
也就是ssdo,直接看ssdo的论文吧。
[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第5张图片
ssdo的效果显著的高于ssao,在screen space里面完成。

                                                                                                                                                                                                                  
screen space subsurface scattering
在screen space对diffuse lighting(accumulated)做scattering。

screen space self-shadowing
screen space里做一些ray casting(在lighting的方向),这,也,太,猛,了,从来没想过,效果很不错:
crytek的理论和trick能力。。。服了
[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第6张图片

                                                                                                                                                                                                                  
SoftAlphaTest
[siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第7张图片
典型处理的问题就是头发的问题了,需要额外的一个pass,在screen space做tangent方向的blur。
                                                                                                                                                                                                                  
这里dof,motion blur(说了好多遍了)和3d(不感兴趣)的部分跳过。
                                                                                                                                                                                                                  
bonus
一些额外的分享:
  • hdr+linear space lighting非常重要,两者结合的画质提升非常明显
  • shadow acne是指图中一层层感觉这部分的bug:
  • [siggraph2011]Secrets of CryENGINE 3 Graphics Technology_第8张图片
    • 起因:
      • low shadow texel density
      • depth buffer的精度不够
    • 几个解决方案
      • sunlighting: front face render+slope depth bias
      • point lighting:back face rendering
      • variance shadow map: render both faces 



原文链接: http://blog.csdn.net/ccanan/article/details/6722945

你可能感兴趣的:([siggraph2011]Secrets of CryENGINE 3 Graphics Technology)