Shader學習的基礎知識(十四)玻璃效果

2021-09-12 10:44:26 字數 837 閱讀 1312

這次我們使用第二種渲染紋理方式grabpass來製做乙個玻璃效果。非常簡單,用一張法線紋理來修改法線資訊,通過乙個cubemap來模擬玻璃反射,而在模擬折射時,則使用了grabpass獲取玻璃後面的螢幕影象,並在切線空間中進行偏移後,再對螢幕影象進行取樣來模擬。

建立乙個立方體和乙個圓,圓放在立方體裡面。

創建立文體紋理,具體參考這個:

然後使用以下shader加入material後,賦予立方體。

**如下,具體說明在注釋中:

shader "custom/testshader23" 

//玻璃的法線紋理

_bumpmap ("normal map", 2d) = "bump" {}

//映色紋理

_cubemap ("environment cubemap", cube) = "_skybox" {}

//折射圖扭曲程度

_distortion ("distortion", range(0, 100)) = 10

//折射效果

_refractamount ("refract amount", range(0.0, 1.0)) = 1.0

} subshader

//這是乙個抓取螢幕影象的pass,會把影象存進_refractiontex這個變數中

grabpass

pass ;

struct v2f ;

v2f vert (a2v v)

fixed4 frag (v2f i) : sv_target

endcg

} }fallback "diffuse"

}

Shader學習的基礎知識(六)透明效果

在渲染的時候,渲染的順序是非常重要的,對於不透明物體我們不用不考慮是因為有的深度緩衝存在。在渲染時需要把片元中的值進行比較 如果開了深度測試 但一但關了嘗試測試就沒那麼簡單了。透明度測試 只要小於閾值就會被捨棄,完全不透明或完全透明。透明度混合 這種方法才能得到真正的透明效果,但是需要關掉深度測試,...

unity基礎開發 shader基礎知識

1.unity中配備了強大的陰影和材料的語言工具稱為shaderlab,以程式語言來看,它類似於cgfx和direct3d的效果框架語法,它描述了材質所必須要的一切諮詢,而不僅僅侷限於平面頂點 畫素著色。2.在unity3d中建立乙個shader assets create shader 3.建立了...

python基礎知識(十四)

一些有關函式和迴圈的聯絡 判斷a是否以b開頭 eg 方法一 a abcdef b abcd i 0 while i len b if a i b i print flase break i i 1 else print true 結果為 true 方法二 函式 eg abcdef b abcd de...