webgl实现三维转轴时钟时间翻转动画效果代码
代码语言:html
所属分类:三维
代码描述:webgl实现三维转轴时钟时间翻转动画效果代码,显示的是当前的时间。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> html { height: 100%; } body { background: #333; overflow: hidden; padding: 0; margin: 0; width: 100%; height: 100%; display: flex; align-items: center; } canvas { height: 100%; width: 100%; } </style> </head> <body translate="no"> <canvas id="canvas"></canvas> <!-- VertexShader code here --> <script id="vertexShader" type="x-shader/x-vertex">#version 300 es precision highp float; in vec4 position; void main() { gl_Position = vec4( position ); } </script> <!-- FragmentShader code here --> <script id="fragmentShader" type="x-shader/x-fragment">#version 300 es #if __VERSION__ < 130 #define TEXTURE2D texture2D #else #define TEXTURE2D texture #endif precision highp float; out vec4 fragColor; uniform vec2 u_resolution; uniform vec4 u_mouse; uniform float u_time; uniform float u_date; #define R u_resolution #define T u_time #define M u_mouse #define PI 3.14159265359 #define PI2 6.28318530718 #define MIN_DIST 1e-4 #define MAX_DIST 50. /** License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License Dial Clock Concept Was kicking this around in my brain to make a clock shader. The math is a little messy and there's some trick logic around the hours to make the dials work. */ // numbers from SDF Shapes float box( in vec2 p, in vec2 b ){ vec2 d = abs(p)-b; return length(max(d,0.))+min(max(d.x,d.y),0.); } float rbox( in vec2 p, in vec2 b, in vec4 r ) { r.xy = (p.x>0.)?r.xy : r.zw; r.x = (p.y>0.)?r.x : r.y; vec2 q = abs(p)-b+r.x; return min(max(q.x,q.y),0.)+length(max(q,0.))-r.x; } const vec4 bz = vec4(.075,.055,.035,.0); const vec4 bo = vec4(.175,.15,.075,.025); const vec2 oa = vec2(.15,.1); // number float get0(vec2 p) { float bt = max( rbox(p,vec2(.15,.175),bz.xxxx), -rbox(p,vec2(.1,.125),bz.zzzz) ); return bt; } float get1(vec2 p) { float bt = box(p,vec2(.025,.175)); return bt; } float get2(vec2 p) { float bt = max( rbox(p-vec2(.0,.075),oa,bz.xxww), -rbox(p-vec2(-.075,.075),vec2(.175,.05),bz.zzww) ); bt = max(bt,-box(p-vec2(-.085,.045),vec2(.08,.08))); float bb = max( rbox(p+vec2(.0,.075),oa,bz.wwxx), -rbox(p+vec2(-.075,.075),vec2(.175,.05),bz.wwzz) ); bb = max(bb,-box(p+vec2(-.085,.045),vec2(.08,.08))); return min(bt,bb); .........完整代码请登录后点击上方下载按钮下载查看
网友评论0