虚幻引擎4中的实时GI技术


video:

http://v.youku.com/v_show/id_XNDEwMDEwNTg4.html

UE4中的realtime GI是基于这个researcher:

http://blog.icare3d.org/

主要的paper:

http://perso.telecom-paristech.fr/~eisemann/publications/Crassin2011VoxelGlobalPG/VoxelGI_EG-pg2011-sub.pdf

http://maverick.inria.fr/Publications/2011/CNSGE11a/GIVoxels_Siggraph_Talk.pdf

算法的名字是:voxel cone tracing,很简洁的概括了算法的两个核心点:voxel&cone tracing。


voxel


谈算法先谈数据结构,voxel于3d mesh正如pixel于2d的图片:规则的离散化的表示信息,pixel是将2d的图片切分成一个个小正方形,voxel是将3d空间切分成一个个立方体。

最先听说这个是carmack和jon olick在08年的时候放出的一些前瞻性的想法,当时看起来就是把mega texture扩展到3d空间,jon olick也在youtube上面放出了一些视频。

在对变革性realtime rendering的期望与将信将疑中,今年迎来了UE4的demo,也把这项技术推到公众眼前。


voxel比较高效的组织方式是sparse voxel octree,简称svo。

是以八叉树的hierarchy方式,表示空间中有东西的部分:


svo是这个算法的关键,在于:

  • svo在以一定粒度对场景进行离散化表示之后,GI光照计算量基本保持稳定,而不是和场景中vertex数量以及复杂度成正比
    • 这一点上我们可以把这个当作是一个3d的gbuffer,里面以一定粒度存储场景信息
  • octree的层级结构,可以让我们在计算的时候很自然的引入LOD,在较远的地方使用低lod(在octree中是高层的节点),使得计算指数降低
  • 便于遍历,octree相比于三角形组成的mesh遍历速度快太多了,这在cone tracing部分和filter部分会体现出绝对优势
voxel cone tracing算法的svo的一些特点和做法:
  • 将static mesh的voxel和dynamic mesh的voxel进行分离,对于dynamic mesh的voxelmz 每帧更新。
  • 使用gpu的rasterizer pipeline进行voxel构建--非常的高效
    • 禁掉depth test,从3个方向去渲染一个mesh,渲染的精度由定的voxel精度决定
    • 那么走到pixel shader的时候,每一个triangle的信息就都被离散成pixel,而且没有depth test,就真的是每一个triangle raster出来的每一个pixel都有了,然后在pixel shader里面将voxel信息更新到svo中去
    • 更新的信息包括normal, color, material property:和gbuffer如出一辙

voxel cone tracing的算法
一个图搞定就是:

  • 从lightview渲染场景,把光照信息填入svo

  • 对svo中的光照信息进行filter,
    • 开始存进去的光照信息实在最底层的level,那么要将这些信息也通过filter放入父节点,那么在cone tracing的时候,就可以直接读父节点(if possible&necessary)来获得足够的光照信息
    • 这个过程颇像构建mipmap
    • 存的信息是光照的方向分布

  • cone tracing,在我们看到的每一个像素这里,使用一组可以覆盖这个点的半球的cone来遍历svo,进而获得这个点上的光照信息
    • 获得的方式有使用较大的cone,来获得indirect diffuse lighting
    • 较小的cone,获得indirect specular lighting

实际计算的时候,使用了基于dx和底层硬件的很多优化手段,也很重要。

AO
可以做GI,那么再有足够的voxel信息的情况下,做AO简直就是顺理成章的事情,而且这个真3d的高品质ao,不是会受限的ssao。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17326.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 UE 虚幻引擎做个捏脸小功能~~

最近在学习 UE 相关的使用,正好看到一篇文章讲解用 Control Rig 实现简单捏脸功能,这种小而美的完整案例挺适合来练手的,涉及到了 UI、蓝图、动画、骨骼等方面,值得推荐一下。 从这个小功能出发,在学习其他内容时如果有…

Unreal Engine 虚幻引擎,性能分析,优化(一)

目录 一、Frame 帧 二、理想情况下,做性能分析时,当寻找游戏存在的瓶颈时,游戏的运行环境越接近目标硬件和目标平台,获得的数据越准确。 三、线程 四、Analysis of a frame ,“CPU”线程,“Game”线程 怎…

UE4 虚幻引擎 GitSourceControl源码解析

效果功能图 背景与目标 资产的工作量很大,并不是个人在短时间内可以独自完成的,需要大量美术人员长时间的进行团队合作完成的,并且完成一版之后,后续也还有更新维护的需求。所以UE的Editor也提供了对资产版本管理的功能&#xff…

虚幻4与Unity: 哪个游戏引擎是开发者的最爱?

转自: http://www.narkii.com/club/thread-335184-1.html 虚幻4与Unity: 哪个游戏引擎是开发者的最爱? 虚幻4 (UE4) 和Unity是目前市场上最热门的游戏引擎,也各自拥有为数众多的开发者,虽然一些大型的游戏公…

【UE4】虚幻引擎运行流程

前言 当前版本:4.26.2 本文原创 说明:有些名词保持英文可能更容易理解 目录 游戏流程总览 各个平台启动引擎的入口函数 引擎入口函数 GuardedMain() EnginePreInit 引擎预初始化 EngineInit 引擎初始化 EngineLoop 引擎主循环 EngineExit 引擎退…

