Unity中Shader雙向反射分布函數BRDF

文章目錄

  • 前言
  • 一、渲染方程
  • 二、什么是BxDF
    • 1、BSSRDF
    • 2、BRDF
    • 3、BTDF
    • 4、BSDF
  • 三、迪士尼原則的BRDF
  • 四、迪士尼原則的BRDF的參數
  • 五、在Unity中看一下默認Shader的這些參數
  • 六、在這里記錄一下使用 Blender 和 SubstancePainter 的流程
    • 1、在Blender中導出模型為 .obj 格式
    • 2、在SubstancePainter中導入(在SP中導入是使用新建)


前言

Unity中Shader雙向反射分布函數BRDF。在上一篇文章中,我們知道了PBR的核心是PBS。而PBS的核心就是 雙向反射發布函數(BRDF)


一、渲染方程

  • 渲染方程描述了光能在場景中的流動,根據光的物理學原理,渲染方程可以完美的模擬出符合物理光學的結果。

該公式是根據現實物理推到得出的,實際渲染不用這個,而是在這個的基礎上簡化
在這里插入圖片描述

  • L0是當前點的出射光亮度(可以理解為輸出顏色)
  • Le是當前點的自發光亮度
  • ?r是當前點的入射方向到出射方向光的反射比例,為BxDF
  • Li是當前點的入射光亮度
  • (ωi*n)是入射角帶來的入射光衰減
  • ?Ω…dωi是入射方向半球的積分,可以理解為無窮小的累加和

我們在渲染時,主要考慮的是 ?r ,BxDF


二、什么是BxDF

在這里插入圖片描述

1、BSSRDF

  • Bidirectional Surface Scattering Reflectance Distribution Function(雙向表面散射反射分布函數)
    雙向:這個函數需要已知 入射光向量 和 視線向量
    表面散射反射:這個函數幾乎完全模擬出了物理光照物體的效果

2、BRDF

  • Bidirectional Reflectance Distribution Function(雙向反射分布函數)

雙向:這個函數需要已知 入射光向量 和 視線向量
反射:這個函數只模擬了光照到物體表面高光反射的效果

3、BTDF

  • Bidirectional Transmittance Distribution Function(雙向透射分布函數)

雙向:這個函數需要已知 入射光向量 和 視線向量
透射:這個函數只模擬了光照到物體表面穿透 高光透射 的效果

4、BSDF

  • Bidirectional Scattering Distribution Function(雙向散射分布函數)

雙向:這個函數需要已知 入射光向量 和 視線向量
散射:這個函數同時模擬了 高光反射 和 高光透射 的效果

  • BSDF = BRDF + BTDF

我們在Unity中,主要使用的時BRDF(雙向反射分布函數),即只考慮物體表面的高光反射效果。


三、迪士尼原則的BRDF

BRDF有很多公式。但是,比較通用普及的是迪士尼原則的BRDF

迪士尼動畫工作室在 SIGGRAPH2012上進行了著名的 Physically based shading at Disney 演講,正式提出了 迪士尼原則的BRDF,由于其 高度的通用性 在電影界和游戲界都引起了不小的轟動。

迪士尼原則的BRDF的核心理念:

  • 使用直觀的參數,而不是晦澀的物理類參數
  • 參數盡可能的少
  • 參數在其合理范圍內應該為 0 - 1
  • 允許參數在有意義的情況下超出正常的范圍
  • 所有參數組應盡可能的健壯與合理

四、迪士尼原則的BRDF的參數

在這里插入圖片描述

  • BaseColor(固有色):表面的顏色,通常由紋理提供

  • Subsurface(次表面):使用次表面近似的控制漫反射形狀

  • Metallic(金屬度):0 = 非金屬,1 = 金屬,這是兩種不同類型之間的線性混合

  • Specular(鏡面反射強度):鏡面反射的強度

  • SpecularTint(鏡面反射顏色):對美術控制的讓步,用于對BaseColor的入鏡鏡面反射進行顏色控制

  • Roughness(粗糙度):表面粗糙度,控制漫反射和鏡面反射

  • Anisotropic(各向異性強度):用于控制鏡面反射高光的縱橫比,0 = 各向同性,1 = 各向異性(正常的物體一般是各向同性的)

  • Sheen(光澤度):一種額外的掠射分量。主要用于布料

  • SheenTint(光澤顏色):對Sheen的顏色控制

  • ClearCoat(清漆強度):特殊用途的第二個鏡面波瓣

  • ClearCoatGloss(清漆光澤度):控制透明圖層光澤度

