html鼠标跟踪特效,HTML5 WebGL带鼠标跟踪的月晕涟漪动画特效
JavaScript
语言:
JaveScriptBabelCoffeeScript
确定
var container = void 0;
var camera = void 0,
scene = void 0,
renderer = void 0;
var uniforms = void 0;
var divisor = 1 / 8;
var textureFraction = 1 / 1;
var newmouse = {
x: 0,
y: 0
};
var loader = new THREE.TextureLoader();
var texture = void 0,
rtTexture = void 0,
rtTexture2 = void 0;
loader.setCrossOrigin("anonymous");
loader.load(
'/uploads/1805/noise.png',
function do_something_with_texture(tex) {
texture = tex;
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.minFilter = THREE.LinearFilter;
init();
animate();
});
function init() {
container = document.getElementById('container');
camera = new THREE.Camera();
camera.position.z = 1;
scene = new THREE.Scene();
var geometry = new THREE.PlaneBufferGeometry(2, 2);
rtTexture = new THREE.WebGLRenderTarget(Math.floor(window.innerWidth * textureFraction), Math.floor(window.innerHeight * textureFraction));
rtTexture2 = new THREE.WebGLRenderTarget(Math.floor(window.innerWidth * textureFraction), Math.floor(window.innerHeight * textureFraction));
uniforms = {
u_time: {
type: "f",
value: 1.0
},
u_resolution: {
type: "v2",
value: new THREE.Vector2()
},
u_noise: {
type: "t",
value: texture
},
u_buffer: {
type: "t",
value: rtTexture.texture
},
u_mouse: {
type: "v2",
value: new THREE.Vector2()
},
u_frame: {
type: "i",
value: -1.
},
u_renderpass: {
type: 'b',
value: false
}
};
var material = new THREE.ShaderMaterial({
uniforms: uniforms,
vertexShader: document.getElementById('vertexShader').textContent,
fragmentShader: document.getElementById('fragmentShader').textContent
});
material.extensions.derivatives = true;
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
container.appendChild(renderer.domElement);
onWindowResize();
window.addEventListener('resize', onWindowResize, false);
document.addEventListener('pointermove', function(e) {
var ratio = window.innerHeight / window.innerWidth;
if (window.innerHeight > window.innerWidth) {
newmouse.x = (e.pageX - window.innerWidth / 2) / window.innerWidth;
newmouse.y = (e.pageY - window.innerHeight / 2) / window.innerHeight * -1 * ratio;
} else {
newmouse.x = (e.pageX - window.innerWidth / 2) / window.innerWidth / ratio;
newmouse.y = (e.pageY - window.innerHeight / 2) / window.innerHeight * -1;
}
e.preventDefault();
});
}
function onWindowResize(event) {
renderer.setSize(window.innerWidth, window.innerHeight);
uniforms.u_resolution.value.x = renderer.domElement.width;
uniforms.u_resolution.value.y = renderer.domElement.height;
rtTexture = new THREE.WebGLRenderTarget(window.innerWidth * textureFraction, window.innerHeight * textureFraction);
rtTexture2 = new THREE.WebGLRenderTarget(window.innerWidth * textureFraction, window.innerHeight * textureFraction);
uniforms.u_frame.value = -1;
}
function animate(delta) {
requestAnimationFrame(animate);
render(delta);
}
var capturer = new CCapture({
verbose: true,
framerate: 60,
// motionBlurFrames: 4,
quality: 90,
format: 'webm',
workersPath: 'js/'
});
var capturing = false;
isCapturing = function isCapturing(val) {
if (val === false && window.capturing === true) {
capturer.stop();
capturer.save();
} else if (val === true && window.capturing === false) {
capturer.start();
}
capturing = val;
};
toggleCapture = function toggleCapture() {
isCapturing(!capturing);
};
window.addEventListener('keyup', function(e) {
if (e.keyCode == 68) toggleCapture();
});
var then = 0;
function renderTexture(delta) {
// let ov = uniforms.u_buff.value;
var odims = uniforms.u_resolution.value.clone();
uniforms.u_resolution.value.x = window.innerWidth * textureFraction;
uniforms.u_resolution.value.y = window.innerHeight * textureFraction;
uniforms.u_buffer.value = rtTexture2.texture;
uniforms.u_renderpass.value = true;
// rtTexture = rtTexture2;
// rtTexture2 = buffer;
window.rtTexture = rtTexture;
renderer.setRenderTarget(rtTexture);
renderer.render(scene, camera, rtTexture, true);
var buffer = rtTexture;
rtTexture = rtTexture2;
rtTexture2 = buffer;
// uniforms.u_buff.value = ov;
uniforms.u_buffer.value = rtTexture.texture;
uniforms.u_resolution.value = odims;
uniforms.u_renderpass.value = false;
}
function render(delta) {
uniforms.u_frame.value++;
uniforms.u_mouse.value.x += (newmouse.x - uniforms.u_mouse.value.x) * divisor;
uniforms.u_mouse.value.y += (newmouse.y - uniforms.u_mouse.value.y) * divisor;
uniforms.u_time.value = delta * 0.0005;
renderer.render(scene, camera);
renderTexture();
if (capturing) {
capturer.capture(renderer.domElement);
}
}
html鼠标跟踪特效,HTML5 WebGL带鼠标跟踪的月晕涟漪动画特效相关推荐
- html5 图片羽化,html5+webgl仿ps羽化笔刷液态动画特效
html5 canvas基于webgl制作的仿ps羽化笔刷液态动画特效,羽化笔刷跟随鼠标移动绘画,很有梦幻效果. 查看演示 下载资源: 5 次 下载资源 下载积分: 20 积分 js代码 attrib ...
- html进度条圆圈渐变色,HTML5 canvas带渐变色的圆形进度条动画
jquery-circle-progress是一款带渐变色的圆形进度条动画特效jQuery插件.该圆形进度条使用的是HTML5 canvas来绘制圆形进度条及其动画效果,进度条使用渐变色来填充,效果非 ...
- html5 canvas烂漫的空中散落的花瓣动画特效
html5 canvas烂漫的空中散落的花瓣动画特效 作品介绍 1.网页作品简介方面 :html5 canvas烂漫的空中散落的花瓣动画特效 2.网页作品编辑方面:作品下载后可使用任意HTML编辑软件 ...
- 火箭月亮html5游戏,HTML5 svg和CSS3炫酷火箭升空动画特效
这是一款HTML5 svg和CSS3炫酷火箭升空动画特效.该特效的火箭使用SVG来实现,并通过CSS3动画来实现火箭的动画特效. 使用方法 HTML结构 CSS样式 body { background ...
- html画星空,html5 canvas绘制全屏的星空背景动画特效
特效描述:html5 canvas绘制 全屏星空背景 动画特效.html5 canvas背景动画,星空动画.连线区域跟随鼠标移动,外加碰壁检测 代码结构 1. 引入JS 2. HTML代码 var m ...
- html5内容切换特效,html5+jQuery图片和文字内容同时左右切换特效
html5+jQuery图片和文字内容同时左右切换特效,点击图片或者点击左右按钮进行切换,图片转动以及文字内容动画效果切换. 查看演示 下载资源: 22 次 下载资源 下载积分: 20 积分 js代码 ...
- html5 地图效果,html5 echarts图表插件炫光的分布地图动画特效
特效描述:图表插件 炫光的动画 分布地图动画 动画特效.html5地图动画,html5 echarts图表插件 代码结构 1. 引入JS 2. HTML代码 ECharts $('#documen ...
- canvas 形状碰撞_【案例】如何用html5 制作canvas酷炫的网状图形动画特效
点击上方[我分享我快乐]→[...]右上角→[设为星标⭐]即可第一时间获取最新设计资源 哈喽大家好,又到了每周二案例环节啦,在教学开始前先插播一条招聘信息~ 高薪招聘 杭州招聘(非技术) 公司背景: ...
- html网页弹幕特效,jquery仿哔哩哔哩弹幕文字动画特效
特效描述:弹幕文字动画 动画特效,jquery仿B站弹幕,可自由设置字体颜色 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 发送 (function(){ var t=false; ...
- 鼠标移动效果html5,js实现鼠标左右移动,图片也跟着移动效果
效果:鼠标往左移,图片对应右移,鼠标往右移,图片就左移动.图片距离越远偏移距离越大. 思路:首先获取图片原先的距离.设置一个变化值,图片的最终距离等于原先的距离加上变化值 布局:大盒子里面是图片,大盒 ...
最新文章
- mysql 电商项目(一)
- 初创公司面试要问什么_聘请初创公司的产品设计师时要问的问题
- [译]ASP.NET Core 2.0 部分视图
- UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent
- [Flume]使用 Flume 来传递web log 到 hdfs 的例子
- C标准库assert.h实现
- xcode 怎么调用midi开发录音_如何组建个人录音工作室
- 如何删除下一页分节符_word 2010高级应用:分节符的使用
- 力扣报错“AddressSanitizer: heap-buffer-overflow on address...”的解决办法
- 使用python解析C代码
- 致敬 HarmonyOS 不平凡的 2020,热情背后还有多少期待
- 达梦数据库 函数操作
- 数据库开发基础-教案-3-认识数据库备份和事务日志备份
- 怎么制作html静态页面,如何做静态网页
- java 调用关机命令_java调用关机命令
- 联想服务器安装系统鼠标失灵,ThinkPad自行安装操作系统后键盘鼠标失灵怎么办...
- Part 1: 如何把Power BI 嵌入到sharepoint 网站
- R语言作图——violin plot(小提琴图)
- Idea gitflow使用中常见问题及解决方法
- c语言第九章课后作业答案,c语言第九章习题带答案
热门文章
- 令人期待的大戏:千亿百度
- 树莓派 android10,树莓派4使用AndroidTV 10系统
- java调用万网域名接口
- w7计算机文件夹打开怎么设置密码,w7文件夹怎么设密码_w7文件夹设置密码操作方法...
- 人工智能之模式识别(一)
- 解决win7连接不了win10远程桌面
- 清华EMBA课程系列思考之九 -- 中国经济前沿问题解读
- 网站建设中图片使用方法
- 662X芯片,662X三极管,贴片3.3V稳压IC规格书
- Python多项逻辑回归用LogisticRegression识别英文字母数据集letter-recognition.data