three+webgl+gsap模拟海底海水涟漪动画效果代码
代码语言:html
所属分类:动画
代码描述:three+webgl+gsap模拟海底海水涟漪动画效果代码
代码标签: three webgl 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"> </head> <body> <canvas id="webgl-canvas"></canvas> <!-- vertexShader --> <script id="js-vertex-shader" type="x-shader/x-vertex"> varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } </script> <!-- fragmentShader --> <script id="js-fragment-shader" type="x-shader/x-fragment"> precision mediump float; uniform float time; uniform float uCircleScale; uniform vec2 uViewport; uniform sampler2D uVideo; uniform sampler2D uImage; varying vec2 vUv; // 以下のサイトにあるavener.glslのノイズを使い、ノイズを生成する。 // https://gist.github.com/akella/330b3caec2b68bb7f4534dae5918c0e9 mat2 rot2d (in float angle) { return mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); } float r (in float a, in float b) { return fract(sin(dot(vec2(a,b),vec2(12.9898,78.233)))*43758.5453); } float h (in float a) { return fract(sin(dot(a,dot(12.9898,78.233)))*43758.5453); } float noise (in vec3 x) { vec3 p = floor(x); vec3 f = fract(x); f = f*f*(3.0-2.0*f); float n = p.x + p.y*57.0 + 113.0*p.z; return mix(mix(mix( h(n+0.0), h(n+1.0),f.x), mix( h(n+57.0), h(n+58.0),f.x),f.y), mix(mix( h(n+113.0), h(n+114.0),f.x), mix( h(n+170.0), h(n+171.0),f.x),f.y),f.z); } // http://www.iquilezles.org/www/articles/morenoise/morenoise.htm // http://www.pouet.net/topic.php?post=401468 vec3 dnoise2f (in vec2 p) { float i = floor(p.x), j = floor(p.y); float u = p.x-i, v = p.y-j; float du = 30.*u*u*(u*(u-2.)+1.); float dv = 30.*v*v*(v*(v-2.)+1.); u=u*u*u*(u*(u*6.-15.)+10.); v=v*v*v*(v*(v*6.-15.)+10.); float a = r(i, j ); float b = r(i+1.0, j ); float c = r.........完整代码请登录后点击上方下载按钮下载查看
网友评论0