Egret社区
5银子
let fragmentSrc3 = `
            precision lowp float;
            varying vec2 vTextureCoord;
            varying vec4 vColor;
            uniform sampler2D uSampler;

            uniform vec2 center;
            uniform vec3 params; // 10.0, 0.8, 0.1
            uniform float time;

            void main()
            {
                vec2 uv = vTextureCoord.xy;
                vec2 texCoord = uv;

                float dist = distance(uv, center);

                if ( (dist <= (time + params.z)) && (dist >= (time - params.z)) )
                {
                    float diff = (dist - time);
                    float powDiff = 1.0 - pow(abs(diff*params.x), params.y);
                    float diffTime = diff  * powDiff;
                    vec2 diffUV = normalize(uv - center);
                    texCoord = uv + (diffUV * diffTime);            
                }

                 gl_FragColor = texture2D(uSampler, texCoord);
            }
        `

就是if语句里面的那段,看不懂,大佬能讲一下这么做的含义吗

分享到 :
0 人收藏

5 个回复

倒序浏览
已识乾坤大  登堂入室 | 2018-11-8 16:15:56
我顶一下
二爷  圆转纯熟 | 2018-11-8 16:42:41
我也顶一下。
球拍  官方团队 | 2018-11-8 18:41:52
判断的是随着time的变化代码的作用域,为time+0.1 到time-0.1
已识乾坤大  登堂入室 | 2018-11-9 10:37:28
球拍 发表于 2018-11-8 18:41
判断的是随着time的变化代码的作用域,为time+0.1 到time-0.1

float powDiff = 1.0 - pow(abs(diff*params.x), params.y);
float diffTime = diff  * powDiff;
主要是这两段
球拍  官方团队 | 2018-11-9 12:13:07
已识乾坤大 发表于 2018-11-9 10:37
float powDiff = 1.0 - pow(abs(diff*params.x), params.y);
float diffTime = diff  * powDiff;
主要是 ...

片段返回贴图改变位置的相应坐标, 可以手动改下试试就知道了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部