1. 程式人生 > >基於物理的渲染WardBRDF模型

基於物理的渲染WardBRDF模型

    Notes on the Ward BRDF

介紹

WardBRDF1992年作為經驗模型被引入用來測量BRDF資料,它有幾個優點超過了以往的模型 並且廣泛應用於計算機圖形學,它只使用了幾個簡單可控的引數,可以模擬各項異性的的表面,表現效果相當好。

本文的目的是澄清和糾正一些WardBRDF的實現細節,第2部分我會討論BRDG的有效性和蒙特卡羅取樣對於渲染演算法的必要性。WardBRDF提供了有效的取樣方案,不過它並沒有提供相關的概率密度函式,為了數學的準確性,需要提供正確的加權生成樣本。第3章我們會討論如何匯出這樣的概率密度函式,並在方程中給出具體結果。

BRDF的衣櫃強大的但是應用較少的功能是將其最大值繫結在一系列方向上的能力。第4

章會討論如何高效的定義某方向上的各項同性的WardBrdf空間包圍體。

1.1符號

我們在三維空間討論中,常用粗體表示歸一化的三維向量(比如 V),在實際使用中向量可由三維座標表示,也可以在球形極座標系下用θ and φ兩個角度來表示,我們可以把三維向量表示法和角度表示法用下面的公式相互轉換:

兩個方向的標量的點積等於他們之間角度的餘弦值(例如,v·z =cosθv),使用3D向量時,可以通過對其各項求和來計算點積(例如,u·v = uxvx + uyvy + uzvz)。

1:球形極座標示例 方向v可以用兩個角度θv和φv來充分描述。 θv是角度在vz軸之間。 φvx軸和v之間的角度投影到x-y

平面上。

BRDF(雙向反射分佈函式)描述光是如何在表面上散射,表面上的一點有入射和出射兩個方向,常用i,o來表示。圖2,在z軸與區域性表面法線相同的表面上構造座標系通常是很方便的,其xy軸位於曲面的切線平面上。各項異性中,xy方向必須與各項異性方向一致,他們可以任意選擇各項同性。

Ward BRDF使用的是定義在入射和出射方向中間的半方向H。它可以通過增加IO為三維向量並重整計算:半形是出於microfacet BRDFs和產生更現實的亮點比替代品如Phong

2BRDF計算中使用的座標系。z軸等於區域性表面法線nxy軸位於曲面的切線平面上。雙向反射分佈函式是兩個方向的函式,

入射方向,

i,和向外方向O(例如,眼睛和光的方向)。半形向量H被定義為介於io之間,在Ward BRDF中起著重要作用。

2 WardBRDF

WardBRDF定義為兩個分量之和,第一個是漫反射項ρD /π,漫反射很容易理解,所以我們不作解釋,第二部分是由高斯各項異性光澤葉用三個引數定義,

用ρs, αx, and αy表示:

其中ρs控制葉的大小,αx, and αy控制在各項異性的兩個主方向的波瓣寬度,

如果αx = α則改葉是各項同性的、

在定義了雙向反射分佈函式後,Ward給出了一個近似值,這是為了更精簡計算[Ward 1992, Equation5b].沒有理由不使用這個近似值,以下向量方程更精準和高效:

由於公式中h在分子和分母的次方一樣,可以用一種半向量化方程來表示,顯然方程三和四是等價的,通過將三維向量h去表示。h如下:

2.1取樣

在蒙特卡洛繪製演算法中,一個好的雙向反射分佈函式取樣技術是必不可少的。取樣時,我們將入射向量i作為給定或者固定的,並希望在通過BRDF的計算分佈中產生輸出向量o

Ward為他的BRDF提供了一個抽樣,但無意中在方程中 省略了反正切向量,在0 <uv1的範圍內給出了兩個均勻的隨機變數uv,正確的取樣方程是:

必須計算保證φH2πv角在同一象限,這些取樣方程計算uv的半方向h,然後用Hi產生方向O

