Shader實現玻璃效果

2021-09-29 10:35:47 字數 2197 閱讀 1510

這是一張燥波

提供給玻璃的具有透明效果的,一般用黑白灰貼圖,alpha通道裡有一種說法是黑透白不透,灰色是半透 。

shader為

shader "mirrors/transparent bumped specular flat" 

_blendlevel("main material blend level",range(0,1))=1

_speccolor ("specular color", color) = (0.5, 0.5, 0.5, 0)

_shininess ("shininess", range (0.01, 1)) = 0.078125

_bumpmap ("normalmap", 2d) = "bump" {}

_bumpness ("bump rate",range(0,1))= 1

_ref ("for mirror reflection,don't set it!", 2d) = "white" {}

}subshader

grabpass

}cgprogram

#pragma su***ce surf blinnphong

#pragma target 3.0

#pragma debug

sampler2d _maintex;

sampler2d _bumpmap;

sampler2d _ref;

fixed4 _color;

half _blendlevel;

half _transparency;

half _bumpness;

half _shininess;

sampler2d _grabtexture;

float4 _grabtexture_texelsize;

half _distortion;

struct input ;

void surf (input in, inout su***ceoutput o)

endcg

}fallback "transparent/vertexlit"

}

不需要法線貼圖只調透明度引數就可以了

二 、水杯,高腳杯似的玻璃表現shader

shader "mirrors/transparent specular sphere" 

_blendlevel("main material blend level",range(0,1))=1

_speccolor ("specular color", color) = (0.5, 0.5, 0.5, 0)

_shininess ("shininess", range (0.01, 1)) = 0.078125

_ref ("for mirror reflection,don't set it!", 2d) = "white" {}

}subshader

grabpass

}cgprogram

#pragma su***ce surf blinnphong

#pragma target 3.0

#pragma debug

sampler2d _maintex;

sampler2d _ref;

fixed4 _color;

half _blendlevel;

half _transparency;

half _shininess;

sampler2d _grabtexture;

float4 _grabtexture_texelsize;

half _distortion;

struct input ;

void surf (input in, inout su***ceoutput o)

endcg

}fallback "transparent/vertexlit"

}

shader 玻璃效果

玻璃效果主要是折射效果的計算和反射效果的計算。折射 1.利用grass pass對當前螢幕的渲染影象進行取樣 2.得到法線貼圖對折射的影響 3.對採集的螢幕影象進行關於法線方向上的扭曲和偏移,以模擬折射效果 反射 主要利用環境貼圖產生反射的殘影,並和主貼圖取樣結果混合 得到反射和折射的結果後,以乙個...

玻璃效果的實現

private void form1 paint object sender,painteventargs e using pen pen new pen cfg.inborder rectangle rec2 new rectangle rec.x 2,rec.y 2,rec.width 4,re...

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

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