[PBR] 學習筆記 #1 - 資料蒐集
PBR全稱Physically Based Rendering,是我接觸到Unity shader開發後不斷接觸到的名詞。為了解決在Unity開發中面對到的各種畫面問題,圖學知識用很破碎的方式在累積著,PBR的知識片段也是其中之一,但主要理解還停在如何使用,而不是原理。
最近又試著閱讀相關原理的資料,發現比起兩年前更能理解其中的內容了,於是想再做一遍較完整的學習,並留下筆記作為日後檢視與再深入的材料。
PBR全稱Physically Based Rendering,是我接觸到Unity shader開發後不斷接觸到的名詞。為了解決在Unity開發中面對到的各種畫面問題,圖學知識用很破碎的方式在累積著,PBR的知識片段也是其中之一,但主要理解還停在如何使用,而不是原理。
最近又試著閱讀相關原理的資料,發現比起兩年前更能理解其中的內容了,於是想再做一遍較完整的學習,並留下筆記作為日後檢視與再深入的材料。
在我的一個專案中,使用了 c++ 與 DirectX11 直接實作 rendering pipeline,並使用函式庫DirectXMath,作為數學運算的主要工具。
DirectXMath 是一個支援 SIMD 的函式庫,其中一個特點是它以 row-major 的方式來儲存矩陣。
但不論是 GLSL 還是 HLSL,shader 中的 matrix 都是預設以 column-major 儲存,所以在 DirectX11 與 DirectXMath 的範例中告訴你,在把 DirectXMath 的矩陣類型傳遞到 shader 中使用前,必須先經過一次矩陣轉置的處理,並且在 HLSL program 中,要使用 mul(vector, matrix) 來進行座標轉換。
但理由只有就這樣?結論來的這麼容易?
很多渲染套件或特效都會用上 OnPostRender
或 OnRenderImage
等,是一般 GameObject 上撰寫遊戲邏輯時較少用到的事件。
最近在大量處理著與畫面相關的項目,感到對這些事件不夠熟悉,於是重新讀過一些資料,留些筆記備忘。
此篇文章是《從零開始的 Unity 學習心得》系列的第五篇文章,這個系列是記錄我對 Unity 的開發及學習心得,包含我用何種方式去理解 Unity 的運作,並且在我所知的範圍內盡可能說明相關原理與開發要點。完整系列的目錄可以參考:
初淺地研究,嘗試自行撰寫 Physically Based Rendering shader。目前 javascript 用的還不是很習慣,非同步與事件順序常常會轉不過來,但 WebGL 作為一個練習寫 shader 的環境來說還是相對方便的。
前陣子在找四元樹與八元樹的資料,發現了 three.js 這個套件,被用於做四元樹相關演算法的圖像展示。
three.js 是一個重新封裝 WebGL 語法的一個 javascript library,大幅降低開發 WebGL 的難度,之前有簡單接觸過 OpenGL,這次趁著週末便來挑戰看看 WebGL 吧!
此篇文章是《從零開始的 Unity 學習心得》系列的第四篇文章,這個系列是記錄我對 Unity 的開發及學習心得,包含我用何種方式去理解 Unity 的運作,並且在我所知的範圍內盡可能說明相關原理與開發要點。完整系列的目錄可以參考:
此篇文章是《從零開始的 Unity 學習心得》系列的第三篇文章,這個系列是記錄我對 Unity 的開發及學習心得,包含我用何種方式去理解 Unity 的運作,並且在我所知的範圍內盡可能說明相關原理與開發要點。完整系列的目錄可以參考:
上篇文章說明了幾個 Unity 的基本組成,並且開始接觸 MonoBehaviour。這篇文章將延續話題,聊聊我對於 Unity 物理系統 – 一個最常用在與 MonoBehaviour 共築遊戲邏輯的系統 – 的理解。
此篇文章是《從零開始的 Unity 學習心得》系列的第二篇文章,這個系列是記錄我對 Unity 的開發及學習心得,包含我用何種方式去理解 Unity 的運作,並且在我所知的範圍內盡可能說明相關原理與開發要點。完整系列的目錄可以參考:
這次主要重點放在 場景、物件、組件 的關係,以及撰寫 MonoBehaiour 腳本時可能會用上的一些經驗談。