如果新產生的分佈向量o完全匹配BRDF,那麼所有的取樣都可以得到相同的權重,然而對於大部分情況這是很難出現的,為了計算正確的取樣權重,我們需要知道生成的方向o的實際概率密度函式POWard的概率密度函式為:

這個概率,通過設計,相當接近沃德BRDF(見方程3),但不完全匹配它。下一節將介紹如何找到抽樣概率函式以及如何匯出方程。

正確的權重函式wo)應該應用於蒙特卡洛演算法中的樣本(例如路徑跟蹤):

3:這裡顯示的是一個擴散盒與Ward BRDF球(ρS = 0.75,αx =αy = 0.15)。左半球影象是採用均勻半球取樣的參考解。中間的圖片用的是的均勻取樣(wO=ρS),而右影象使用正確的樣本權重(公式10

以前的經驗通常認為WardBRDF取樣可以同樣使用相同的權重,但是如圖3所示對於寬葉和特殊角度問題容易導致較大誤差,所以我們需要從公式10 中得到正確的取樣權重。

某些同學可能認為在美學上中間的圖會效果更佳,但是對於WardBRDF來說左側和右側的圖在數學上才是正確的。WardBrdf內部定義了漸變放暗的效果,[Duer 2005]已經提出修改它的方程來減少這種效應,然而這超出了本文的範圍。

推導抽樣概率

在這一部分內容中,我們將回顧如何給出一個給定抽樣變換的概率密度函式,並展示如何用這個理論來尋找WardBRDF各項同性情況下的概率函式。我們重點關注二維概率密度,其他維度也是類似的原理。

3.1 理論

我們定義一個二維空間的隨機概率密度[s1,s2]  S ,給定一個空間T,從S空間到T空間的轉換後定義為[t1,t2]  T 。我們要計算從ST的轉換矩陣Pt

為了方便理解,我們假定該轉換在區域上是可逆的,對隨機變數在區域B的概率Pb,是通過整合其概率密度分佈區域相對其關聯測量給出的dt1 dt2

概率密度必須有相關的度量方法,儘管關聯通常都是隱式的,給定一個區域 T,讓AB SB中的點屬於集合S,這兩個式子應該相等 (i.e. P(AB) =P(B)) ,因為他們都是相同事件,因此有:

將變數變換原理應用於第一微積分中,得到:

其中Jacobian行列式的絕對值由偏導數定義:

由於這些方程適用於任何集合B,我們可以用它們來求解概率密度為:

3.2 PhPo的應用

我們想專門通過一般理論來處理半形方向h來尋找取樣方法的概率密度函式的具體情況。這種取樣方法採用兩個均勻的隨機數uv,將他們轉化為半形向量h,然後利用h產生輸出向量o。首先討論h的概率密度Ph,然後將其與輸出向量O的概率密度Po聯絡起來。

我們用公式15uvs1 s2 θh代替,φh代替為t1  t2,但有一個小小的困難。我們正在改變一個非歐裡幾何空間的方向和使用範圍,並使用Ph值作為立體角,我們調整了這個包括立體角測量的1/sinθh額外的因素:我們使用的實際情況是,PUVUV= 1由於uv是均勻地分佈在單位空間內。

4.座標系中向量iz軸,表面法線N位於x-z平面,從圖1來看我們可以使用兩個立體角方向:θ  and φ 。在ho的關係可用:表示

我們還需要用Ph來計算PoHO之間的關係可以用圖4所示的特殊座標框來表示,該圖中,入射方向i用作z軸,為了清楚的分辨她們,我們將使用這些特殊的座標和一個星標標出所有的球面角,ho在這些座標系中的關係是:,我們可以使用公式15,作簡單的修改來得到立體角:

h向量的變換可在[Torrance and Sparrow 1967] and [Ashikhmin and Shirley 2000].中檢視

3.3各項同性的例子

現在為了演示如何將這些方程應用於一個特定的情形,我們將得到更簡單的各項同性情況下的取樣概率密度,當ax=ay WardBRDF是各項同性的,我們可以簡單的寫成a,在這種情況下BRDF可以簡化為:

各項同性取樣方程簡化為:

我們可以倒推各項同性方程:

5 BRDF的包圍盒最大值,入射和法線方向固定,反射點被假定為原點,然後我們計算反射方程的上限,在一組方向上定義包圍盒B允許

然後我們可以用公式16,就θH和φH來計算uv的偏導數:

上面的公式沒有絕對值操作是因為 它總是為正數,角度在0-90範圍內。最後利用公式17我們可以得到各項同性情況中取樣輸出方向O的概率密度:

對於各項異性,方程9的推導類似。大家可以試試看。

4. BRDF的包圍盒

一個有效的BRDF操作是把它的最大值包圍在一組方向上。雖然對於取樣這是一個不太常見的操作。但他說一個操作所需要的強大的渲染演算法,在本節中,我們將介紹如何計算各項同性WardBRDF的一個合理的方法。擴充套件內容留到以後講。

當包圍BRDF時,入射方向的i和表面的點是固定的,但是方向是可以改變的,如圖5所示,我們可以使向量B在指定方向輸出向量集合。為了簡單起見,讓我們假設表面反射點在原點,讓v是一個三維向量,箭頭表示它可以具有任意長度,而不是標準化向量,我們可以計算o的上限函式。

一個標準化的解決方案是使用區間運算。通過使用區間等價替換每個運算子 並將其包圍空間表示為區間,計算會變簡單。但不幸的是,這些區間界限往往相當分散,尤其是當初間隔較大的。所以我們將繼續尋找一個方向或者一組引數,使包圍圈附件的點這是一個嚴格的上限區間。

6,使用公式27計算包圍盒上限值cosθ的例子

4.1餘弦包圍盒

現在我們開始計算餘弦包圍盒的上限值,如果我們用一個座標系 表面發現Nz 我們可以:

Cosθ的導數vz總是為正數,因此我們可以取代vz用包圍盒的最大值:

現在分子是固定的,我們可以選擇vxvu最小化或者適當最大化分母。、

相關推薦

基於物理渲染WardBRDF模型

    Notes on the Ward BRDF1 介紹WardBRDF在1992年作為經驗模型被引入用來測量BRDF資料,它有幾個優點超過了以往的模型 並且廣泛應用於計算機圖形學,它只使用了幾個簡單可控的引數,可以模擬各項異性的的表面,表現效果相當好。本文的目的是澄清和糾正一些WardBRDF的實現細節

基於物理渲染的入門資料

https://tieba.baidu.com/p/3922888163?red_tag=1467409146https://tieba.baidu.com/p/3922948521?red_tag=1468761448https://tieba.baidu.com/p/39

PBR基於物理渲染

什麼是基於物理渲染(PBR)? 傳統3D材質製作方法是基於藝術家的手藝的,由美術根據個人評估繪製Diffuse貼圖調整顏色後進行渲染。好處是畫成什麼顏色就是什麼顏色,製作流程簡單修改直觀,缺點則是質量不穩定,難以標準化和做進一步的細緻分工,導致遊戲製作規模受到人力限制;

基於物理渲染—HDR Tone Mapping

TE 包含 反射 HR AC ogr 轉換成 repr BE 在遊戲引擎渲染管線中,我們對於R、G、B通道顏色信息的數值範圍通常設置在[0,1]之間(或者是[0,255])。其中,0代表沒有光亮度,1代表顯示器能夠顯示的最大光亮度。這個表示方式雖然直接易懂,但它並不能反映真

基於物理渲染技術(PBR)系列一

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術詳解》電子工業出版社等。PBR,或者用更通俗一些的稱呼是指基於物理的渲染(Phys

基於物理渲染技術(PBR)系列二

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術詳解》電子工業出版社等。繼續上篇部落格中基於物理的渲染技術(PBR)系列一的講解,

基於物理渲染技術(PBR)系列三

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術詳解》電子工業出版社等。BRDF,或者說雙向反射分佈函式,它接受入射(光)方向ωi

基於物理渲染技術(PBR)系列四

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術詳解》電子工業出版社等。接著上一篇部落格講解的內容基於物理的渲染技術(PBR)系列

基於Babylonjs自制WebGL3D模型編輯器

設計 ctrl 按鍵 階段 creat 地圖 也會 長度 查看 一、總述   當代WebGL編程所使用的3D模型大多是從3DsMax模型或Blender模型轉化而來,這種工作模式比較適合3D設計師和3D程序員分工配合的場景。但對於單兵作戰的WebGL愛好者來講這種模式過於沈

PowerDesigner反向生成物理數據模型

form ef7 pow dba adb 模型 pic ext 自己的 from:http://blog.csdn.net/sunqing0316/article/details/17615249 PowerDesigner 導入SQL腳本生成物理模型 聽語音

基於Linux進程模型分析

HERE 出了 stdio.h 展示 堆棧 ogr .com 小時 將在   1.進程與線程 1.0 進程: 進程是正在運行的程序的實例(an instance of a computer program that is being executed)。 進程是

第一次作業:基於Linux進程模型分析

inf 信息 輕量級 概念 指定 創建 mil ati HA 本篇文章主要內容: 什麽是進程 操作系統是怎麽組織進程的 進程狀態如何轉換(給出進程狀態轉換圖) 進程是如何調度的 談談自己對該操作系統進程模型的看法 一:什麽是進程 進程(Process)是計算

PowerDesigner 物理數據模型(PDM) 說明

不同的 發布 pack pdm 畫出 dir 一般來說 procedure 和數 ref: https://blog.csdn.net/tianlesoftware/article/details/6874067 一. PDM 介紹 物理

基於流的生成模型

英偉達率先發表了相似的工作,讓千里之外的幾位研究者一臉懵逼,於是決定公佈程式碼以示沒有剽竊。 來自韓國首爾大學的研究者近期釋出了一篇利用基於流的生成模型進行實時的語音合成的研究 FloWaveNet。但奇怪的是,他們的論文中並沒有語音合成中典型的人類評估 MOS(平均意見分數)指標

word2vec原理(三) 基於Negative Sampling的模型

轉自http://www.cnblogs.com/pinard/p/7249903.html   在上一篇中我們講到了基於Hierarchical Softmax的word2vec模型,本文我們我們再來看看另一種求解word2vec模型的方法:Negative Sampling。

word2vec原理(二) 基於Hierarchical Softmax的模型

轉自http://www.cnblogs.com/pinard/p/7243513.html  在word2vec原理(一) CBOW與Skip-Gram模型基礎中,我們講到了使用神經網路的方法來得到詞向量語言模型的原理和一些問題,現在我們開始關注word2vec的語言模型如何改進傳統的神經網路

基於資料庫Rbac資料模型控制權限

@Component("rbacService") public class RbacServiceImpl implements RbacService { private AntPathMatcher antPathMatcher = new AntPathMatcher();

基於select非阻塞模型的服務端程式示例(Winsock2實現)

/* 總結: ①無論阻塞還是非阻塞,select都不會立即返回,select就是用於非阻塞模型中的。 ②將SOCKET置於非阻塞模式下時,處理連線或處理收發資料的Socket API都會立即返回。 ③select會監視fd_set中的所有套接字,一旦有套接字發生IO事件(包括客戶端的連

基於Attention的機器翻譯模型,論文筆記

論文題目:Neural Machine Translation by Jointly Learning to Align and Translate 論文地址:http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2

物理機記憶體模型與java記憶體模型

多執行緒快取一致性問題 程式在執行過程中,會將運算需要的資料從主存複製一份到CPU的快取記憶體當中,那麼CPU進行計算時就可以直接從它的快取記憶體讀取資料和向其中寫入資料,當運算結束之後,再將快取記憶體中的資料重新整理到主存當中。 在單執行緒的情況下,這沒有任何問題,但在多核CPU中(多執行緒),每條執行