PhysicallyBased Lighting in Call of Duty: Black Ops

Dimitar Lazarov@Treyarch带来。

开发原则

treyarch开发过程中遵循这样的原则:“一起以效率为核心。”

很多地方有很多的

  • 限制:可以简化问题,节省开发时间
  • 特殊处理:以便把限制发挥到极致

实际开发中也的确如此,基本上treyarch比较看重实际,crytek看重上流,两者在销量和口碑上都分别达到自己梦想了。

forward lighting

treyarch依旧使用forward lighting,对它们来讲想达到60fps,deferred lighting太费了,deferred lighting更适合把帧数从15帧拯救到30,而不是从50弄到60.

但是forward lighting在很多地方付出了不小的代价:

  • mesh要小心的切分
  • lighting数量和摆放要好好控制

baked lighting

做了这几件事情:

  • light map
  • light grid:也就是irradiance volume这类的
  • environment probe:和crytek的那个差不多

radiance&irradiance

这里dimitar又给大家复习了下这两个概念:

  • irradiance:surface上的一个点中入射的所有光的量
  • radiance:一个点在一个方向上发出的光的量
  • 两者之间是一个积分的关系,也就是radiance*dot(N,L)做半球积分便是irradiance

runtime lighting

  • diffuse
    • primary diffuse:dot(N,L)
    • secondary diffuse:从lightmap和lightgrid里面构建出来
  • specular
    • prmary specular:microfacet brdf
    • secondary specular :通过environment probe,fresnel,

physicallybased的原因:

  • 更加的写实
  • 更加的贴近现实并保持一致,美术也不用调整那么多
  • 也就是在制作量和品质上会更好
  • 额外的alu消耗也比较有限

其他一些相关:

  • gamma correct pipeline
  • hdr
    • 没有用16位的rendertarget
    • 把亮度限定在0--4
    • 使用art driven exposure,而不是gpu down sample出来的那种,直接在shader输出光照的使用应用
    • 还用filmic curve

光照模型

microfacet理论,直接看klayge的wiki吧,说的清晰简单。

早起treyarch使用cook-torrance模型,这也是众多学院派所提倡和建议的,但是后面在研究深入了之后发现可以在quality和performance上做的更好。

因外BRDF里面的几个部分可以各自选择:

  • distribution function
  • fresnel
  • visibility function

所以treyarch就在这一块多下了很多功夫。

  • distribution function
    • 开始尝试的是beckmann
    • 之后是用的phong ndf,发现效率更好,与beckmann几乎一样
  • fresnel
    • schlick's approximation to fresnel(也就是取代cook torrance里的,获得更好的效率)
    • 这里需要注意的就是microfacet理论下,normal其实是h(normalize(lightDir+viewDir)),这样给定viewdir和lightdir的话,fresnel项是一个和物件表面的normal无关的一个东西,这里可能有同学(比如我)会觉得不对劲,但是用这个理论模型就是这样,物件normal带来的明暗变化在distribution function和visibility function中带来,所以这一块实际上是类似全屏变亮变暗的项,使用1反而更接近正确的结果。
  • visibility function
    • Kelemen-Szirmay-Kalos approximation to cook-torrance(4 instruction)
    • Schlick's approximation to Smith'sShadowing Function(8 instruction)
    • 这几种方式各有千秋,treyarch最终选择了Schlick-smith,效果最好(性能消耗最大)
    • visibility function是一个在normal,lightDir,viewDir,specPower上的函数,表达的是有给定normal的microfacet被light和view看见的几率

EnvironmentMap

首先environement map怎么用的问题,b3d上问了一下,得到较为准确的答案,environement map要理解为是secondary specular,正如irradiance volume等是secondary diffuse一样的位置,作为primary specular light的补充存在的。

第一个问题就是environment map的压缩问题,大的resolution效果好,但是无法承受其消耗。

解决的办法是把environment map中的亮度在地图中除以averagediffuse lighting,然后进行存储,在使用的时候再通过乘以averagediffuse lighting转回来。

解除亮度之后呢,evironment map其实就变成environmentdistribution map了。

这个过程treyarch叫做normalization,但是这个之后怎么去节省内存,没说。。。估计是normalized color可以少一个通道等方法压缩。

这里还提到了一个工具是ati的CubeMapGen,可以生成CubeMap,prefiltermipmap, dxt自己的工具还有些问题,cubemapgen可以把这些处理好。

在sample cube map的时候和crytek一样,根据gloss的值来选择不同mipmap的texel来sample,对于很glossy的material,就会出现很大的mipmap 上sample的跳跃,也就是会造成texture cache trashing。

treyarch的解决办法是:variance to gloss---没有细说,应该是对gloss的方差严重的材质做一些blur。

fresnelfor glossy reflections

fresnel这里有这样几个选择:

  • mirror reflection
  • microfacet highlights
  • glossy reflection---把多个microfacet normal平均一下

一个效果上完美的solution是做多个cubemap sample,把它们用brdf做到一起,但是这个就太消耗了。

所以在要达到的目的清晰的前提下,treyarch采取的方法是把从prefilter的cubemap里读出的值来替代使用cube map多点sample,然后brdf,在积分的方法。

special cases

materialspecular color基本可以分成两个部分:

  • metal,colored specular大于0.5f(linear space)
  • non-metal, monochrome specular between 0.02and 0.04 linear space

纯金属类的shader:没有diffusetexture,没有diffuse lighting

非金属类:没有specular texture,

美术方面

这部分很喜欢,程序员谈游戏开发只谈技术就太狭隘了。

