《Unity預計算即時GI》笔记:一、基本概念与一些设置
说明
- 这篇文章是对《Unity預計算即時GI》这个系列文章的笔记。
基本概念
在Unity裡,可以用兩種不同的技術來計算全域光照GI或光源反射,就是烘焙全域光照(Baked GI)和預計算即時全域光照(Precomputed Realtime GI)。
當啟用PRGI時,一個光照預計算就是用來計算靜態幾何物件周圍光的反射,並存成資料給Runtime執行使用的一個過程。這個過程減少了原本必須在Runtime執行時的光照計算數量,讓專案得以在保持FPS的穩定之下還能計算光的反射。
与Baked GI有什么不同
先看下5.X中Baked GI的定义
當啟用烘焙GI(Baked GI)時,預計算的過程會計算並產生傳統的光照貼圖(Lightmap),這些貼圖會以資源(Assets)的形式存在專案中,而且無法再Runtime執行時更改。PRGI並非用一樣的方法產生光照貼圖,相反的,PRGI算好的結果會被存成一個光照資料檔(Lighting Data Asset),這個資料檔存的資料能讓專案在Runtime執行時能即時產生一組低解析度的光照圖。
从本质上看就是PRGI还是实时计算的,只不过光的反射路径已经提前计算了,因此在实际的光照计算时会减少计算量,进而提升效率。而Baked GI仍旧是传统的light map的机制。
PRGI的相关设置
Realtime Resolution的设置
- 设置的依据
Realtime Resolution的值可以由你的遊戲規模來制定,例如,是否你的場景是一個小小的,卻有豐富光照變化的室內環境? 在這種情況下,高一點的值比如2-3,可以捕捉更詳細或"高頻"的光照。
如果你的場景是一個世界規模較大的大型戶外環境。可能有著幾千或幾百個物件表面幾乎不會去修改光照反射顏色。在這樣的情況下,把適合計算複雜室內場景的設定用在有大量相同特徵的室外環境是很浪費的。我們會浪費寶貴的CPU時間和記憶體儲存/更新那些對整體外觀貢獻不大的光照貼圖。為了教學目的,我們會提高PRGI期間必須考慮貼圖像素的量,這會對預計算的時間造成很大的影響。
在場景裡有大物件的室外環境情況下,合適的設定可以設在0.5-1之間,針對地形可以設定0.1-0.5之間。
場景與Realtime Resolution值對照表
室內:2-3 像素/單位
戶外:0.5-1 像素/單位
地形:0.1-0.5 像素/單位
- 与Baked GI在数值上的差异
Unity PRGI所需要的Realtime Resolution值比傳統光照貼圖密度要小好幾個等級,這是因為我們只從這些光照圖裡擷取間接光源資料,這些資料通常解析度都很低。所以使用PRGI時,清晰的陰影通常都是即時運算而非從高解析度的光照圖來提供。
在這裡使用傳統光照慣用的值,例如:30 texels,可能會導致預計算失敗或無法計算。
- 关于Realtime Resolution的使用
當設定場景即時解析度時,Unity會指定給場景內的靜態物件。帶有Mesh Renderer且標有靜態光照標籤(Lightmap Static)的物件,會引用這個值一直到它被外力修改。
除了幫場景加上解析度設定外,我們還能針對每個物件調整光照貼圖的解析度,在需要高解析度來提供更高真實感的情況下,我們可以選擇性的提高這個值。通常是將場上最多的物件解析度設為預設值,然後手動調高需要更多照明細節物件的值。
- 最后放一个不同数值对光照图的影响,可以看出数值越小单个光照图越小,数值 大时导致光照贴图单位面积中像素越多,从而使得对应的光照图变大。(个人理解)

runtime resolution 0.5

runtime resolution 1

