three+gsap实现玫瑰加载过渡动画效果代码

代码语言:html

所属分类:动画

代码描述:three+gsap实现玫瑰加载过渡动画效果代码

代码标签: 加载 过渡 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/reset.min.css">
<style>
   
@import url("https://fonts.googleapis.com/css2?family=Cormorant:wght@500&display=swap");
body
{
 
overflow: hidden;
}

#webgl-canvas {
 
position: fixed;
 
z-index: -1;
}

.title {
 
opacity: 0;
 
position: fixed;
 
top: 50%;
 
left: 50%;
 
transform: translate(-50%, -50%);
 
color: #fff;
 
font-family: "Cormorant", serif;
 
font-size: 8rem;
}
</style>

</head>
<body>

<canvas id="webgl-canvas"></canvas>
<h1 class="title">ROSE</h1>

<!-- vertexShader -->
<script id="js-vertex-shader" type="x-shader/x-vertex">
attribute vec3 position
;
attribute vec2 uv
;
varying vec2 vUv
;

void main()     {
  vUv
= uv;

  gl_Position
= vec4(position, 1.0);
}
</script>

<!-- fragmentShader -->
<script id="js-fragment-shader" type="x-shader/x-fragment">
precision mediump
float;

uniform sampler2D uTexture1
;
uniform sampler2D uTexture2
;
uniform sampler2D uDisp
;
uniform vec2 uMeshsize
;
uniform vec2 uTexturesize
;
uniform
float uAnimation;
varying vec2 vUv
;
 
mat2 scale
(vec2 _scale) {
 
return mat2(_scale.x, 0.0, 0.0, _scale.y);
}

void main() {  
  vec2 ratio
= vec2(
    min
((uMeshsize.x / uMeshsize.y) / (uTexturesize.x / uTexturesize.y), 1.0),
    min
((uMeshsize.y / uMeshsize.x) / (uTexturesize.y / uTexturesize.x), 1.0)
 
);
  vec2 newUV
= vec2(
    vUv
.x * ratio.x + (1.0 - ratio.x) * 0.5,
    vUv
.y * ratio.y + (1.0 - ratio.y) * 0.5
 
);
 
  vec2 st
= newUV;
  st
-= vec2(0.5);
  st
= scale(vec2(0.8 + (uAnimation * 0.2))) * st;
  st
+= vec2(0.5);
 
  vec2 ed
= newUV;
  ed
-= vec2(0.5);
  ed
= scale(vec2(1.0 - (uAnimation * 0.06))) * ed;
  ed
+= vec2(0.5);
 
  vec4 img1
= texture2D(uTexture1, st);
  vec4 img2
= texture2D(uTexture2, ed);
  vec4 displace
= texture2D(uDisp, newUV);
 
 
float disp = smoothstep(0.0, displace.r, uAnimation);
 
  vec4 color
= mix(img1, img2, disp);
 
  gl_FragColor
= color;
}
</script>

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.109.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gs.........完整代码请登录后点击上方下载按钮下载查看

网友评论0