Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
谈谈虚幻引擎4的Global Illumination
2023-11-05
本届GDC 2013,Epic再次展示了UE4的最新demo,效果惊艳毋庸置疑,,不过今天我们只谈UE4的光照利器--SVOGI。
SVOGI全称
Sparse Voxel Octree Global Illumination,由Epic的
Andrew Scheidecker发明,
和CE3的LPV(
Light Propagation Volumes
)同属实时全局光照,但SVOGI精度更高,这个也是虚幻引擎迄今为止首次引入实时全局光照,同时SVOGI允许在全景模式下实现间接镜面反射和光照反射。UE4保持了
octree(八叉树)的数据结构,SVOGI的算法为
voxel cone tracing,此算法的好处是可以使
cone-tracing通过GPU运行的更快,在实时模式下,每个像素可以达到运行一次甚至更多。
接下来介绍下
voxel cone tracing的核心(转载自CSDN,作者ccanan),简而言之就是voxel和cone tracing:
voxel:
voxel于3d mesh正如pixel于2D的图片:规则的离散化的表示信息,pixel是将2D的图片切分成一个个小正方形,voxel是将3D空间切分成一个个立方体。
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的时候,就可以直接读父节点来获得足够的光照信息
过程类似构建mipmap
保存的信息根据光照的方向分布
cone tracing,在我们看到的每一个像素这里,使用一组可以覆盖这个点的半球的cone来遍历svo,进而获得这个点上的光照信息
获得的方式有使用较大的cone,来获得indirect diffuse lighting
较小的cone,获得indirect specular lighting
实际计算的时候,基于DX和底层硬件的优化手段也很重要。
在UE4里,不再有预先计算好的光照贴图(
lightmaps
),取而代之的是,间接或直接光照都是由每帧实时计算得出,对比之前存储于2D纹理贴图里的光照贴图,UE4里全部存储在voxels(voxel就是在三维空间里,一个点的图像信息),voxel由树形结构管理,用来标记一个点的图像信息坐标,当一个像素被渲染的时候,它会向
voxel tree询问“哪些voxel对我可见”,基于这些信息,决定了它所会接收到的反射光数量。这些voxel tree会每帧进行信息更新,进而所有像素根据该tree获得相应的光照信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)
图形引擎
游戏开发
游戏引擎
其它文章
Unreal
谈谈虚幻引擎4的Global Illumination 的相关文章
Unity震撼首发,最新一代高清数字人短片《Enemies》
我们屡获殊荣的 Demo 团队又一次在 异教徒 The Heretic 累积了超 400 万观众 的基础上取得了进展 推出了 Enemies 一支全新的电影式预告片 以 4K 分辨率的实时渲染来展示眼睛 头发和皮肤渲染等方面的重大突破 创建
【Unity3d】Animator和Animation组件使用注意事项
一 Animator一般用于人物动画控制 特点是动画是持续的 可能有动作切换 Animation一般用于间断性的动画的控制 比如一个场景特效的播放 只播放一次就完了 二 实测Animation速度比Animator快10 左右 内存占用没测
Unity中Shader实现UI去色功能的实现思路
文章目录 前言 一 在开发过程中 在UI中会涉及一些需要置灰UI的需求 有很多实现的方法 1 做两套纹理 通过程序控制切换 2 使用shader实现对纹理去色 二 这里主要记录用shader实现的思路 1 基础纹理的采样 2 支持组件中的调
8. UE4的盒体触发器和时间轴(制作感应门)
一 盒体触发器 Box Trigger 1 创建一个盒体触发器 Box Trigger 拖动到地面上空 按End键 贴近地面 2 选中盒体触发器 在关卡蓝图中添加 On Actor Begin Overlap 事件 进入盒体触发器事件 a
unity期末作业-插针游戏
unity期末作业 插针游戏 附下载链接 鼠标控制针的发射 圆盘可以显示接住的针数目 若两根针碰到则界面变红 游戏结束 详细情况如下动态图 点我下载 https download csdn net download weixin 43474
PicoNeo3开发VR——小白教程
不断更新中 欢迎大佬们来指导 纠错 导入PicoVRSDK 1 新创一个Unity工程 Unity版本最好选择2019 4以上版本 以及需配置好安卓环境 然后导入官方picoVRSDK 2 渲染设置 Graphics APIs暂不支持Vul
Unity 音频卡顿 静帧 等待等问题的解决方案
是否遇到过在Unity中加载音频文件卡顿 也就是画面卡住 的现象 特别是加载外部音频文件时 虽然时间很短 但这终归不是什么好现象 尤其是打游戏的话 影响很大 但是一些有牌面的Boss也不能不配音乐 当然也可以通过其它方式解决 比如特定条件统
Unity 使用LineRenderer连接2个物体
1 在Hierarchy面板中创建2个GameObject A和B 这就是希望连接的2个物体 2 同理创建1个EmptyObject C 挂上LineRenderer组件 记得给Materials赋值 3 创建1个新的C 脚本LineMan
Unity MRTK使用详解(Htc vive+LeapMotion)
MRTK Unity是一个由Microsoft驱动的开源项目 提供了多种组件和功能 用于加速Unity中的跨平台MR应用程序开发 以下是其一些功能 提供跨平台输入系统和用于空间交互和UI组件 启用快速原型通过在编辑器中的模拟 让你马上看到变
Unity 资源加载卸载过程
什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
UE5学习笔记(一)——界面功能梳理&第一天知识点记录
学习UE5的第一步 是软件安装 默认是安装好的 由于安装没有太多技术含量 所以就没有专门做记录 这里有个注意点 虚幻引擎是整合在Epic games launcher中的 也就是说开发引擎内嵌在游戏平台上 打个比方 就是如果你要下unity
unity网络资源导入
1 找到需要导入的文件 这里导入fbx格式 2 打开unity界面 在Asset目录下创建文件夹FBX 将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下 3 选中需要的fbx预制体并拖至场景中 4 双击定位到当前物体 5 找到需
UE4 解决景深效果闪烁问题
原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
Unity中级客户端开发工程师的进阶之路
上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)
Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
Unity 键盘控制人物移动——之输入方式代码的编写
键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
unity dots jobSystem 记录
Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
unity小球跟随音乐节奏放大缩小和改变颜色
放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
微信游戏如何开发
中懿游游戏软件开发 微信游戏开发通常涉及使用微信小游戏平台进行开发 微信小游戏是一种在微信平台上运行的轻量级游戏 用户可以在微信中直接体验 无需下载安装 以下是在微信平台上开发小游戏的一般步骤 1 注册微信开发者账号 访问 微信开放平台 注
【Unity】运行时创建曲线(贝塞尔的运用)
Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
随机推荐
从Authy中导出账户和secret
文章作者 GoodBoyboy 文章链接 https blog goodboyboy top posts 2689781648 html 版权声明 本博客所有文章除特别声明外 均采用 CC BY NC SA 4 0 许可协议 转载请注明来自
oracle bulk collect forall,Oracle批量绑定forallbulkcollect用法
采用bulk collect 可以将查询结果一次性的加载到collections中 而不是通过CURSOR一条一条地处理 可以在select into fetchinto 采用bulk collect 可以将查询结果一次性的加载到colle
银行项目测试
主要的核心业务 存款业务 吸收客户的存款 为客户发放利息 属于负债业务 贷款业务 发放贷款给客户 收取客户的利息 属于银行的资产业务 中间业务 银行已中间人的身份 为客户办理业务 收取客户的手续费 例如 批量代发工资 批量代收水 电 燃气费
华为OD机试 Python 【单词加密】
题目 给你一句英文 里面有很多单词 单词间用空格隔开 我们要对这句子做点的变化 加密规则 如果单词里有元音 a e i o u 大小写都算 就把元音变成 如果一个单词完全没有元音 那就让这个单词的第一个和最后一个字母交换位置 输入 一句英文
SKB几个复制函数的区别
1 skb clone Skb clone 函数只是复制sk buff结构 并不复制skb的数据缓冲区 Clone后的sk buff结构与原始的sk buff指向同一数据缓冲区 原始的和clone后的skb描述符的cloned值都会被置1
前端基础之滚动显示
marquee滚动标签 注 该标签已经过时 被w3c弃用 使用样例
设计模式(一)- 模板方法模式
模板方法模式 文章目录 模板方法模式 1 模板方法模式 1 介绍 2 应用实例 代码 1 父类抽象模板 统一方法定为final 2 子类去实现不同的方法 3 其他子类实现不同的方法 4 结果展示 1 模板方法模式 在模板模式 Templat
微信小程序 功能页导航 functional-page-navigator 组件
完整微信小程序 Java后端 技术贴目录清单页面 必看 仅在插件中有效 用于跳转到插件功能页 属性 类型 默认值 必填 说明 最低版本 version string release 否 跳转到的小程序版本 线上版本必须设置为 release
linux安装idea并创建快捷方式
一 安装 1 下载 在linux自带的火狐浏览器打开下载更方便 下载 IntelliJ IDEA JetBrains 功能强大 符合人体工程学的 Java IDE 选择Linux 这里以下载社区版为例 我下载的版本是2022 2 3 文件名
了解应用层
应用层 1 概述 2 应用程序组织方式 2 1 C S方式 2 1 P2P方式 3 动态主机配置协议DHCP 3 1 DHCP工作流程 4 域名系统DNS 4 1 域名结构 4 2 域名分类 4 3 域名服务器 4 3 1 分类 4 4 D
Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分)
文章目录 1 Scrapy注意点 2 Scrapy爬取豆瓣读书和评分 代码部分 数据定义items py 爬虫部分spiders book py 数据存储部分pipelines py 启动爬虫执行cmd命令 start py 1 Scrap
QT设计电子时钟类
1 界面效果 2 类的声明 wedgit h class Widget public QWidget Q OBJECT public Widget QWidget parent nullptr 默认构造函数 Widget 默认析构函数 vo
磁共振检查头部能检测出什么_头部核磁共振可以检查什么?
很多人会疑惑为什么要做头部核磁共振 做CT不好吗 这是因为脑CT具有一定的局限性 有时候脑CT是不能诊断出脑部异常情况的 头部核磁共振检査较CT更为敏感 具有多方向切层 多参数成像的特点 能更精确的现实病变位置 范围大小及组织学特性 是发现
【Java】利用SpringBoot搭建WebService服务接口
前言 在项目开发过程中经常会碰到对接医疗软件系统的时候对方要求提供WebService形式的接口 本篇文章记载了个人对接项目过程中整合并搭建的WebService形式的接口 希望对您能够有所帮助 一 在pom xml文件中导入WebServ
期权、期货及其他衍生产品 第一章读书笔记
期权 期货及其他衍生产品 第一章读书笔记 介绍 什么是衍生产品 衍生产品的特点 有哪些交易所场所 交易所市场 一些著名的交易所市场 场外市场 我国的场外市场 远期合约 远期合约可以用来对冲外汇风险 远期合约的收益 远期价格和即期价格 期货合
lua学习笔记—table
1 什么是table table是lua的一种数据结构 可以用来创建数组或映射 lua中的table使用的是关联型数组 关联数组的key值可以是除过nil之外任意类型的值 table的大小是不固定的 可以自己进行扩容 2 如何构造table
iOS autorelease 示例研究
iOS autorelease是Objective C中的一个自动内存管理机制 它通过在对象创建时将其添加到自动释放池中 在池被释放时自动释放对象 从而减少手动内存管理的工作量 本文将介绍如何使用autorelease机制来管理内存 aut
跨部门的高效沟通与协作
在企业管理当中 沟通是一个非常重要的技能 它运用我们管理当中每一个细节 首先要做好沟通和协作 我们需要有一个很好的思维模式 这个就像盖房子一样 它是地基 是一个房子的地基部分 没有一个正确的思维模式 那我们其后的技巧都不会有一个很好的效果
大数据框架总结
hdfs 1 写数据流程 2 HDFS读数据流程1 3 HDFS副本节点选择 4 HDFS nn 2nn 镜像文件以及编辑日志的工作机制 注意此类机制都是先更新编辑日志 再更新内存文件block元数据 checkpoint触发默认条件是一小
谈谈虚幻引擎4的Global Illumination
本届GDC 2013 Epic再次展示了UE4的最新demo 效果惊艳毋庸置疑 不过今天我们只谈UE4的光照利器 SVOGI SVOGI全称Sparse Voxel Octree Global Illumination 由Epic的Andr
热门标签
git pull
idea常见的问题
深度学习论文研读
百度天气
Scanner类
26个
hexview
QML十六进制数据
蓝桥杯真题题解
算法分析与设计学习
图文并茂
非空判断
stm32开发小项目
风险平价组合
常见计算机文件类型
编译器生成
盲水印
衍生品
期权量化
C语言位操作
显示列表
QSS详解