最近要搞个效果就是屏幕周围要有种向后拉的感觉
其实原理是uv偏移,就是越往里的偏移越少,越往外偏移越大
实现:就是算uv和拉伸中心点距离来计算偏移
其实这个效果是全屏效果,靠近中心点位置也会进行偏移,只是偏移的幅度非常小,小到看不见
我这里使用pow几次方来计算,次方越大则越靠近屏幕的强度越少,这样子很小的数值就会接近0
下面是实现的shader
Shader "ScreenEffect/ScreenStretch"
{
Properties
{
_MainTex("Base (RGB)", 2D) = "white" {}
_WeakFactor("Weak Factor",Range(1,5)) = 0
}
CGINCLUDE
uniform sampler2D _MainTex;
//拉伸强度
uniform float _StretchFactor;
//拉伸中心点xy值(0-1)屏幕空间
uniform float4 _ScreenPos;
//衰减强度
uniform float _WeakFactor;
#include "UnityCG.cginc"
fixed4 frag(v2f_img i) : SV_Target
{
float2 dir = i.uv - _ScreenPos.xy;
//这里算出偏移强度,这里引用了几次方运算,_Weak越