curtains实现图片波纹波动动画效果代码
代码语言:html
所属分类:动画
代码描述:curtains实现图片波纹波动动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { /* make the body fits our viewport */ position: relative; width: 100%; height: 100vh; margin: 0; /* hide scrollbars */ overflow: hidden; } #canvas { /* make the canvas wrapper fits the window */ position: absolute; top: 0; left: 0; width: 100%; height: 100vh; } .plane { /* define the size of your plane */ width: 80%; max-width: 1400px; height: 80vh; position: relative; top: 10vh; margin: 0 auto; overflow: hidden; } .plane img { /* hide the img element */ display: none; } /*** in case of error show the image ***/ .no-curtains .plane { overflow: hidden; display: flex; align-items: center; justify-content: center; } .no-curtains .plane img { display: block; max-width: 100%; object-fit: cover; } </style> </head> <body translate="no" > <!-- div that will hold our WebGL canvas --> <div id="canvas"></div> <!-- div used to create our plane --> <div class="plane"> <!-- image that will be used as a texture by our plane --> <img src="//repo.bfw.wiki/bfwrepo/image/5d6537c07e9bd.png" crossorigin="anonymous"/> </div> <script id="plane-vs" type="x-shader/x-vertex"> #ifdef GL_ES precision mediump float; #endif // those are the mandatory attributes that the lib sets attribute vec3 aVertexPosition; attribute vec2 aTextureCoord; // those are mandatory uniforms that the lib sets and that contain our model view and projection matrix uniform mat4 uMVMatrix; uniform mat4 uPMatrix; // our texture matrix uniform (this is the lib default name, but it could be changed) uniform mat4 uTextureMatrix0; // if you want to pass your vertex and texture coords to the fragment shader varying vec3 vVertexPosition; varying vec2 vTextureCoord; void main() { vec3 vertexPosition = aVertexPosition; gl_Position = uPMatrix * uMVMatrix * vec4(vertexPosition, 1.0); // set the varyings // thanks to the texture matrix we will be able to calculate accurate texture coords // so that our texture will always fit our plane without being distorted vTextureCoord = (uTextureMatrix0 * vec4(aTextureCoord, 0.0, 1.0)).xy; vVertexPosition = vertexPosition; } </script> <script id="plane-fs" type="x-shader/x-fragment"> #ifdef GL_ES precision mediump float; #en.........完整代码请登录后点击上方下载按钮下载查看
网友评论0