玻璃效果主要是折射效果的計算和反射效果的計算。
折射:1.利用grass pass對當前螢幕的渲染影象進行取樣
2.得到法線貼圖對折射的影響
3.對採集的螢幕影象進行關於法線方向上的扭曲和偏移,以模擬折射效果
反射:主要利用環境貼圖產生反射的殘影,並和主貼圖取樣結果混合
得到反射和折射的結果後,以乙個變數控制最終效果(類似於玻璃的透光率);
**如下:
shader "myshader/011"
_diffuse("color",color) = (1,1,1,1)
_bumpmap("normal map",2d) = "white"{}
_bumpscale("bump scale", float) = 1
_cubemap("cubemap",cube) = "_skybox"{}
_distortion("distortion",range(0,100)) = 10//模糊程度
_refractamount("refractamount",range(0,1)) = 1//乙個折射係數,用於控制折射和反射的佔比
} subshader
//在所有物體渲染之後再抓屏
lod 100
grabpass//抓取當前螢幕的渲染影象並存入指定紋理
pass
; sampler2d _maintex;
float4 _maintex_st;
fixed4 _diffuse;
sampler2d _bumpmap;
float4 _bumpmap_st;
float _bumpscale;
sampler2d grabpass;//要和grabpass中的名字一樣
float4 grabpass_texelsize;//抓取的紋理圖的大小
float _distortion;
samplercube _cubemap;
float _refractamount;
fixed4 frag(v2f i) : sv_target
endcg
} }}
Shader實現玻璃效果
這是一張燥波 提供給玻璃的具有透明效果的,一般用黑白灰貼圖,alpha通道裡有一種說法是黑透白不透,灰色是半透 shader為 shader mirrors transparent bumped specular flat blendlevel main material blend level r...
Shader學習的基礎知識(十四)玻璃效果
這次我們使用第二種渲染紋理方式grabpass來製做乙個玻璃效果。非常簡單,用一張法線紋理來修改法線資訊,通過乙個cubemap來模擬玻璃反射,而在模擬折射時,則使用了grabpass獲取玻璃後面的螢幕影象,並在切線空間中進行偏移後,再對螢幕影象進行取樣來模擬。建立乙個立方體和乙個圓,圓放在立方體裡...
Unity Shader 玻璃效果
乙個玻璃效果主要分為兩個部分,一部分是折射效果的計算,另一部分則是反射。下面分類進行討論 折射 1.利用grass pass對當前螢幕的渲染影象進行取樣 2.得到法線貼圖對折射的影響 3.對採集的螢幕影象進行關於法線方向上的扭曲和偏移,以模擬折射效果 反射 主要利用環境貼圖產生反射的殘影,並和主貼圖...