wtc-gl+webgl实现三维阶梯式立方体旋转动画效果代码
代码语言:html
所属分类:三维
代码描述:wtc-gl+webgl实现三维阶梯式立方体旋转动画效果代码
代码标签: wtc-gl webgl 三维 阶梯式 立方体 旋转 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { background: pink; margin: 0; overflow: hidden; } canvas { width: 100vw; height: 100vh; } </style> </head> <body translate="no"> <script type="text/fragment" id="vertShader">#version 300 es in vec3 position; in vec2 uv; in vec3 normal; in mat4 translation; in mat4 inverseTranspose; in float scale; uniform mat4 u_viewMatrix; uniform mat4 u_modelMatrix; uniform mat4 u_modelViewMatrix; uniform mat4 u_projectionMatrix; uniform mat3 u_normalMatrix; uniform float u_time; out vec3 vNormal; out vec3 vPosition; out vec3 vWorldPosition; out vec2 vUV; void main() { vec3 pos = (translation*vec4(scale*position, 1.)).xyz; // vec3 pos = mat3(translation)*(scale*position); vec4 camPos = u_projectionMatrix * u_modelViewMatrix * vec4(pos, 1.0); gl_Position = camPos; vUV = uv; vNormal = (inverseTranspose * vec4(normal,1)).xyz; } </script> <script type="text/fragment" id="fragShader">#version 300 es precision highp float; in vec3 vNormal; in vec2 vUV; in vec4 camPos; in vec3 vPosition; in vec3 vWorldPosition; out vec4 colour; uniform float u_time; // Simplex 2D noise // vec3 permute(vec3 x) { return mod(((x*34.0)+1.0)*x, 289.0); } float snoise(vec2 v){ const vec4 C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439); vec2 i = floor(v + dot(v, C.yy) ); vec2 x0 = v - i + dot(i, C.xx); vec2 i1; i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); vec4 x12 = x0.xyxy + C.xxzz; x12.xy -= i1; i = mod(i, 289.0); vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 )) + i.x + vec3(0.0, i1.x, 1.0 )); vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);.........完整代码请登录后点击上方下载按钮下载查看
网友评论0