標紅的參數是Unity中用到的


五、在Unity中看一下默認Shader的這些參數

首先,我們需要把顏色空間修改為線性的
(Edit->Project Setting->Player->Other Settings)
在這里插入圖片描述

然后,我們在Unity中導入一個模型用于測試PBR的主要參數:

我們可以使用SubstancePainter軟件來輸出這下圖中需要的紋理

在這里插入圖片描述


六、在這里記錄一下使用 Blender 和 SubstancePainter 的流程

1、在Blender中導出模型為 .obj 格式

在這里插入圖片描述

2、在SubstancePainter中導入(在SP中導入是使用新建)

在這里插入圖片描述
SubstancePainter中移動快捷鍵:

旋轉視圖:ALT+鼠標左鍵;移動視圖:ALT+鼠標中鍵

因為Unity中對于PBR的不同單通道效果使用多個紋理,比較浪費系統資源。
所以,我們可以在自己的Shader中改寫,對一張貼圖的RGB通道來分別采樣使用

這是在SP中,自定義的紋理輸出格式

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161751.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android WMS—— Surace管理 (二十)

WMS 負責創建 Surface 以及對 Surface 的擺放工作,之后將 Surface 提交給SurfaceFlinger 進行合并。在 App 層也創建了一個 Surface 對象,但是那個是空對象,用于 WMS 的填充。 一、Surface的創建 首先 APP 層在 ViewRootImpl 的 relayoutWindow() 方法中發起創建任務。 1、…

Go 實現網絡代理

使用 Go 語言開發網絡代理服務可以通過以下步驟完成。這里,我們將使用 golang.org/x/net/proxy 包來創建一個簡單的 SOCKS5 代理服務作為示例。 步驟 1. 安裝 golang.org/x/net/proxy 包 使用以下命令安裝 golang.org/x/net 包,該包包含 proxy 子包&am…

天軟特色因子看板 (2023.11 第12期)

