Unity shader各向異性的頭髮效果

2021-09-25 01:24:37 字數 1424 閱讀 8754

參考

hairjit 貼圖

片元著色器(fragment shader)

...

binormal =

cross

(normal, tangent)

// 次法線可以由法線和切線算出..

.fixed spec =

dot(worldnormal, worldhalfdir)

;tangent =

shifttangent

(binormal, worldnormal, hairjit + _anisooffset)

;fixed3 specular1 = _lightspeccolor.rgb *

strandspecular

(tangent, worldviewdir, worldlightdir, _shininess1 *

20, _specintensity1)

;fixed3 specular2 = _lightspeccolor.rgb *

strandspecular

(tangent, worldviewdir, worldlightdir, _shininess2 *

20, _specintensity2);.

..

這樣就得出與髮絲方向垂直的高光了

這個是因為模型面數太低了,需要提高模型精度,或者增加乙個高精度的法線貼圖

才行,而且還與 uv有關的

加上個step控制一下(避免用if)

strandspecular = strandspecular * color.rgb *

step

(0.002

, _strandshiness)

;

各向異性擴散

主要是用來平滑影象的,克服了高斯模糊的缺陷,各向異性擴散在平滑影象時是保留影象邊緣的 和雙邊濾波很像 通常我們有將影象看作矩陣的,看作圖的,看作隨機過程的,記得過去還有 看作力場的。這次新鮮,將影象看作熱量場了。每個畫素看作熱流,根據當前畫素和周圍畫素的關係,來確定是否要向周圍擴散。比如某個鄰域畫素...

各向異性擴散

主要是用來平滑影象的,克服了高斯模糊的缺陷,各向異性擴散在平滑影象時是保留影象邊緣的 和雙邊濾波很像 通常我們有將影象看作矩陣的,看作圖的,看作隨機過程的,記得過去還有 看作力場的。這次新鮮,將影象看作熱量場了。每個畫素看作熱流,根據當前畫素和周圍畫素的關係,來確定是否要向周圍擴散。比如某個鄰域畫素...

各向同性,各向異性縮放

r cnn的 中提到了各向同性,各向異性縮放的概念,這裡做乙個詳細解釋 當我們輸入一張時,我們要搜尋出所有可能是物體的區域,r cnn採用的就是selective search方法,通過這個演算法我們搜尋出2000個候選框。然後從r cnn的總流程圖中可以看到,搜出的候選框是矩形的,而且是大小各不相...