webgl实现跟随鼠标交互的宇宙黑洞效果代码
代码语言:html
所属分类:其他
代码描述:webgl实现跟随鼠标交互的宇宙黑洞效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> html, body { position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px; padding: 0px; //cursor: none; margin: 0px; overflow: hidden; display: flex; height: 100%; width: 100%; background-color: #000; } canvas { margin: auto auto; } </style> </head> <body translate="no"> <script id="2d-fragment-shader" type="x-shader/x-fragment">// <![CDATA[ // Look below at line 23 for realism. #ifdef GL_ES precision mediump float; #endif #define PI 3.14159265359 uniform sampler2D u_image; varying vec2 v_texCoord; uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_mass; uniform float u_time; uniform float u_clickedTime; vec2 rotate(vec2 mt, vec2 st, float angle){ float cos = cos((angle + u_clickedTime) * PI); // try replacing * 1.0 with * PI float sin = sin(angle * 0.0); // try removing the * 0.0 // Uncomment these two lines for realism //float cos = cos(angle) * (u_time * 0.3); //float sin = sin(angle) * (u_time * 0.3); float nx = (cos * (st.x - mt.x)) + (sin * (st.y - mt.y)) + mt.x; float ny = (cos * (st.y - mt.y)) - (sin * (st.x - mt.x)) + mt.y; return vec2(nx, ny); } void main() { vec2 st = vec2(gl_FragCoord.x, u_resolution.y - gl_FragCoord.y)/u_resolution; vec2 mt = vec2(u_mouse.x, u_resolution.y - u_mouse.y)/u_resolution; float dx = st.x - mt.x; float dy = st.y - mt.y; float dist = sqrt(dx * dx + dy * dy); float pu.........完整代码请登录后点击上方下载按钮下载查看
网友评论0