【虚幻引擎】UE4/UE5插件

一、插件分类 插件分为七大类 Blank:空白插件,可以从头开始自己定义想要的插件风格和内容,用此模板创建的插件不会有注册或者菜单输入。BlueprintLibrary:创建一个含有蓝图函数库的插件,此模板函数都是静态全局函数&…

虚幻引擎5 C++游戏开发教程

虚幻引擎5 C游戏开发教程 与 Epic Games 合作创建。从基础开始学习 C,同时在 Unreal 中制作您的前 5 个视频游戏 课程英文名:Unreal Engine 5 C Developer Learn C & Make Video Games 此视频教程共5.5小时,中英双语字幕,画…

【虚幻引擎】带你了解UE4

行业前景 越来越多的开发者,开发商投入到UE4中,简单来说就是使用UE4的人越来越多,许多独立游戏,大型的游戏,大公司例如“腾讯,网易”都在使用UE4来开发,加上UE4对开发者来说使用完全免费&#…

【虚幻引擎】UE4/UE5 后期处理盒子(PostProcessVolume)

B站教学链接:https://space.bilibili.com/449549424?spm_id_from333.1007.0.0 一、简介 PostProcessVolume(后期处理盒子):UE4非常强大的一个后期处理,可以调节画面的色彩,相机的景深,视频的输…

芒格-“永远不要有受害者心态”

我们应该以什么样的心态去对待我们的生活? 我不是受害者,我是幸存者。(ps :芒格深处利益之中,手握财富,应该见到过很多阴暗的人性。 他 可能也有魔鬼的一面)受害者的感觉:我认为这是一种反其道而行之的人类思考方式&…

巴菲特+查理芒格+投资理论+经典语录+给韭菜的启示

巴菲特查理芒格投资理论经典语录给韭菜的启示 巴菲特: 一个老年人在零售店里发现老婆丢了,恰好遇到一个年轻人也在找自己的另一半,老人问:你妻子长什么样?年轻人答:“她可真是个金发美人啊,身材…

git多账号切换

参考文档: https://blog.csdn.net/lqlqlq007/article/details/80613272 https://blog.csdn.net/qq_36602939/article/details/79794686 1.ssh-keygen -t rsa -C "你的邮箱" 回车,查看rsa目录,先进入该目录,将里面已…

git 用户的切换

需求场景: 某天已入职了 发现电脑上已经存在一个git的账号 这时候你需要登录你的 也就是账号切换 再比如 你的git换号了 养了个小的git号 或是从新建号了 但是电脑还存在老的号怎么办 就是需要账号的切换 目的就是登上我的账号 拉取我的私有仓库 第一步 准备 查看当前的git用配…

Git切换账号

用了新的电脑需要切换git到自己的账户 winR 输入 CMD 后运行以下命令 查看用户名: git config user.name查看用户邮箱: git config user.email修改用户名和邮箱,user.name/email后面千万记得加空格 git config --global user.name "…

拥抱生产力变革!GPT4接入Office,动嘴就能Excel到PPT!

梦晨 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 一觉醒来,工作的方式被彻底改变。 微软把AI神器GPT-4全面接入Office,这下ChatPPT、ChatWord、ChatExcel一家整整齐齐。 CEO纳德拉在发布会上直接放话:今天,进入人机交互的新时代…

零代码编程:用ChatGPT合并多个表格中的内容到一个excel中

电脑有几百个excel表格: 表格里面表头是一样的,但是数据不一样 现在,想把每个表格中的内容合并到一张表中,然后进行数据处理分析,该怎么办呢? 用ChatGPTPython,很快就可以搞定。在ChatGPT中选中…

巴比特 | 元宇宙每日必读:美版权局判定用AI工具生成的图片不受版权保护,官方解释:AI生成具有不可预测性,但并非一刀切...

摘要:据GameLook报道,一名图书作者Kristina Kashtanova此前为其创作的漫画书《Zarya of the Dawn》向美国版权局提起注册,书中使用了部分由Midjourney创作的插图。版权局此前曾接受了这一注册,但在近日却宣布撤销这项授权。该机构…

虚拟邮箱怎么设置方法_商务邮箱一般用什么邮箱正式?VIP邮箱名怎么设置好?...

不管你处在什么身份,邮件都是对外沟通的重要途径之一,虽然你可能很早就接触了电子邮件,用过QQ邮箱、TOM邮箱等,但学生时代用到的真的也不多,很多时候用的也不讲究。不过,你一旦转变角色到职场,邮…

PHPMailer 发送163网易企业邮箱和个人邮箱, 163邮箱可能无法发送gmail邮箱,可使用qq邮箱解决问题

第一步:注册邮箱,获取客户端授权码 (个人邮箱步骤类似) 企业邮箱设置:客户端设置->开启客户端授权密码->生成授权密码->保存授权密码 第二步: 上代码 composer require phpmailer/phpmailer /…

mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统

postfixdovecotSASLmysqlapacheextmailextman实现基于虚拟用户的虚拟域邮件系统 声明:省略了前面的基础配置包括安装MYSQL,postfix等,这里用的Apache,MYSQL是rpm的,postfix,courier-authlib是编译安装的&am…