Shader特效——实现简单的“FishEye”【GLSL】

效果如图所示:

放大:

Shader特效——实现简单的“FishEye”【GLSL】_第1张图片

缩小:

Shader特效——实现简单的“FishEye”【GLSL】_第2张图片


核心算法那很简单,就不多说了,给个公式:

r = (x^2 + y^2)^0.5

x' = r' * cosΘ = (r / (r+K)) * x/r = x / (r+K);

y' = r' * cosΘ = (r / (r+K)) * y/r = y / (r+K);

注:K是常数,取值范围(0, +∞)


核心代码:

   vec2 pos = vec2(uv.x, uv.y);
   pos -= vec2(uTransX, uTransY); 
   pos = 2.*uv - vec2(1., 1.); // 坐标系的转换
   
   float r = length(pos);
   vec2 pos2 = pos;
   
   if(r


你可能感兴趣的:(Shader,Shader实例解析)