這篇部落格記錄一下常用的幾種效果:內發光、外發光以及描邊的幾種實現方法
一般實現方法就是使用empricial菲涅爾近似公式來實現:
;缺點 缺點
全部**如下
shader "custom/effect/outline"
subshader
lod 200
pass
;struct v2f
; half4 _outlinecolor;
float _outlinewidth;
fixed4 frag (v2f i)
: sv_target
endcg
}pass
;struct v2f
; half4 _color;
fixed4 frag (v2f i)
: sv_target
endcg}}}
缺點
全部**如下
shader "custom/postprocess/edgedetection"
_edgecolor (
"edgecolor"
, color)=(
1,0,
0,1)
_backgroundcolor (
"backgroundcolor"
, color)=(
1,1,
1,1)
_edgeonly (
"edge only"
,range(0
,1))
=0.5
_edgewidth (
"edge width"
,range(0
,1))
=1} subshader ;
sampler2d _maintex;
float2 _maintex_texelsize;
fixed4 _edgecolor;
fixed4 _backgroundcolor;
fixed _edgeonly;
fixed _edgewidth;
fixed luminance
(fixed4 color)
half sobel
(v2f i)
;const half gy[9]
=;half texcolor;
half edgex =0;
half edgey =0;
for(
int it =
0; it <
9; it++
) half edge =
lerp(0
,abs
(edgex)
+abs
(edgey)
, _edgewidth)
;return edge;
} fixed4 frag (v2f i)
: sv_target
endcg}}}
全部**如下
shader "custom/effect/shine_in"
subshader
lod 200
pass
;struct v2f
; half4 _shinecolor;
float _shinewidth;
float _shinefeather;
fixed4 frag (v2f i)
: sv_target
endcg
}pass
;struct v2f
; half4 _color;
fixed4 frag (v2f i)
: sv_target
endcg}}}
unity Shader 扭曲效果
所謂扭曲就是擾動乙個物體的uv座標,表現出來就是乙個擾動效果,如火焰扭曲空氣,和水波對水底的影響。1.在shader 中我們需要一張當前渲染的紋理 2.給乙個物體渲染並使用當前紋理,用螢幕座標作為uv座標加上乙個擾動值 1.unity提供了抓取的pass grabpass unity官網介紹 每次遇...
Unity Shader透明效果
unity中通常使用2種方法來實現透明效果 第一種是使用透明度測試 alpha test 這種方法無法得到真正的半透明效果 另一種是透明度混合 alpha blending 透明度測試和透明度混合的基本原理如下 透明度測試 只要乙個片元的透明度不滿足條件 通常是小於某個閾值 那麼它對應的片元就會被捨...
unity Shader透明效果
一 深度緩衝 對於不透明物體,不需要考慮它們的渲染順序,因為強大的深度緩衝 z buffer 在實時渲染中,深度緩衝是用於解決可見性問題的,基本思想 根據深度緩衝中的值來判斷該片遠距離攝像機的距離。一 透明度 當開啟透明混合後,當乙個物體被渲染到螢幕上時,每個片元除了顏色值和深度值之外,還有另乙個屬...