1. 程式人生 > >Shader 學習筆記 20151104

Shader 學習筆記 20151104

Segment 0

  • 雜談。 今天俗務纏身,學習時間不多,頗多遺憾

Segment 1 閱讀

  • 看了cook book的法線貼圖這一段

Segment 2 理解

  • cook book這下子失手了。。。 只介紹瞭如何使用法線貼圖,原理一概不講。 上網一查,才有所收穫。
    所謂法線貼圖就是先有兩個體型差不多的物體(其中一個體型多邊形少,一個體型多邊形多),接下來就提取一下多邊形多的那個模型的每一個點上面的法線,提取完之後把這些個法線存成一張法線貼圖(法線貼圖裡的RGB分別存XYZ)。實際使用的時候用這個高精度的法線貼圖裡面的RGB值(就是法線值)替換掉我們實際模型每一點的法線值。法線替換之後再用另外一個texture貼一下表面材質。最後,當光照照射時,你會驚喜的發現,每個點對光的反射都不大一樣了!看起來一個低多邊形的模型居然有了豐富的細節!!!(可以想象低多邊形模型是個光滑圓球,高多邊形是個凸凸凹凹的球,首先兩個模型之間的點是一一對應的,或者說點的投影是一一對應的。當我們把凸凹球的法線移植到光滑球上面之後,再用光去照它,自然就個光滑球不一樣了,反而和凸凹球有點像!)
    吊的很, 這個連結的文章必須看一下 《寫給笨人的法線貼圖原理》
    http://blog.csdn.net/damenhanter/article/details/22481563

  • Photoshop裡面有一個玩法是直接搞一張鏽跡斑斑的照片,通過算相鄰點的顏色差,虛擬出一個法線值(我猜的,據說是sobel演算法),然後每個點都這麼搞一下之後就能整出一張法線貼圖,再配合之前的鏽跡斑斑照片,這兩個texture就可以對一個平面渲染,把它渲染的好似真的有一塊塊凸起來的鏽。

  • 上面說的法線貼圖都是說高模和低模長的一樣的例子,還有一種是我的低模不一樣了,它有一個尖尖的凸起,或者很窄很深的坑。這時候就需要用到tangent space做貼圖變換了,原來的玩法貼不上去了。說是這麼說,但是具體實現我還不是很瞭然,留待他日吧。