該因子看板跟蹤天軟特色因子A05006(近一月單筆流入流出金額之比(%),該因子為近一個月單筆流入流出金額之比(%)均值因子,用以刻畫在 市場日內分時成交中流入、流出成交金額的差異性特點,發掘市場主力資金的作用機制。 今日為該因子跟蹤第12期&…

expect腳本在自動化部署中的具體應用案例

#expect腳本在自動化部署中的具體應用 expect腳本是一個非常好的交互式應用腳本,在自動化部署中,可以使用這個腳本來實現全自動的自動化部署。下面是一些具體的應用案例。 場景一:自動安裝mysql 可以使用expect腳本來實現mysql自動安裝&…

Windows平臺Unity下實現camera場景推送RTMP|輕量級RTSP服務|實時錄像

技術背景 我們在對接Unity平臺camera場景采集的時候,除了常規的RTMP推送、錄像外,還有一些開發者,需要能實現輕量級RTSP服務,對外提供個拉流的RTSP URL。 目前我們在Windows平臺Unity下數據源可采集到以下部分: 采集…

@PostConstruct雖好,請勿亂用

1.問題說明 在日常的業務開發中,有時會利用PostConstruct在容器啟動時執行一些任務。例如: PostConstruct public void init(){System.out.println("service 初始化..............."); }一般情況這沒什么問題,但最近一個同事在做…

ui5使用echart

相關的代碼已經發布到github上。 展示下相關的實現功能 1、柱狀圖-1 2、柱狀圖-2 3.折線圖 4.餅狀圖 如何使用: 使用git clone項目到本地 git clone https://github.com/linhuang0405/com.joker.Zechart找到index.html。在vscode里右鍵選擇Open with Live Serve…

1

【任務 1】私有云服務搭建[10 分] 【題目 1】基礎環境配置[0.5 分] 【題目 2】Yum 源配置[0.5 分] 【題目 3】配置無秘鑰 ssh[0.5 分] 【題目 4】基礎安裝[0.5 分] 【題目 5】數據庫安裝與調優[0.5 分] 【題目 6】Keystone 服務安裝與使用[0.5 分] 【題目 7】Glance 安裝與使用…

BLE通用廣播包

文章目錄 1、藍牙廣播數據格式2、掃描響應數據 1、藍牙廣播數據格式 藍牙廣播包的最大長度是37個字節,其中設備地址占用了6個字節,只有31個字節是可用的。這31個可用的字節又按照一定的格式來組織,被分割為n個AD Structure。如下圖所示&…

npm命令

node -v --查看版本 npm install --安裝npm npm config get registry --查看npm當前鏡像 npm config set registry https://registry.npmmirror.com --設置淘寶鏡像 npm版本管理工具

VS Code 如何搭建C/C++環境

目錄 一、VS Code是什么? 二、VS Code下載和安裝 2.1下載 2.2安裝 2.3環境介紹 三、Vs Code配置C/C環境 3.1下載和配置MinGW-w64編譯器套件 3.1.1下載 3.1.2配置 一、VS Code是什么? 跨平臺,免費且開源的現代輕量級代碼編輯器 Vis…

【MATLAB源碼-第85期】基于farrow結構的濾波器仿真,截止頻率等參數可調。

操作環境: MATLAB 2022a 1、算法描述 Farrow結構是一種用于實現可變數字濾波器的方法,尤其適用于數字信號處理中的采樣率轉換和時變濾波。它通過多項式近似來實現對濾波器系數的平滑變化,使得濾波器具有可變的群延時或其他參數。 Farrow結…

mysql中數據是如何被用B+樹查詢到的

innoDB是按照頁為單位讀寫的 那頁中有很多行數據,是怎么執行查詢的呢,首先我們肯定,是以單向列表形式存儲的,提高了增刪的效率,但是查詢效率低。所以實際上對頁中的行數據進行了優化,能以二分的方式進行查…

Mac Goland無法調試

去github上下載golang的debug工具delve: go-delve/delve?github.com/go-delve/delve/blob/master/Documentation/installation/README.md?編輯 或者: go install github.com/go-delve/delve/cmd/dlvlatest按照他的安裝方式進行安裝,最后會在本地的…

基于北方蒼鷹算法優化概率神經網絡PNN的分類預測 - 附代碼

基于北方蒼鷹算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于北方蒼鷹算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于北方蒼鷹優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要:針對PNN神…

Java面試-框架篇-Mybatis

Java面試-框架篇-Mybatis MyBatis執行流程延遲加載使用及原理一, 二級緩存來源 MyBatis執行流程 讀取MyBatis配置文件: mybatis-config.xml加載運行環境和映射文件構造會話工廠SqlSessionFactory會話工廠創建SqlSession對象(包含了執行SQL語句的所有方法)操作數據庫的接口, Ex…

vue腳手架的基礎搭建過程

MVVM架構 Vue框架底層設計遵循MVVM架構。 Model層(M)模型層(業務邏輯層) View層(V)視圖層 主管UI ViewModel層(VM) 將項目代碼劃分清晰的層次結構后,非常有利于后期代…

IP地址定位技術發展與未來趨勢

隨著互聯網的快速發展,人們對網絡的需求和依賴程度越來越高。在海量的網絡數據傳輸中,IP地址定位技術作為網絡安全與信息追蹤的重要手段,其精準度一直備受關注。近年來,隨著技術的不斷進步,IP地址定位的精準度得到了顯…

【wireshark】基礎學習

TOC 查詢tcp tcp 查詢tcp握手請求的代碼 tcp.flags.ack 0 確定tcp握手成功的代碼 tcp.flags.ack 1 確定tcp連接請求的代碼 tcp.flags.ack 0 and tcp.flags.syn 1 3次握手后確定發送成功的查詢 tcp.flags.fin 1 查詢某IP對外發送的數據 ip.src_host 192.168.73.134 查詢某…

485 實驗

485(一般稱作 RS485/EIA-485)隸屬于 OSI 模型物理層,是串行通訊的一種。電氣特性規定 為 2 線,半雙工,多點通信的類型。它的電氣特性和 RS-232 大不一樣。用纜線兩端的電壓差值 來表示傳遞信號。RS485 僅僅規定了接受端和發送端的電氣特性。它…