[筆記]莊懂的技術美術入門(十七)
1.ScreenUV

屏幕UV就是讓物體根據(jù)自身的視角空間坐標對紋理進行采樣。
需要將貼圖模式改為Repeat
代碼實現(xiàn)


????????原本直接使用觀察空間的坐標去做會發(fā)生畸變,即下圖原本應該是斜直線卻變成了曲線,經(jīng)過posVS.xy/posVS.z的處理,除以Z深度后可以校正畸變
????????因為屏幕紋理是按照屏幕大小來做Tilling跟模型的距離是沒有關系的,模型距離遠了Tilling在屏幕上映射上去會顯得很大,而取originDist是取的模型原點z深度,那么模型上的每個頂點都得到了一個統(tǒng)一的距離值,UV再乘這個值就會受到距離的影響

2.ScreenWarp

類似玻璃折射效果
????????通過GrabPass{ "_Name"}通道抓取一次屏幕圖像作為紋理,然后再根據(jù)物體的屏幕坐標對這個屏幕紋理進行采樣。
? ? ? ? 屏幕紋理采樣坐標 pos = ComputeGrabScreenPos(i.clipPos);
? ? ????采樣 tex2Dproj(_Name, pos);
? ? ? ? warpMidVal為擾動中間值,warpInt為擾動強度,調(diào)節(jié)這兩個值可以調(diào)節(jié)擾動的大小。為什么要用mainColor.x減去擾動中間值就是一個比較靈活的操作了,我們希望擾動的范圍和物體的主顏色掛鉤,而且與透明度相關,所以就會有上面的擾動值計算。

代碼實現(xiàn)

標簽: