http://www.dimension3.sk/downloads/valient12_shadows_in_games.pdf

killzone的开发公司Guerrilla的tech lead, michal valient带来,这个文章可以说是我看过的shadow的文章最特别的一篇,其中众星云集,包括:

  • god of war 3(奎爷一出谁与争锋,封面图片当然是奎爷的了)
  • far cry 3
  • killzone 3
  • infamous
  • two world
killzone3是一个30fps的游戏,作者表示做60fps游戏的人都是”骑着迅猛龙长大的,和北极熊干架的大神“,这个深有同感,当为了零点几毫秒的优化而费劲脑筋的时候,有人以翻一倍的性能在跑,这tmd也太恐怖了。
33ms是ps3上的一个数据,其中
  • 13ms:geometry
  • 10ms : post process
  • 10ms : lighting&shadow

shadow发展到现在,在这一代,技术上已经比较稳定了,常规做法大家基本有了共识:
  • cascaded shadow map
  • percentage close filter
  • variance shadow maps

这个文章并不是一个革命性的带来什么新奇算法的,而是更加实用的,集中了几个AAA游戏的做法。

little big planet
这波哥们最暴力了,他们把场景都voxel话,然后计算irradiance volume, 用ray casting计算shadow和ao。
当然little big planet场景简单太多了。
killzone3
基本部分:
  • 4 cascaded shadow map
  • pcf
  • stabilization(或者说是pixel snapping)防止抖动
  • 1408x1408 d16 shadow map,1张
  • 10+带阴影的点光源
  • 5k+ object
  • shadow map渲染时间是4-5ms
  • 点光源比较远的时候使用低精度的shadow map
  • 小物体skip
  • depth bound
特别部分:
kz3有offline cook的lightmap(只有shadow的信息),这样的话realtime shadow map可以在80米的地方就截止,而且lightmap可以产生stencil mask,进而skip掉不少像素。
infamous
基本:
  • 3 cascade
  • cascade之间有blend来避免生硬的过渡
  • 放置了不少大型的occluder来cull掉挡住的物体,然后也可以避免light bleeding
特别:
  • 会调整shadow map的方向,让建筑竖直的边和shadow map的u coordinate一致
  • 最后一个cascade用于particle的shadow
  • cut scene时候用专门的shadow map---专门绕着主角来
GodOfWar(psp&god of war collection ps3)
。。。原来psp的god of war与god of war collection ps3不是一个团队开发的。
这个版本的有一个引擎叫做ReadyAtDawnEngine。
  • light indexed deferred
  • evsm
  • sample distribution shadow maps
  • overdraw counting
    • 这个很有nice,在构建shadowmap的时候使用stencil来查每个像素的overdraw,如果没有发生overdraw,也就意味着这个像素点上是只有shadow caster,没有receiver,那么这点上可以不画caster
    • 但是这个信息怎么拿来来skip掉一些object,没说。。。
farcry3
这个真正亮,farcry3是一个超大场景,有日夜变换的游戏。
csm只延伸到40米,之后是使用另外一个shadow技术,可以覆盖到2kmx2km的范围。
做法是在每一个tile(64mx64m)上构建了一个heightmap(低端机器32x32,高端pc48x48),每一个像素投射到具体的这个tile的heightmap中,高于这里的高度值的就是没shadow,反之就是有shadow。
构建的过程是逐tile的,而且分帧计算:
  1. 构建light view depth,256x256
  2. 然后在tile上的格子向上采样(采样的过程就类似计算shadow了),分别隔5m,10m,40m这样,选取最高的高度,存下来,resolution是192x192
  3. downsample 192的texture到32x32.
这种做法有这么几个优势:
  • 文中没有提到,但是我觉得最棒的地方就是每个tile可以很好的分帧,我在项目里也写了个类似的,realtime的cook了一些shadow信息,然后多帧重用,但是分帧就不太好做,farcry3就可以很好的3帧一个tile的逐渐更新
  • quality上比普通的shadow map要来的好,filter和插值都非常的好
GodOfWar3
这里的shadow都是基于tile来做的,cascade是8x8x4的cell,在构建shadow的时候是8x8的2d的。
细节说的太不清楚了,还是看gdc10的原版paper吧。
two worlds 2
  • cascaded shadow map
  • 低精度的(1/4)的shadow buffer,然后使用bilateral upsampling
  • temporal caching提升shadow和ao的品质
    • 用于查询的是key,查询的结果是value
    • 这里的key是pixel的depth
    • shadow和ao的结果是value
