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带鼠标跟踪的月晕涟漪动画特效相关推荐

  1. html5 图片羽化,html5+webgl仿ps羽化笔刷液态动画特效

    html5 canvas基于webgl制作的仿ps羽化笔刷液态动画特效,羽化笔刷跟随鼠标移动绘画,很有梦幻效果. 查看演示 下载资源: 5 次 下载资源 下载积分: 20 积分 js代码 attrib ...

  2. html进度条圆圈渐变色,HTML5 canvas带渐变色的圆形进度条动画

    jquery-circle-progress是一款带渐变色的圆形进度条动画特效jQuery插件.该圆形进度条使用的是HTML5 canvas来绘制圆形进度条及其动画效果,进度条使用渐变色来填充,效果非 ...

  3. html5 canvas烂漫的空中散落的花瓣动画特效

    html5 canvas烂漫的空中散落的花瓣动画特效 作品介绍 1.网页作品简介方面 :html5 canvas烂漫的空中散落的花瓣动画特效 2.网页作品编辑方面:作品下载后可使用任意HTML编辑软件 ...

  4. 火箭月亮html5游戏,HTML5 svg和CSS3炫酷火箭升空动画特效

    这是一款HTML5 svg和CSS3炫酷火箭升空动画特效.该特效的火箭使用SVG来实现,并通过CSS3动画来实现火箭的动画特效. 使用方法 HTML结构 CSS样式 body { background ...

  5. html画星空,html5 canvas绘制全屏的星空背景动画特效

    特效描述:html5 canvas绘制 全屏星空背景 动画特效.html5 canvas背景动画,星空动画.连线区域跟随鼠标移动,外加碰壁检测 代码结构 1. 引入JS 2. HTML代码 var m ...

  6. html5内容切换特效,html5+jQuery图片和文字内容同时左右切换特效

    html5+jQuery图片和文字内容同时左右切换特效,点击图片或者点击左右按钮进行切换,图片转动以及文字内容动画效果切换. 查看演示 下载资源: 22 次 下载资源 下载积分: 20 积分 js代码 ...

  7. html5 地图效果,html5 echarts图表插件炫光的分布地图动画特效

    特效描述:图表插件 炫光的动画 分布地图动画 动画特效.html5地图动画,html5 echarts图表插件 代码结构 1. 引入JS 2. HTML代码  ECharts $('#documen ...

  8. canvas 形状碰撞_【案例】如何用html5 制作canvas酷炫的网状图形动画特效

    点击上方[我分享我快乐]→[...]右上角→[设为星标⭐]即可第一时间获取最新设计资源 哈喽大家好,又到了每周二案例环节啦,在教学开始前先插播一条招聘信息~ 高薪招聘 杭州招聘(非技术) 公司背景: ...

  9. html网页弹幕特效,jquery仿哔哩哔哩弹幕文字动画特效

    特效描述:弹幕文字动画 动画特效,jquery仿B站弹幕,可自由设置字体颜色 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 发送 (function(){ var t=false; ...

  10. 鼠标移动效果html5,js实现鼠标左右移动,图片也跟着移动效果

    效果:鼠标往左移,图片对应右移,鼠标往右移,图片就左移动.图片距离越远偏移距离越大. 思路:首先获取图片原先的距离.设置一个变化值,图片的最终距离等于原先的距离加上变化值 布局:大盒子里面是图片,大盒 ...

最新文章

  1. mysql 电商项目(一)
  2. 初创公司面试要问什么_聘请初创公司的产品设计师时要问的问题
  3. [译]ASP.NET Core 2.0 部分视图
  4. UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent
  5. [Flume]使用 Flume 来传递web log 到 hdfs 的例子
  6. C标准库assert.h实现
  7. xcode 怎么调用midi开发录音_如何组建个人录音工作室
  8. 如何删除下一页分节符_word 2010高级应用:分节符的使用
  9. 力扣报错“AddressSanitizer: heap-buffer-overflow on address...”的解决办法
  10. 使用python解析C代码
  11. 致敬 HarmonyOS 不平凡的 2020,热情背后还有多少期待
  12. 达梦数据库 函数操作
  13. 数据库开发基础-教案-3-认识数据库备份和事务日志备份
  14. 怎么制作html静态页面,如何做静态网页
  15. java 调用关机命令_java调用关机命令
  16. 联想服务器安装系统鼠标失灵,ThinkPad自行安装操作系统后键盘鼠标失灵怎么办...
  17. Part 1: 如何把Power BI 嵌入到sharepoint 网站
  18. R语言作图——violin plot(小提琴图)
  19. Idea gitflow使用中常见问题及解决方法
  20. c语言第九章课后作业答案,c语言第九章习题带答案

热门文章

  1. 令人期待的大戏:千亿百度
  2. 树莓派 android10,树莓派4使用AndroidTV 10系统
  3. java调用万网域名接口
  4. w7计算机文件夹打开怎么设置密码,w7文件夹怎么设密码_w7文件夹设置密码操作方法...
  5. 人工智能之模式识别(一)
  6. 解决win7连接不了win10远程桌面
  7. 清华EMBA课程系列思考之九 -- 中国经济前沿问题解读
  8. 网站建设中图片使用方法
  9. 662X芯片,662X三极管,贴片3.3V稳压IC规格书
  10. Python多项逻辑回归用LogisticRegression识别英文字母数据集letter-recognition.data