1. 程式人生 > >基於物理的渲染技術(PBR)系列三

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

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術詳解》電子工業出版社等。

BRDF,或者說雙向反射分佈函式,它接受入射(光)方向,出射(觀察)方向,平面法線以及一個用來表示微平面粗糙程度的引數作為函式的輸入引數。BRDF可以近似的求出每束光線對一個給定了材質屬性的平面上最終反射出來的光線所作出的貢獻程度。舉例來說,如果一個平面擁有完全光滑的表面(比如鏡面),那麼對於所有的入射光線(除了一束以外)而言BRDF函式都會返回0.0 ,只有一束與出射光線

擁有相同(被反射)角度的光線會得到1.0這個返回值。

BRDF基於我們之前所探討過的微平面理論來近似的求得材質的反射與折射屬性。對於一個BRDF,為了實現物理學上的可信度,它必須遵守能量守恆定律,也就是說反射光線的總和永遠不能超過入射光線的總量。嚴格上來說,同樣採用作為輸入引數的 Blinn-Phong光照模型也被認為是一個BRDF。然而由於Blinn-Phong模型並沒有遵循能量守恆定律,因此它不被認為是基於物理的渲染。現在已經有很好幾種BRDF都能近似的得出物體表面對於光的反應,但是幾乎所有實時渲染管線使用的都是一種被稱為Cook-Torrance BRDF模型。

Cook-Torrance BRDF兼有漫反射和鏡面反射兩個部分:

fr=kdflambert+ksfcooktorrance

這裡的是早先提到過的入射光線中被折射部分的能量所佔的比率,而被反射部分的比率。BRDF的左側表示的是漫反射部分,這裡用來表示。它被稱為Lambertian漫反射,這和我們之前在漫反射著色中使用的常數因子類似,用如下的公式來表示:

flambert=cπ

表示表面顏色(回想一下漫反射表面紋理)。除以是為了對漫反射光進行標準化,因為前面含有BRDF的積分方程是受影響的

目前存在著許多不同型別的模型來實現BRDF的漫反射部分,大多看上去都相當真實,但是相應的運算開銷也非常的昂貴。不過按照Epic公司給出的結論,Lambertian漫反射模型已經足夠應付大多數實時渲染的用途了。

BRDF的鏡面反射部分要稍微更高階一些,它的形式如下所示:

f

相關推薦

基於物理渲染技術PBR系列

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

基於物理渲染技術PBR系列

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

基於物理渲染技術PBR系列

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

基於物理渲染技術PBR系列

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

LINUX系統管理員技術Admin-------第

yum倉庫的搭建 別名的設置 使用wget下載 修改主機名#vim ?/root/.bashrc軟件包管理1.讓光盤文件的內容出現在系統[root@A ~]# mkdir ?/rhel7[root@A ~]# mount ?/dev/cdrom ? /rhel7mount: /dev/sr0 寫保

LINUX系統工程師技術Engineer-------第

selinux策略保護 安全web服務 部署動態網站 兩臺虛擬機,均要檢測1.IP地址2.是否可以解析,server0.example.com3.Yum是否可用4.防火墻默認區域修改為trusted##################################################

Spring第一課:基於XML裝配bean種例項化方式:預設構造、靜態工廠、例項工廠

Spring中基於XML中的裝配bean有三種方式: 1.預設構造 2.靜態工廠 3.例項工廠 1.預設構造     在我們在Spring的xml檔案中直接通過:     <bean id="名字" class="全限定類名" ></bea

基於 DirectX11 的 MMDViewer 03-渲染管線1

present esc ren 調用 param directx11 回調函數 hicon 文章   準備工作:     開始搭建框架之前,你需要確保已經進行了 D3D 開發環境的搭建,相關教程可以閱讀這篇文章。不了解 DirectX11 的人,這個作者有關 Direc

基於HTTP協議的幾種實時資料獲取技術

