Unity Graphics(一):选择一个光照系统
原文链接
Choosing a Lighting Technique
https://unity3d.com/learn/tutorials/topics/graphics/choosing-lighting-technique?playlist=17102
Realtime Lighting(实时光照)
默认情况下,Unity中的光源都是实时的(realtime),实时光源向场景中投射直接光照(direct light)并且每帧更新。
光线从实时光源发出,与物体相交后不会反弹。为了创建一个更真实的场景,我们需要使用全局光照(Global Illumination)技术。
Baked GI Lighting(烘焙全局光照)
烘焙lightmap,光源在静态物体上的光照效果预先计算好并且保存到光照贴图中。
光照贴图(lightmaps)同时包含直接光照(direct light)和间接光照(indirect light)效果。
在游戏运行中,lightmaps不可更改。
Precomputed Realtime GI Lighting(预计算实时全局光照)
传统的方法,在场景中改变光照条件时静态lightmaps不会有反应。Precomputed Realtime GI技术支持交互式更改场景中的光照条件。
使用此技术,可以创建丰富的全局光照环境,支持实时更改光照条件。举个例子:Time of day Lighting system,光源的位置和颜色随时间变化,传统的Baked GI无法实现此功能。
将耗时的光照计算过程从游戏过程中剥离,预先计算好。这称之为离线计算过程(offline process)
在创建真实感场景时,我们非常希望将间接光照(indirect light)保存到lightmap当中。更好的光照细节(比如效果很棒的阴影)需要更多的性能开销。假设我们不需要如此复杂的光照细节表现,就可以大大降低GI分辨率。
减少细节表现,降低GI分辨率,同时也减少游戏运行中的运算量。当我们实时修改光源位置、颜色、强度,甚至物体表面属性时,可以更快速地更新GI。
为了加速Precomputing,Unity不直接处理texels,而是先将场景中的静态物体转换为低分辨率的近似模型,此过程叫:集群(clusters)
传统方法在计算GI时,会追踪光线在场景中弹来弹去。这是一个非常耗时的计算过程,无法进行实时运算。取而代之,Unity在预计算中有一个阶段称之为:Light Transport,Unity使用光线追踪算法计算物体表面集群之间的关系。通过将三维场景世界简化为一个关系网络,在性能关键的游戏运行时我们不再需要光线追踪计算。
我们把三维世界转化为一个简化的数学模型,同时在游戏过程中可以传入不同的光照等参数。这意味着在游戏过程中,我们可以修改光源位置、颜色、强度或者物体表面属性,并且可以快速看到GI效果。
Unity Graphics(一):选择一个光照系统的更多相关文章
- Unity 5 中的全局光照技术详解
貌似是某位好人翻译的 https://unity3d.com/cn/learn/tutorials/topics/graphics/unity-5-lighting-and-rendering#rd? ...
- Unity 5 中的全局光照技术详解(建议收藏)
本文整理自Unity全球官方网站,原文:UNITY 5 - LIGHTING AND RENDERING (文章较长,请耐心阅读)简介全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法, ...
- Unity Lighting(一)光照练习
Unity 2018.1.2f1 原文链接:https://www.youtube.com/watch?v=VnG2gOKV9dw Unity Lighting练习最终效果 眼睛.光源与物体 光学基础 ...
- 超强教程:如何搭建一个 iOS 系统的视频直播 App?
现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播.作为开发者来说,搭建一个稳定性强.延迟率低.可用性强的直播平台,需要考虑到部署视频源.搭建聊天室.优 ...
- 如何设计一个RPC系统
版权声明:本文由韩伟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/162 来源:腾云阁 https://www.qclou ...
- 选择一个利于SEO的空间
大家好.今天蜗牛将给大家分享怎么选择一个利于SEO的站点空间. 一.什么是站点空间? 站点空间,是用来存你的站点的HTML,.图片.文件等的一个远程硬盘空间(就像你的电脑里面的空间一回事儿).依据不同 ...
- 如何设计一个 RPC 系统
本文由云+社区发表 RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高.但是RPC本身的构成却比较复杂,由于受到编程语言.网络模型 ...
- Confluence 6 选择一个外部数据库
注意: 选择一个合适的数据库通常需要花费很多时间.同时 Confluence 自带的 XML 数据备份和恢复功能通常也不适合合并和备份有大量数据的数据库.如果你想在系统运行后进行数据合并,你通常需要使 ...
- Unity Jobsystem 详解实体组件系统ECS
原文摘选自Unity Jobsystem 详解实体组件系统ECS 简介 随着ECS的加入,Unity基本上改变了软件开发方面的大部分方法.ECS的加入预示着OOP方法的结束.随着实体组件系统ECS的到 ...
随机推荐
- canvas 添加线和删除线 及获取相关位置信息源码
其他相关链接: https://github.com/lusase/lineDrawer.git https://www.jb51.net/css/359062.html https://www.jb ...
- Windows下网页连接VNC操作手册
所需软件:tigervnc noVnc(https://github.com/novnc/noVNC) websockify(https://github.com/novnc/websockify) ...
- react react-native 日期插件 m-date-picker / rmc-date-picker的使用
m-date-picker 基于 React,提供了 iOS 风格的日期选择方式,与原生 Datepicker 非常相似. 主页: https://github.com/react-component ...
- 总结React写参数的几种方式
1.在render方法内 class Text extends Component{ render(){ const data=[1,2,3]; return( { data.map((item,in ...
- java.lang.NullPointerException错误的解决方案
java.lang.NullPointerException空指针异常是像我一样新手很容易出现的问题,这个问题一般情况都是不细心的时候出现的,开始正文如下: 1.业务层面的错误: a.没有写非空验证: ...
- java求最大值以及定义方法调用
class ArrayDome { public static void main(String[] args) { int[] arr = {-12,-51,-12,-11}; int max = ...
- RxJS核心概念之Subjet在angular2+上的应用
Subject,在RxJS中是一类特殊的Observable(可观察对象),它可像多个Observer(观察者)推送值.每一个Subject也可以作为Observer(观察者) Subject同样也是 ...
- Golang微服务:Micro限流、熔断
Wrapper Wrapper提供了一种包装机制,使得在执行某方法前先执行Wrapper,优点Filter的意思:因此可以在客户端和服务器做很多功能:熔断限流.Filter.Auth等. client ...
- 微信h5,背景音乐自动播放
移动端默认是禁止背景音乐自动播放的,很多需求都需要在页面加载完成的情况下同时出现背景音乐. 既然是微信h5,那么wx.config肯定不陌生,废话不多,直接上代码: html: <audio s ...
- DEBUG经历
在两年有余的学习生活中,我不仅在课堂上学到了很多东西,我也在一次次的错误中得到了宝贵的经验和教训.Bug和debug,构成了我生活中不可或缺的一部分. 我在编程中犯过的错误很多,无法一一阐述,再次说一 ...