这里技术上的革新给美术带来一些不适应,需要更多的培训和示例,在美术制作的时候需要一段时间来培养这种感觉,因为以前美术画一个东西出来什么样子心里能估个大概,但是刚转到新的技术上时候感觉要重新建立,所见即所得的工具非常重要。

diffusetexture,使用照片来做diffuse texture就不太行,因为照片里面已经包括了lighting信息,需要被仔细的校准。

specularmap,不再是specular_map_texel*pow(dot(h,l),spec_power)里面的那一项了。

这样也不再能把ao cook到spectex里了。

而且也没有gloss map重要。

glosstexture,最重要的也是最难做的map,

小结

physicallybased lighting消耗额外的%10--%20的ALU,但是效果上有较大提升,是一个高性价比的选择。

[siggraph2011]使命召唤之黑色行动中的光照技术相关推荐

  1. [siggraph17]《使命召唤13:无限战争》光照技术

    brief siggraph17, cod13是infinity ward开发的,技术是多方合作出来的,这篇presentation是activition central tech两个哥们带来: 是1 ...

  2. [sig18]《使命召唤:二战》的材质光照技术

    siggraph18, activision.sledgehammer带来. 主要谈的是sledgehammer工作室在cod材质系统方面的探索,这里btw一下,cod系列是infinityward, ...

  3. maven pc配置要求_《使命召唤:黑色行动5》公开测试PC配置要求:推荐GTX970+i7

    动视官方公开了<使命召唤:黑色行动5>的公开测试PC系统要求,从官方给出的信息来看,PC平台最低需求为GTX 670显卡+i5 2500k处理器. 以下为官方公布的系统要求: PC公开测试 ...

  4. STM32cubIDE 黑色主题_深邃寒冷 使命召唤17黑色行动冷战主题音乐公开

    曾为游戏<黑色行动>作曲的作曲家Jack Wall参与了<使命召唤>系列最新作<使命召唤17:黑色行动冷战>的音乐制作,并带来了游戏的主题曲.<使命召唤17: ...

  5. 故障转移集群无法连接到节点_《使命召唤:黑色行动4》联网出现故障 玩家无法连接游戏...

    过去两天,本应是<使命召唤:黑色行动4>玩家好好享受双倍经验福利的时间.然而有人却遭遇了堵心事:一部分PS4和Xbox One玩家发现他们遭遇了程序故障,无法连接服务器. 在几个小时以前, ...

  6. STM32cubIDE 黑色主题_深邃寒冷《使命召唤17:黑色行动冷战》主题音乐公开

    <黑色行动>的作曲家Jack Wall为<使命召唤17:黑色行动冷战>带来了主题音乐.开发人员Treyarch已确认Wall参与到了游戏中,并发布了具有80年代和冷战时期风格的 ...

  7. [siggraph13]《使命召唤:黑色行动2》的光照技术

    由CallOfDuty BlackOps2开发商Treyarch带来,BlackOps2是Cod第九部,首日狂揽5亿美元,他们在siggraph11时候带来PhysicallyBasedLightin ...

  8. 使命召唤ios_使命召唤竞争性多人游戏未来引发争议

    使命召唤ios The Call of Duty esports community is currently reeling, thanks to the recent announcement t ...

  9. [sig16]《使命召唤》中的全局光照技术

    Treyarch是<使命召唤:黑色行动>系列的开发商,使命召唤系列的成功不必细说,treyarch也是一个在技术上很有探索的公司,在<使命召唤:黑色行动>1中率先使用基于物理的 ...

最新文章

  1. Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)
  2. 《Linux内核设计与实现》读书笔记(七)- 中断处理【转】
  3. tensorflow tf.py_func
  4. UA MATH564 概率论 计算至少有一个发生的概率:容斥原理与庞加莱公式
  5. 如何使用实时计算 Flink 搞定实时数据处理难题?
  6. Android中BroadCast与Activity之间的通信
  7. ACwing 3. 完全背包问题(DP)
  8. linux经典脚本实例,Linux常用Shell脚本珍藏
  9. 最新的jQuery插件和JavaScript库
  10. HTML超文本标记语言(八)——表单form
  11. Linux安装Nexus3
  12. transformer中的多头注意力机制
  13. 学计算机拼音摇号,拼音真的很难教?要不要提前学?我们一起陪娃做好这些就够了!...
  14. 互联网日报 | 字节跳动发布独立教育品牌“大力教育”;哈啰出行试水网约车;京东“好房京选”线下品牌落地...
  15. 为 “超级大脑”构建支撑能力,腾讯云聚焦AI技术落地
  16. 烧写ARM板----MYS-6ULX
  17. 移动页面HTML5自适应手机屏幕宽度几种办法
  18. 昨日互联网,明日区块链
  19. cerebro 配置
  20. vivo X90和iPhone 14哪个好 vivo X90 和苹果14 区别对比评测

热门文章

  1. 通俗易懂解决,JavaSE基础语法
  2. 县市疫情分布地图制作
  3. 天津职称英语计算机考试时间2015,2015天津考区全国职称计算机考试报名入口
  4. Ubuntu20.04作为路由器使用
  5. java调用 everything 文件快速扫描
  6. rust 蓝卡_rust怎么弄蓝卡和红卡
  7. 图像坐标、地理坐标和投影坐标的相互转化(Python版)
  8. 马超计算机博士,厦门工学院走出的中国科学院博士校友马超
  9. 论文阅读:Can Generative Pre-trained Language Models Serve As Knowledge Bases for Closed-book QA
  10. Alexa Voice Service