<script id="fragmentShader" type="x-shader/x-fragment">
varying vec2 vUv;
uniform float dispFactor;
uniform sampler2D disp;
uniform sampler2D map1;
uniform sampler2D map2;
uniform float intensity;
uniform bool direction;
float random(vec3 scale,float seed)
{
return fract( sin(dot(gl_FragCoord.xyz+seed,scale))*43758.5453 + seed );
}
void main()
{
const float iterations = 25.;//float(quality+1)*25.;
vec2 pos = vUv;//gl_FragCoord.xy / RENDERSIZE;
vec4 color = vec4(0.);
float total = 0.;
vec2 toCenter = vec2(0.5, 0.5) - pos;
float offset = random( vec3(12.9898,78.233,151.7182), 0. );
for(float t=0.; t<=iterations; t++)
{
float percent = (t+offset)/iterations;
float weight = 4.0*(percent-percent*percent);
vec4 sample1 = texture2D(map1, pos+toCenter*percent*intensity*dispFactor);
vec4 sample2 = vec4(0.0);
if(!direction)
{
sample2 = texture2D(map2, pos+toCenter*percent*intensity*(-1.0+dispFactor));
} else {
sample2 = texture2D(map2, pos+toCenter*percent*intensity*(1.0-dispFactor));
}
vec4 sample = mix(sample1, sample2, dispFactor);
sample.rgb *= sample.a;
color += sample*weight;
total += weight;
}
gl_FragColor = color/total;
gl_FragColor.rgb /= max(gl_FragColor.a,0.00001);
}
</script>
<script id="vertexShader" type="x-shader/x-vertex">
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
</script>
<script src='js/three.min.js'></script>
<script src='js/TweenMax.min.js'></script>
<script src='js/dat.gui.min.js'></script>
<script src="js/script.js"></script>
*
回帖描述:*
链接类型:*
下载链接:*
描述:*
回帖描述:*
链接类型:*
阅读权限:*
下载链接:



聚优部落技术论坛 © 版权所有 鲁ICP备15007479号-6
Copyright(C)web.com, All Rights Reserved.
