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.title = "🤖";
document.body.innerHTML = "";
document.body.appendChild(canvas);
document.body.style = "margin:0;touch-action:none;overflow:hidden";
canvas.style.width = "100%";
canvas.style.height = "auto";
canvas.style.userSelect = "none";

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

// this particular pixel's color
out vec4 fragColor;

uniform vec2 resolution;
uniform vec2 touch;
uniform int pointerCount;
uniform float time;

#define P pointerCount
#define mouse (touch/resolution)

#define T time
#define S smoothstep

mat2 rot(float a) {
        float s=sin(a), c=cos(a);

        // 2D rotation matrix
        return mat2(c,-s,s,c);
}

float pumpkin(vec3 p.........完整代码请登录后点击上方下载按钮下载查看

网友评论0