pv,svogi,vxgi,各自的优缺点在哪,ue4还有可能把svogi加进去吗
文刀秋二,NVIDIA图形工程师
Light Propagation Volume最早被Crytek发明(不过发明人现在在NVIDIA),它的做法简单总结是先生成一些虚拟的点光源来近似间接光照。每个点光源都要渲染一个reflective shadow map,然后将shadow map的光照信息注入到一个专门用球谐系数形式保存光照的volume 3D纹理里面,然后在纹理内部将最初的光照传递分散开来,渲染的时候直接从这个volume texture里读取要着色的点位置的颜色作为间接光照。这个方法可以达到不错的间接漫反射。缺点第一是volume texture太费显存,第二是基于体素化之后的光照信息也会有“格子”样的artifact,而且也是非常耗费计算的一个技术,因为每一个虚拟点光源都要渲染一个reflective shadow map。
Sparse Voxel Octree GI(又叫Voxel Cone Tracing)和VXGI都是NVIDIA的技术,VXGI就是SVOGI最终产品化后的名字,我个人其实更喜欢之前GiWorks的叫法- -。他们的做法是首先需要把整个场景体素化,然后把体素化的场景保存在一个三维的数据结构里。接着把直接光照通过用Reflective Shadow Map或者直接注入的方式把光照信息写到这个三维的数据结构里去,注入的时候需要。在渲染时得到像素的位置和法线信息之后就类似像光线追踪一样追踪一些Cone,追踪的时候要从体素化后并且又直接光照信息的数据结构里读取光照信息,然后得到光照作用在当前像素上。SVO和VXGI唯一的区别就是数据结构的不同。SVO是用的是Sparse Voxel Octree,遍历这种数据结构很麻烦也很慢。所以VXGI使用了Clip Map. Clip Map就是类似mip map的一种存储方式,只不过在最低LOD的几个level只保存了中心的信息,在算法里Map的中心当然是你的相机视点,也就是说离视点越远的地方场景的体素信息越粗糙。VXGI因为可以调整追踪的Cone的角度的大小,可以通过追踪非常细的Cone来近似Glossy的反射。VXGI的问题当然第一是在于每一帧都要做场景体素化(当然可以只体素化动态的部分)比较费时间,而且3d的文理会费比较多的显存,而且和LPV一样基于场景体素化的精度决定了光照的精度,所以也会有漏光等artifact存在。贴一个VXGI的文档:http://on-demand.gputechconf.com/gtc/2012/presentations/SB134-Voxel-Cone-Tracing-Octree-Real-Time-Illumination.pdf
这个网页有一些简单的介绍和demo视频: https://developer.nvidia.com/vxgi 不过需要翻墙可能。
不过值得一提的是NVIDIA的Maxwell GPU的架构的一些feature可以非常好的支持和加速VXGI的体素化等步骤。
总的来说这些算法都是将场景和光照信息通过某种prefilter的方式保存然后渲染的时候reconstruct回来的尝试。中间具体如何filter和reconstruct我认为现在都不能说是最佳的和精确的,还有探索的空间。同时它们也都是很expensive的技术,所以暂时并不普及。我这里的介绍也比较high level, 许多细节感兴趣还得自己看paper和code。
贴一些去年我参与的VXGI Demo的图片,在SIGGRAPH 2014上展示过:
UE4中早就实现了LPV,可以在Console中打开:https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/LightPropagationVolumes/index.html
我们组也已经把VXGI以库的形式整合到UE4中,并且还有在继续维护和开发VXGI:https://github.com/NvPhysX/UnrealEngine
补充一下引擎在默认的情况下是不实用他们做GI的。一般来说对于静态场景,烘培的光照贴图就能有非常好的效果了,不值得去付出这么大的额外计算时刻维护一个庞大的数据结构。如果你有非常多的动态物体,又有很多破碎等效果,VXGI在性能和效果上都是优于LPV的选择。
收藏 • 没有帮助 •
• 作者保留权利
叛逆者,KlayGE创始人
LPV基本已经没有存在的必要了。性能和效果都不如后者。
收藏 • 没有帮助 •
• 作者保留权利
逍遥剑客,鹅厂里的猿类
收藏 • 没有帮助 •
• 作者保留权利
陶仁贤,引擎布道者
收藏 • 没有帮助 •
• 作者保留权利
侯烁
vxgl=svogi,物理上合理,就是体素化动态物体太费+对传统管线改造太大希望nvidia专卖出套api做这个
收藏 • 没有帮助 •
• 作者保留权利
匿名用户
Voxel-Based Global Illumination
官方开发者论坛上的人贴的测试效果图
![](https://pic2.zhimg.com/42fcb5e93f3b000f4b75950b82ece1dd_b.jpg)
![](https://pic3.zhimg.com/d9a5ff065bc67b9443083500d6895cb2_b.jpg)
![](https://pic1.zhimg.com/a803ea2e20c81325fb1ae7897b0d60e8_b.jpg)
不过这个feature只做了一半,还不支持动态物体……
pv,svogi,vxgi,各自的优缺点在哪,ue4还有可能把svogi加进去吗相关推荐
- linux下磁盘管理之利器 lvm使用介绍
点评:LVM(Logical Volume Manager)是一个应用于Linux的内核的逻辑卷管理器,是Linux环境下对磁盘进行分区管理的一种机制 一.LVM 简介 LVM(Logical Vol ...
- linux vg lv pv
= pv由物理卷或者分区组成 pv可以组成一个或者多个vg vg可以分成多个lv 方便扩展 pvs vgs lvs 可以查看当前存在的pv vg lv 我的centos硬盘20g 使用了一 ...
- 【ML】逻辑回归适用场景-原理-优缺点汇总:
所以文档都用来做笔记,便于翻阅复习,如有侵权,联系我哈,可删除~~ 什么是逻辑回归: LR是linear regression还是logistics regression呐? 两者的区别:线性回归的预 ...
- 逻辑卷管理器:PV、PE、VG、LV
LVM:Logical Volume Manager,逻辑卷管理器. 重点:可以弹性的调整文件系统的容量,而不在于性能和数据安全上面,因此如果强调性能和备份,那么直接使用raid即可,不需要用到LVM ...
- 怎样评价推荐系统的结果质量?
本文由作者 达观数据 于社区发布 推荐系统是互联网发展至今最常见也重要的技术之一.如今各类APP.网站.小程序等所有提供内容的地方,背后都有推荐系统在发挥作用. 开发好一套真正优秀的推荐系统非常有价值 ...
- C++秋招春招面试总结
1.1指针和引用 (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来 的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int ...
- linux系统运维面试2000多题
技术问题 1. IDC机房的域名怎么维护的 2. 怎么根据nagios报警做出调整的 3. nagios的状态还有怎么添加监控服务 4. 怎么监控CPU的状态 5. 从时候接linux的?都用过哪些系 ...
- 远程字典服务Redis,感谢B站黑马程序员,多多三连
目录 1.数据存储的解决方案(电商场景) 2.远程字典服务Redis介绍 2.1 基本操作 2.2 数据存储类型 3.数据类型 3.1 string 3.1.1 string类型数据基本操作 3.1. ...
- linux小知识总结
Linux开机启动过程 上电自检,引导装载程序,内核初始化,启动systemd所有进程之父. 真机-centos8.2,虚拟机-centos7.9 8.2支持podman 操作命令 lsblk 查看分 ...
最新文章
- 介绍一下linux系统的join 命令
- RDKit入门与进阶教程(30篇)
- 薛澜:人工智能发展要让创新驱动和敏捷治理并驾齐驱
- go get 指定版本_没有VPS搭建govanityurls服务?别急!你依然可以自定义Go包导入路径...
- 【转】Asp.net MVC Comet推送
- 今晚直播 | 北邮博士生纪厚业:异质图神经网络之模型和应用
- 书籍推荐:《C#7.0本质论》
- [html] input如何在各个浏览器下保持UI统一?
- X86平台下基于grub2+busybo+linux-2.6.36制作linux系统
- 拓端tecdat|Excel实例:排序和筛选2
- MySQL 官网下载各版本连接驱动
- 解读阿里巴巴Java手册:为什么不建议使用Executors创建线程池?
- 5G及移动边缘计算(MEC)学习笔记(1)
- Chrome谷歌浏览器插件
- arcgis两点之间连线_three3D地图设置两点之间的连线
- 解决微信大字体下H5布局混乱
- 北大邮箱客户端2018版配置方法(SMTP、POP3)
- Frp内网穿透——frps服务端部署
- Facebook账号被封了怎么办?这份账号申诉指南请收好
- mysql 用sql语句创建数据库和表
热门文章
- mysql 树形结构_结合RBAC模型讲解权限管理系统需求及表结构创建
- plSql安装以及连接远程oracle相关配置
- python提取高频词_seo与python大数据结合给文本分词并提取高频词
- python异常处理_Python 工匠: 异常处理的三个好习惯
- python 爱心文字墙_python奇技淫巧 | nMask's Blog
- html 把文字显示控制,控制字体加粗显示的html标签是哪个
- idea2020.1使用Lombok注解,点击运行项目提示找不到get,set方法?
- 导入maven项目报错无法运行
- Python案例:计算softmax函数值
- sc.textFile()默认读取本地系统文件还是HDFS系统文件?