shader 玻璃效果

2021-10-02 17:20:24 字數 1090 閱讀 5600

玻璃效果主要是折射效果的計算和反射效果的計算。

折射: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.對採集的螢幕影象進行關於法線方向上的扭曲和偏移,以模擬折射效果 反射 主要利用環境貼圖產生反射的殘影,並和主貼圖...