canvas+webgl实现无尽之门穿越动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas+webgl实现无尽之门穿越动画效果代码,无穷无尽的门空间穿越。

代码标签: canvas webgl 无尽 穿越 动画

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

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
</head>

<body >
  
  
      <script  >
const canvas = document.createElement("canvas");
const gl = canvas.getContext("webgl2");

document.body.innerHTML = "";
document.body.appendChild(canvas);
document.body.style = "margin: 0;overflow: hidden;";
canvas.style.width = "100%";
canvas.style.height = "auto";

const dpr = window.devicePixelRatio;

function resize() {
  const {
    innerWidth: width,
    innerHeight: height } =
  window;

  canvas.width = width * dpr;
  canvas.height = height * dpr;

  gl.viewport(0, 0, width * dpr, height * dpr);
}

window.onresize = resize;

const vertexSource = `#version 300 es
  #ifdef GL_FRAGMENT_PRECISION_HIGH
  precision highp float;
  #else
  precision mediump float;
  #endif

  in vec4 position;

  void main(void) {
    gl_Position = position;
  }
`;

const fragmentSource = `#version 300 es
  /*********
   * made by Matthias Hurrle (@atzedent) 
   */
    #ifdef GL_FRAGMENT_PRECISION_HIGH
    precision highp float;
    #else
    precision mediump float;
    #endif
    
    out vec4 fragColor;
    
    uniform vec2 resolution;
    uniform float time;
    
    #define T time
    #define S smoothstep
    
    float box(vec3 p, vec3 s, float r) {
        p = abs(p)-s;
        return length(max(p,.0))+
            min(.0,max(max(p.x,p.y),p.z))-r;
    }
    
    float map(vec3 p) {
        p.y += sin(p.z*.2-.6)*1.25;
        p.x -= sin(p.z*.125+.05)*4.;
        return -box(p, vec3(1,1.65,20), .05);
    }
    
    void main(void) {
        vec2 uv = (
            gl_FragCoord.xy -.5 * resolution
        ) / min(resolution.x, resolution.y);
        
        vec3 col = vec3(0),
        rd = normalize(vec3(uv,1)),
        p = vec3(1,0,0);
        
        const float steps = 400.;
        
        for (float i=.0; i<ste.........完整代码请登录后点击上方下载按钮下载查看

网友评论0