這個效果主要是利用反正切函式完成。atan2(x,y)的返回值是[-pi,pi],這個支援4個象限的反正切函式。關於圓角計算,在上篇文章中有介紹。
現在,我們來看看反正切函式的效果:
在第一象限:返回[0,pi/2],有漸變;
在第二象限:返回[pi/2,pi],為白色;
在第三象限:返回[-pi,-pi/2],為黑色;
在第四象限:返回[-pi/2,0],為黑色;
uv = i.uv - fixed2(0.5,0.5反正切的返回值在[-pi,pi],那麼我們現在增加變數_angle,讓他控制反正切的值;我們設定_angle值為[-pi,pi],用_angle的值,加上反正切的值,他們最後的值就會隨著_angle的值變化。);
float hui =atan2(uv.y, uv.x);
return float4(hui,hui,hui,alpha);
當_angle = -pi時,最終值為[-2pi,0],顯示黑色;
當_angle = pi時,最終值為[0,2pi],顯示漸變;
現在我使用用sign函式,將大於0的部分全部設定為1,小於等於0的部分設定成為0;
源**:
shader "sign(x)jqm/test02
"_angle(
"angle
", range(0, 1)) = 0
} subshader
zwrite off
blend srcalpha oneminussrcalpha
cgprogram
#pragma vertex vert
#pragma fragment frag#include
"unitycg.cginc
"float
_percent;
float
_angle;
sampler2d _maintex;
float4 _maintex_st;
struct
vertexoutput
;fixed4 frag (vertexoutput i) : color
endcg}}
}
:如果 x 大於 0,返回 1;如果 x 小於 0,返回 01;否則返回 0。
shader 玻璃效果
玻璃效果主要是折射效果的計算和反射效果的計算。折射 1.利用grass pass對當前螢幕的渲染影象進行取樣 2.得到法線貼圖對折射的影響 3.對採集的螢幕影象進行關於法線方向上的扭曲和偏移,以模擬折射效果 反射 主要利用環境貼圖產生反射的殘影,並和主貼圖取樣結果混合 得到反射和折射的結果後,以乙個...
Shader 各種Shader效果的合集
1.the fresnel effect 參考 實用的shader shader heroshader character a通道標記陣營區域,1 表示有陣營顏色區域,0 表示非陣營顏色區域 emission emission range 0,1 0 自發光 shadowlevel shadow l...
Shader實現玻璃效果
這是一張燥波 提供給玻璃的具有透明效果的,一般用黑白灰貼圖,alpha通道裡有一種說法是黑透白不透,灰色是半透 shader為 shader mirrors transparent bumped specular flat blendlevel main material blend level r...