轉載自五月的倉頡 HTTP協議 HTTP協議是建立在TCP協議上的應用層協議,協議的本質是請求----應答: 即對於HTTP協議來說,服務端給一次響應後整個請求就結束了,這是HTTP請求最大的特點,也是由於這個特點,HTTP請求無法做到的是服務端向客戶端主動推送資料。 但由於H

基於數字光柵投影的結構光維測量技術總結

概述 三維重建 光學三維測量 被動三維測量 主動三維測量 基於PMP的結構光三維測量技術 結

PDF技術-Java實現Office系列檔案轉PDF檔案

最近,公司要求做個檔案轉pdf的調研報告,於是在網上找了一些實現方法,現在將這些方法做個對比,並記錄下來,以後或許有用呢,哈哈。 首先說一下需求,產品要求不能使用第三方軟體實現,因為這種實現方式效率不高,所以需要使用“純Java程式碼”實現。同時也對跨平臺有要求,系統需要執行在linux系統

Android中基於HTTP的通訊技術3使用HttpClient進行Get方式通訊

繼續搬磚學習android通訊(來自極客學院) 使用HttpClient進行Get方式通訊,通過HttpClient建立網路連結,使用HttpGet方法讀取資料,並且通過Response獲取Entity返回值。package com.example.httpclientge

Android中基於HTTP的通訊技術5Google開源庫 使用 Volley 實現 JSON 字串請求

使用 Volley 實現 JSON 字串請求,通過極少的程式碼以及更方便理解的引數完成通訊。 (來自極客學院的學習筆記,我是搬運工- -)   Volley是谷歌開發android平臺的網路通訊庫:更

PBR基於物理渲染

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

基於 HTTP 協議的幾種實時數據獲取技術

通過 tty 輪詢 至少 不能 info back 同步 都在 HTTP協議 HTTP協議大家都很熟悉了,開始本文之前,首先簡單回顧一下HTTP協議。 HTTP協議是建立在TCP協議上的應用層協議,協議的本質是請求----應答:

鏡像的分層結構 - 每天5分鐘玩轉容器技術11

數據 9.png upload 問題: 所有 rfi image tle acs Docker 支持通過擴展現有鏡像,創建新的鏡像。 實際上,Docker Hub 中 99% 的鏡像都是通過在 base 鏡像中安裝和配置需要的軟件構建出來的。比如我們現在構建一個新的鏡像,

調試 Dockerfile - 每天5分鐘玩轉 Docker 容器技術15

top add font tom middle 程序 ria family 是個 包括 Dockerfile 在內的任何腳本和程序都會出錯。有錯並不可怕,但必須有辦法排查,所以本節討論如何 debug Dockerfile。 先回顧一下通過 Dockerfile 構建鏡像

網絡構建入門技術5——子網劃分應用

掩碼 -1 參考資料 臺電 www 說明 網絡 com hive 說明(2017-5-16 11:27:00): 題目: 一個公司有530臺電腦,組成一個對等局域網,子網掩碼和IP設多少最合適? 1. 首先選IP地址類別,A類太多,C類不夠用,就選B類了,假設為188.18

Dockerfile 常用指令 - 每天5分鐘玩轉 Docker 容器技術16

依次 官方文檔 構建 bottom str -s 暴露 工作 12px 是時候系統學習 Dockerfile 了。下面列出了 Dockerfile 中最常用的指令,完整列表和說明可參看官方文檔。 FROM指定 base 鏡像。 MAINTAINER設置鏡像的作

RUN vs CMD vs ENTRYPOINT - 每天5分鐘玩轉 Docker 容器技術17

docker 教程 容器 RUN、CMD 和 ENTRYPOINT 這三個 Dockerfile 指令看上去很類似很容易混淆。本節將通過實踐詳細討論它們的區別。簡單的說RUN 執行命令並創建新的鏡像層RUN 經常用於安裝軟件包。CMD 設置容器啟動後默認執行的命令及其參數但 CMD 能夠被 doc