runtime resolution 2
物件的设置
- 需要设置为static
Light面板设置
- auto与否个人认为不重要。只不过在auto模式下如果已经在某些参数的情况下生成过一次后续改动参数再改回来不需要再次生成。这个东西是否在非auto模式下奏效没试过。
光照探测
what & why
我們已經理解場景裡的圖表數量對預計算時間的影響,這樣我們就能從預計算流程裡想辦法降低一些物件計算來讓光照效能大躍進,同時也會減少圖表產生的數量.取而代之的,我們可以對這些物件做光照探測(Probe Lighting)處理,它是一種讓物件接收場景間接照明的好方法,雖然被光照探針指定的物件無法計算場景的光照反射,但通常影響不大。這種方法非常適合用在場景裡的小物件,因為小物件對光照反射計算幾乎沒什麼影響。
光照探測技術是一個能在遊戲裡讓即時光照更逼真的快速演算法,通常會用在處理遊戲世界的人物角色或是動態物件的光照,它的優點在於Runtime處理效能佳而且還能預先計算好。
弊端
使用光照探測是有些限制的,其中一個限制是在不提高探針數量的前提下很難在球型範圍上表現出高頻或斑駁的光照,但精度和消耗成本成正比,代表在效能的前提下,我們必須限制較低階的球諧函數。
實際上一個3D座標只能用一個球體來紀錄照明資料,所以光照探測不適合用在有大量光照投射在大物件的狀況。另外一個限制是當用球諧函數在一個球體上編碼時,通常不擅於處理用有廣大平面的物件或帶有很深的凹洞的物件.如果你正計畫要把光照探測技術用在大型物件上,Unity有提供另一個光照探測代理體(Light Probe Proxy Volumes,LPPV)的技術可以參考手冊說明。
适用于
儘管有這些限制,光照探測還是很適合和符合條件的小物件一起搭配使用,產生成本低廉效果卓越的結果。
《Unity預計算即時GI》笔记:一、基本概念与一些设置的更多相关文章
- 《Unity預計算即時GI》笔记:二、光照图
说明 这篇文章是对<Unity預計算即時GI>这个系列文章的笔记. 光照图 什么是光照图 光照图在第三章中有如下的定义,读起来很是费解. 一個光照圖(Chart)是表示一個光照貼圖的區域, ...
- 《Unity預計算即時GI》笔记:三、Clusters和总结
Clusters 叢集,透過修改叢集(Clusters)也是一個降低Unity預計算流程所需要執行的工作數量的好方法.降低叢集數量也能提高執行時的效能. 當採用PRGI來計算場景光照時,Unity會簡 ...
- ADC 計算時,階數的選擇
reference : ADC 階數的計算
- 新版PHP 7效能實測:Drupal 7能快70%,碎形計算大勝Ruby和Python
PHP 7才剛在12月3日正式釋出,網頁開發框架Zend公司立刻發表了一份PHP新舊版效能大車拼報告,除了PHP 7和PHP 5.6之外,也把HHVM 3.7版納入一起比較. Zend公司選擇了幾套知 ...
- vue計算屬性
計算屬性:computed 和method的差別:computed是基於它的依賴緩存,只有它的相關依賴發生改變時才會重新獲取值. method是在重新渲染時,函數總會重新調用. comuputed:默 ...
- java計算年齡的工具類
整理一篇Java計算年齡的工具類,方便實用 public static int getAgeByBirth(String birthday) throws ParseException { // 格式 ...
- 透過 bc 計算 pi
echo "scale=${num}; 4*a(1)" | bc -lq例如: echo "scale=5000; 4*a(1)" | bc -lq 4*a(1 ...
- Delphi APP 開發入門(三)簡易計算機
Delphi APP 開發入門(三)簡易計算機 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:68 ...
- (C/C++) CRC8計算實現
CRC計算通常會有分成 CRC8. CRC16. CRC12. CRC32. CRC8 = X^8 + X^2 + X + 1 0x07(0x107) CRC8 = X^8 + X^5 + X^ ...
随机推荐
- CodeForces 492C Vanya and Exams (贪心)
C. Vanya and Exams time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- iOS开发中,修改ASIHTTPRequest源码,禁止在POST时URL编码
通过ASIHTTPRequest库进行POST时,会对POST的文本内容进行encodeURL,而且ASIHTTPRequest自身并没有配置项可以关闭这个转换. 本文提供一个方法关闭encodeUR ...
- HTMLParser使用详解(2)- Node内容
HTMLParser使用详解(2)- Node内容 2010-03-18 13:41 HTMLParser将解析过的信息留存为一个树的结构.Node是信息留存的数据类型基础.请看Node的界说:pu ...
- BOX (UVA-1587) 比较代码书写上的差距
对比一下代码的书写差距: 我的代码: #include<iostream> using namespace std; ]; ]; ]; //访问标记 bool judge(int i, i ...
- Entity Framework 分页处理
在SQL中进行分页,网上已经有很多例子了,在这里我使用Linq to SQL让C#来生成分页代码,首先创建分页的扩展方法: public static class Extensions { /// & ...
- eros --- Windows Android真机调试
1.下载并安装JDK 2.下载并安装Android Studio 上面两项不管用weex还是eros都是前置条件,度娘有大量教程. 开始eros 手脚架安装: $ npm i -g eros-cli ...
- linux系统elementray os的环境搭建
因为我在使用过程中为了改变终端的外表,结果把/ect/psswd,以及/ect/profile中的文件配置修改之后,我把gnome-terminal的python脚本打包放在/bin/目录下,修改了/ ...
- 解读人:刘佳维,Spectral Clustering Improves Label-Free Quantification of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的无标记定量)
发表时间:(2019年4月) IF:3.95 单位: 维也纳医科大学: 欧洲生物信息研究所(EMBL-EBI): 分子病理学研究所: 奥地利科学院分子生物技术研究所: Gregor Mendel分子植 ...
- cmd与bat脚本的使用
零. bat cmd 命令大全 bat命令大全学习 一..定位到当前路径 1.定位到当前路径 2.方法二 3.win10下面 通解: %windir%\system32\cmd.exe 二 .使用命令 ...
- 洛谷 P1547 Out of Hay (最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1547 思路: 嗯...既然题中已经说了是最小生成树,那么是需要在最小生成树的模板上稍作修改即可.要 ...