1. 程式人生 > 其它 >【Heskey帶你玩渲染】SIGGRAPH2021-複雜光源的表示與渲染

【Heskey帶你玩渲染】SIGGRAPH2021-複雜光源的表示與渲染

[SIG2021] Neural Complex Luminaires: Representation and Rendering

1.渲染難

為什麼要研究複雜光源的渲染?由於複雜光源表面會包裹著很複雜的mesh,所以複雜光源的渲染很難收斂。光線在傳輸的過程中很容易就被中斷,即使能夠找到一條路徑,路徑的深度也會很高,需要的計算量會上升。所以,渲染很難。

2.光源難以描述

光源周圍的網格體一般情況下都會很複雜,要表示一個精細的光源需要很大的儲存空間,光線與mesh的求交計算很麻煩。論文中提出的方法就是使用一張預計算的light field去描述複雜的光源,把光源附近的複雜光照的傳輸過程直接記錄在光源表面的包圍體上,這個包圍體的形狀可定,但它必須緊緊包裹住光源。在這張light field中,記錄了包圍體在各個點,任意方向接受到的radiance。

但即使前人們有了這個思路,light field的問題也會帶來很多困擾,就比如light field作為一張volume texture,它佔用的記憶體很大,如果要提高渲染的速度,減少消耗,那麼後果就是:這張light field的解析度會很低,假設light field的解析度是256*256*256,那麼需要的記憶體高達16GB,即使佔用了很高的記憶體,複雜光源的內部的精細幾何結構也難以精確地恢復出來。

3.解決方法

在2020年的某一天,Nerf出現了,基本思想就是使用ray marching + MLP網路壓縮來表示radiance field,這種方法能夠重現場景中的細節,並且儲存消耗很低(只需要儲存神經網路)。但是,Nerf更多的是關注representation,不能直接應用到標準的渲染流程中。

為了整合到標準的渲染流程,就需要對這個複雜光源進行重要性取樣,重要性取樣的過程也用一個網路來表示,用神經網路來近似每一個著色點能夠看到的一個低解析度16*16的light field,用這張light field指導重要性取樣。

我們不僅僅需要知道看向複雜光源時,包圍幾何體上的light field,也要知道,視線是怎麼穿過包圍幾何體(光可能會穿過包裹住複雜光源的包圍體),看到場景中其它元素的(可以理解為複雜光源的透明度)。用包圍體包裹住複雜光源,用light field來近似複雜光源內部的光照傳輸,並使用神經網路來壓縮

evaluation network如下: