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

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. WPF拖放功能实现zz

    写在前面:本文为即兴而作,因此难免有疏漏和词不达意的地方.在这里,非常期望您提供评论,分享您的想法和建议. 这是一篇介绍如何在WPF中实现拖放功能的短文. 首先要读者清楚的一件事情是:拖放主要分为拖放 ...

  2. uva 107 - The Cat in the Hat

     The Cat in the Hat  Background (An homage to Theodore Seuss Geisel) The Cat in the Hat is a nasty c ...

  3. regex: add quote for words in Notepad++

    assuming words only contain a-zA-Z0-9. search: (\<[a-zA-Z0-9]+\>) replace: "\1"

  4. 【原】iOS学习41之多线程

    1. 多线程概述 1> 程序.进程和进程的概念 程序:由源代码生成的可执行应用.(例如:QQ.app) 进程:一个正在运行的程序可以看做一个进程.(例如:正在运行的QQ就是一个进程),进程拥有独 ...

  5. 02_Swift2基础之常量和变量+注释+分号

    1. 常量和变量 常量 和 变量 把一个名字(比如 'number' 或者 'welcomeMessage')和一个指定类型的值(比如数字'10'或者字符串 ' "Hello" ' ...

  6. aspx与ashx

    ashx在VS的中文版是新建“一般处理程序”,其实是一个实现类System.Web.IHttpHandler接口的类.而任何一个实现了IHttpHandler接口的类都能作为一个外部请求的目标程序.H ...

  7. 使用linux命令行配置无线网链接

    1. 需安装wpa_supplicant https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8 ...

  8. document.forms[0].submit object is not a function

    今天在做项目的时候发现了一个问题:document.forms[0].submit object is not a function. 这个问题是在用JavaScript 代码来提交一个表单时发生的. ...

  9. CentOS6.4 安装Sphinx 配置MySQL数据源

    前提安装完mysql,并创建测试表和数据 DROP TABLE IF EXISTS `documents`; CREATE TABLE IF NOT EXISTS `documents` ( `id` ...

  10. CSS 分享

    原来的那个暂时不用了,贴出来一下,有兴趣可以参考,原型是Metro,不要禁用css 改了很多次~ 面码大法好!!! /*测试区域*/ /*标题备份*/ h7 { background: #2B6695 ...