[gdc12]《孤岛惊魂3》的全局光照技术
来源:互联网 发布:淘宝网中老年服装品牌 编辑:程序博客网 时间:2024/04/29 22:01
http://www.gdcvault.com/play/1015326/Deferred-Radiance-Transfer-Volumes-Global
gdc12年的,farcry3使用的全局光照技术。
sum
一张图说明整个过程:
也就是会在场景里放置大量的probe,然后做预计算radiance transfer.
实时的时候,会首先对probe做lighting,然后lighting结果放入volume texture,进而lighting场景。
类似的技术让人想起irradiance volume这里最大的不同就是,radiance transfer volume放的是radiance transfer然后实时的再计算光照,这个最牛的地方,就是支持太阳光方向亮度变化的全局光照
radiance transfer
这个是在dx sample里就出现过的概念,本blog这里也做过解释。
PRT核心思想是建立起入射光和出射光的一个映射,这个映射是离线bake出来,与geometry,material相关的。
这个映射建立起来之后,给定入射光就可以以较低的代价计算出出射光,它有这样一些特点:
- 可以支持变化的光源
- 模型和材质需要保持稳定,以及简单数学能hold住的变化(比如旋转)
- 一般是处理低频的光照信息
radiance transfer概念清晰了之后,我们可以顺着pipeline走一轮
probe放置
这里是工具链方面,也非常的重要,probe的放置遵循三个原则:
- 自动化:通过ray trace的方式,每4米,在静态模型(包括terrain)那里生成probe
- 可以手动干预:volume类的做法都会遇到精度不足的问题,给美术提供一个手动干预的功能是很重要的
- 比如在典型棘手的室内,美术可以放置专门用于室内的光照渲染volume和相应的probe
- 比如在典型棘手的室内,美术可以放置专门用于室内的光照渲染volume和相应的probe
- debug visualize
radiance transfer bake
console上面(ps3和xbox360),bake
- 三个向上的方向和一个向下的方向
- sky visibility(用于矫正亮度)
pc上面额外加一个local radiance transfer
内存消耗也非常的低: - 一个probe,152byte
- 一个sector上,console–15kb,pc–225kb
lighting
这部分就比较直接了,直接使用prt来做lighting就好,其中用到了sky visibility来矫正亮度。
然后类似irradiance volume,这里的光照信息,除了可以拿出来lighting场景,也可以拿出来lighting一些透明的东西。
值得一提的是一个低精度的occlusion信息,类似做法在cryengine,《刺客信条》等地方都有过,就是cook一个全场景的描述occlusion的信息,可以让远处的光照信息更加的准确。
- [gdc12]《孤岛惊魂3》的全局光照技术
- [gdc12]神秘海域的水技术
- [gdc12]神秘海域的特效技术
- 孤岛惊魂最速通关
- 全局光照-比较好的技术博客汇总
- 孤岛惊魂风格哈啥地方噶啥地方嘎斯的发
- Unity 5 中的全局光照技术详解
- Unity 5 中的全局光照技术详解
- 全局光照技术解析Global Illumination Explained
- Unity 5 中的全局光照技术详解
- Unity 5 中的全局光照技术详解
- Unity 5 中的全局光照技术详解
- Unity 5 中的全局光照技术详解
- [sig16]《使命召唤》中的全局光照技术
- Unity 5 中的全局光照技术详解
- Unity 5 中的全局光照技术详解
- Unity 5 中的全局光照技术详解!
- Unity 5 中的全局光照技术
- Linux内核等待队列探究-wait_queue_t-wait_queue_head_t
- MAC OS X 安装 pecl
- javascript中的isNaN()
- Python之excel处理
- wox使用总结
- [gdc12]《孤岛惊魂3》的全局光照技术
- MQTT-Android
- bzoj 4032 [HEOI2015]最短不公共子串 后缀trie
- Working with System Permissions
- iOS9.0之后他们集成点击状态栏回到顶部
- 在iOS中使用正则表达式
- Linux中目录权限以及stat查看文件信息时的Access time,Modify time,Change time解析
- 写一个通用的copy(String 原始路径,String 新路径),能复制所有文件,且名字和后缀名与源文件一致,在名字前拼接当前日期使用Scanner写入路径
- 深入理解HTTP协议