一些未来的方向:
  • 体积阴影(volumetrics)
  • 透明物体的阴影(这个不是比较普遍了么?)
  • voxelize

[sig12]几个AAA游戏中的阴影技术相关推荐

  1. 几个AAA游戏中的阴影技术

    http://blog.csdn.net/ccanan/article/details/7941821 http://www.dimension3.sk/downloads/valient12_sha ...

  2. [转载]漫谈游戏中的阴影技术

    学习啦~~~~~~ 原文地址:漫谈游戏中的阴影技术作者:flymemory 随着硬件的越来越高端化,各种以前可望而不可及的效果越来越多的应用到网络游戏里.本篇文章是介绍目前游戏中影子的实现方式,它们的 ...

  3. matlab中blur函数_游戏中的PostProcessing(后处理)

    PostProcessing是现代游戏中必不可少的技术之一,本文简单来总结下PostProcessing的实现原理和应用.因为详细写起来需要很大篇幅且很费时间,这里只简单介绍下原理. 1.基础部分 P ...

  4. 人工智能(AI)在游戏中的应用(上)

    AI在视频游戏中的应用 副标题:游戏AI技术的发展现状以及在视频游戏领域的应用概览 (原作者:)Written by Laura E. Shummon Maass and Andy Luc 大多数人可 ...

  5. 国际战略中aaa模式_AAA游戏中的微交易将继续存在(但仍然很糟糕)

    国际战略中aaa模式 This weekend, while most of the technology and gaming press wasn't working on anything pa ...

  6. Affinity:手把手教你“借鉴”好莱坞大片和AAA游戏大作中的配色方案

    本方法在Affinity Photo和Affinity Designer中差不多,本文使用Affinity Photo演示. 配色这个事儿,对于和老王一样码畜出身毫无美术基础同志来说,可能真是心中永远 ...

  7. 游戏中的角色渲染技术之皮肤篇

    原文链接https://blog.uwa4d.com/archives/Usparkle_Skin.html 这是侑虎科技第253篇原创文章,感谢作者洛城供稿,欢迎转发分享,未经作者授权请勿转载.当然 ...

  8. unity 角度限制_喵的Unity游戏开发之路 推球:游戏中的物理

    前言很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本 ...

  9. 游戏中的影子制作技术

    本文版权归 17173 所有,如有转载请按如下方式显示标明原文出处,以示尊重! 原创:17173 原文:http://job.17173.com/content/2009-07-30/20090730 ...

最新文章

  1. Mila唐建博士《图神经网络:算法与应用》研究进展
  2. sota如何创建作业及配置作业文件详解(章节5)
  3. python可以处理什么文件夹_Python处理文件和文件夹的10条命令
  4. poj3254 Corn Fields 状压DP入门
  5. Jquery跨域请求php数据(jsonp)
  6. 自定义表单提交后返回上一页修改
  7. docker入门、docker基本命令
  8. 测试工具平台介绍之MeterSphere
  9. ubuntu安装transmission下载BT
  10. 沧小海基于xilinx srio核的学习笔记之第四章 Xilinx SRIO的示例分析(一)
  11. caj转换成word方法免费
  12. 【✈躺平了,三分钟学bat脚本✈】adb shell 执行命令 + bat脚本延时操作
  13. 紫光华宇拼音输入法不为人知的秘密(一)
  14. Win11修改用户名(超详细图文)
  15. [《不敢说爱的年纪》小个子的小说集]2012年8月28日
  16. 微信公众号和服务器的关系,微信公众号订阅号和服务号主要区别
  17. app上架小米应用商店流程
  18. (软考高级、高项)信息系统项目管理师(第三版)过关经验
  19. Kerberos基础及KDC服务(理论知识)
  20. 2020年机修钳工(初级)报名考试及机修钳工(初级)模拟试题

热门文章

  1. 苹果vs剪辑下载_苹果自带APP到底有多好用?这六款你真的要用起来
  2. 小米生态链之殇?“去小米化”的企业终将会积极拥抱小米
  3. 【Windows】如何删除磁盘管理中的恢复分区
  4. 2022年血糖仪行业现状
  5. 计算机编程实验,c语言下的计算机软件编程实验
  6. Excel VS BI,谁才是真正的大数据分析工具?
  7. 【Linux】用户配置文件(passwd shadow | group gshadow)
  8. 2022年NOC软件创意编程(学而思赛道)决赛小学初中组python
  9. UpdatePack7R2 v22.11.10 Win7累积更新离线整合补丁
  10. 使用jTessBoxEditorFX-2.2.0制作自己的字库