交接处检测高亮
使用屏幕坐标采样深度图,比较球体view空间下的Z值和场景的深度信息depth,如果depth > positionVS.z(右手坐标系的z都是负数,所以减法变加法),表示处于遮光罩内,而且越靠近交界处,这个差值越小,用1 - 差值,再乘以一个边缘系数就可以得到边缘信息。
half4 hightlight = depth + i.positionVS.z;
hightlight *= _HighLightFade;
hightlight = 1 - hightlight;
hightlight *= _HighLightColor;
边缘外发光
法线和视角方向点乘,然后加上菲涅尔系数
half3 N = i.normalWS;
half3 V = i.viewWS;
half NdotV = 1 - saturate(dot(N, V));
half4 fresnel = pow(abs(NdotV), _FresnelPower);
fresnel *= _FresnelColor;
蜂窝护盾
普通的图片采样
流光、扭曲
屏幕UV加上扰动系数,得到扰动坐标,使用扰动UV采样屏幕抓取图(_CameraOpaqueTexture),就可以制作扰动。
流光就是在v方向上增加一个变化。