webgl实现跟随鼠标交互的宇宙黑洞效果代码

代码语言:html

所属分类:其他

代码描述:webgl实现跟随鼠标交互的宇宙黑洞效果代码

代码标签: 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