执着于光影表现【全境封锁】的开放世界渲染

Snowdrop(雪莲花)引擎的全局照明技术介绍
 
补上原文链接:http://game.watch.impress.co.jp/docs/news/20160322_749267.html
 
 
UBI Massive 工作室的Nikolay Stefannov
 
    3月18日,UBI Soft的技术主管Nikolay Stefannov进行了题为【Global Illumination in 'Tom Clancy's The Division'】(全境封锁的全局照明技术)的Session。
 
    在家用机和PC游戏的世界,GI已经变得习以为常了。既然GI已经是必须的话,那就要以现今有效的GI光照为前提,并向有一定风格的【画面制作】的焦点转移。画面制作,并不仅仅是美术师在数据绘制上的方法,还有程序上的技术。这里,Stefannov就是以【全镜封锁】画面制作的技术方面进行了解说。
 
 【游戏世界中光源的移动变化】

 
    【全境封锁】,是UBI的瑞典工作室UBI Massive开发的第三人称射击游戏,引擎使用的是UBI自研的雪莲花引擎。【全境封锁】有着RPG元素,游戏场景变成了开放世界。以纽约曼哈顿的6平方公里为游戏舞台,世界内有有着总计200万的实体(物体对象)。车辆总数约2万量,垃圾堆3万座。
 
    因为要重视开放世界的整体性,光照为了强调美术师的演出意图,在项目上做了限制,日光无法照明到所有的空间,经常有发暗的地方。
 
    雪莲花的GI光照,因为全部都是动态的,什么时候都可以进行调整。为了提升性能,很多的游戏引擎通常会把光源的影响的预计算结果烘培到光照贴图里。而本作的雪莲花引擎,最大的特征就是完全的动态光照。使用的Light Probe,因为管理太复杂,也并不太适应项目的设计。
 
【本作技术的核心特性】

 
 GI的影响范围不仅仅是室外。本作中,为了系统可以不区分室内和室外,在室内也会有很大的开口让真实的光照射入,根据游戏世界里时间的变化,光影的色彩也会改变。室内的家具,虽然不是全部,也作成受到光照的影响。为了可以利用这种空间光照的特性,不能生成光照反射。
 
    气候的动态变化是通过脚本随机的变化的,包括太阳和天空的颜色,云的多少,雾和霞的强度等等。还有程序化实现的降雪系统,使得本作的场景变得更加的突出。
 
 
【PRT ON/OFF的比较】

 
 
    要实时的进行这种动态的光照,通常会在没有光源变化的场景中,使用预先计算出光源影响的Precomputed Radiance Transfer(PRT)的方法,一般的PRT,Porbe检测的HDR环境光,只能处理Directional light这种有方向性的光。用这种光照方法,无法获得想要的结果。另外,即便是高频的也可以使用PRT,不过计算消费太高了。
    
    那么,本作中的蛮力方法,是近似GBuffer CubeMap的方法,预先检测出所有可见的物体表面保存为列表数据。 Light Probe自定的配置为4米的空间,64米的四方区域(Cell)里最多有1000个这样的Light Probe,通常是200~300个。区域会对应玩家移动来读取或销毁(Streaming),从而可以绘制整个广阔的开放世界。
 
【 全局照明技术的方法解说】
 
 
 
    每个区域(Cell)制作预处理数据大概要5~6秒,通过这个计算结果得到的曼哈顿的光照数据资源大概是1GB的硬盘空间,区域总数约4000个,Probe约116万,物体表面5664万。
 
    使用这些数据,在游戏运行时再每帧进行光照的计算。本作中,不同的Probe Set之间的结果没有做混合。这是因为需要短距离的GI效果,也算是本作的特征吧。
 
    这种光照的在计算在性能上,每帧会对玩家所在的区域和另外的一个区域进行处理,每次处理800~900个Probe,在Xbox One上异步0.95ms,GTX760的PC上是0.47ms,在维持高帧率的同时获得了非常好的效果。
 
【游戏内移动变化产生的光照变化】
 
 
 
    上面记述的主要是本作的GI方法。本Session中,还介绍了很多游戏中采用的提升图形品质的方法。每个都是比较熟悉的方法,不依赖通用的游戏引擎,而开发公司自己的引擎,就可以使用最合适的技术来制作来完成自己的画面制作了。
 
    UBI和EA的各个工作室的情况是,强力的工作室会制作公司自研的引擎,进行改良,并在几个工作室内共享。这样才能满足游戏所需要的技术力,并运用到更多的游戏上,达成更高的销量吧。
 
    在越来越多采用第三方的游戏引擎的现今,我想可以有这样的决断是相当难得的,不过为了画面制作的多样性,还是希望有技术和实力的工作室可以继续这个方向。
 

GDC2016 执着于光影表现的【全境封锁】的开放世界渲染的更多相关文章

  1. GDC2016【全境封锁(Tom Clancy's The Division)】对为何对应Eye Tracked System,以及各种优点的演讲报告

    GDC2016[全境封锁(Tom Clancy's The Division)]对为何对应Eye Tracked System,以及各种优点的演讲报告 原文 4Gamer編集部:松本隆一 http:/ ...

  2. GDC2016 [全境封锁],11个种类5个派系的敌人设计思路

    [汤姆克兰西:全境封锁],11个种类5个派系的敌人设计思路 实现[汤姆克兰西]射击RPG的AI开发   日文链接:http://game.watch.impress.co.jp/docs/news/2 ...

  3. 2016动作短片《全境封锁:特工起源》HD720P.英语中字

    导演: 德文·格雷厄姆主演: Matt Lynch / Sasha Andreev / Amanda Day类型: 动作 / 短片制片国家/地区: 美国语言: 英语上映日期: 2016-01-19片长 ...

  4. GDC2016 【全境封锁】的全局照明技术

    现在全力支持公司的GAD平台了,很多的内部分享也可以放出来 http://gad.qq.com/article/detail/7159232

  5. GDC2016 【巫师3 狂猎】的游戏事件工作流

    巫师3 狂猎(The Witcher 3: Wild Hunt )的游戏事件工作流   http://game.watch.impress.co.jp/docs/news/20160320_74916 ...

  6. GDC2017 把“现实的天空”在游戏内再现【Forza Horizon 3】的天空表现

    原文链接 http://game.watch.impress.co.jp/docs/news/1047800.html 完全表现出现实世界中各种偶然而不可预料的风景!     [Forza Horiz ...

  7. [转帖]AMD第三代锐龙处理器首发评测:i9已无力招架

    AMD第三代锐龙处理器首发评测:i9已无力招架 Intel 从之前的 CCX 到了 CCD 增加了缓存 改善了 ccx 之间的延迟. https://baijiahao.baidu.com/s?id= ...

  8. 剖析虚幻渲染体系(14)- 延展篇:现代渲染引擎演变史Part 1(萌芽期)

    目录 14.1 本篇概述 14.1.1 游戏引擎简介 14.1.2 游戏引擎模块 14.1.3 游戏引擎列表 14.1.3.1 Unreal Engine 14.1.3.2 Unity 14.1.3. ...

  9. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

随机推荐

  1. 主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

    \Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass ...

  2. jquery笔记(基础知识)

    最近在学jquery,做点小笔记 语法: $(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有 <p> 元素 $("p . ...

  3. Codeforces Round #338 (Div. 2)

    水 A- Bulbs #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1 ...

  4. storm安装笔记以及提交拓扑任务

    Storm -- Distributed and fault-tolerant realtime computation 这是一个分布式的.容错的实时计算系统 把Storm依赖组件的版本贴出来供各位参 ...

  5. HDU3870 Catch the Theves(平面图最小割转最短路)

    题目大概说给一个n×n的方格,边有权值,问从求(1,1)到(n,n)的最小割. 点达到了160000个,直接最大流不好.这题的图是平面图,求最小割可以转化成求其对偶图的最短路,来更高效地求解: 首先源 ...

  6. Storm编译打包过程中遇到的一些问题及解决方法

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/11/30/som ...

  7. Java集合框架学习总结

    转自:http://www.cnblogs.com/oubo/archive/2012/01/07/2394639.html Oubo的博客 以下介绍经常使用的集合类,这里不介绍集合类的使用方法,只介 ...

  8. Android -- 打开某个指定的网站

    1. 要使用的代码 Intent intent = new Intent(); intent.setData(Uri.parse(sUrl)); intent.setAction(Intent.ACT ...

  9. BZOJ4546: codechef XRQRS

    Description 给定一个初始时为空的整数序列(元素由1开始标号)以及一些询问: 类型1:在数组后面就加入数字x. 类型2:在区间L…R中找到y,最大化(x xor y). 类型3:删除数组最后 ...

  10. Emoji表情符号录入MySQL数据库报错

    版本一: 1,查看tomcat后台日志,核心报错信息如下:   Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\ ...