您现在的位置是:网站首页> 编程资料编程资料
多视角3D逼真HTML5水波动画 HTML5 canvas实现雪花飘落特效HTML5实现波浪滚动起伏动画特效源码HTML5+SVG实现盒子爆炸动画特效源码 HTML5+Canvas实现日期圆形时钟特效源码HTML5实现多视角3D逼真水波动画 HTML5的新特性(1) HTML5 Canvas实现烟花绽放特效HTML5实现Notification API桌面通知功能 多视角3D可旋转的HTML5 Logo动画html5+css3进度条倒计时动画特效代码【推荐】
2021-08-31
1480人已围观
简介 这篇文章主要介绍了多视角3D逼真HTML5水波动画,它的效果非常逼真,水池中的石头在水中沉浮,泛起了一层层水波。同时我们可以拖拽鼠标从不同的视角来浏览水池,3D效果非常不错,感兴趣的小伙伴们可以参考一下
这是一款基于HTML5的3D水波动画特效,它的效果非常逼真,我们可以按“G”键来让水池中的石头上下浮动,按“L”键添加灯光效果,设计相当完美。同时说明一下,这款3D水波动画是基于WebGL渲染技术的,大家可以了解一下WebGL。

HTML代码
XML/HTML Code复制内容到剪贴板
- <img id="tiles" src="tiles.jpg">
- <img id="xneg" src="xneg.jpg">
- <img id="xpos" src="xpos.jpg">
- <img id="ypos" src="ypos.jpg">
- <img id="zneg" src="zneg.jpg">
- <img id="zpos" src="zpos.jpg">
JavaScript代码
JavaScript Code复制内容到剪贴板
- function Water() {
- var vertexShader = '\
- varying vec2 coord;\
- void main() {\
- coord = gl_Vertex.xy * 0.5 + 0.5;\
- gl_Position = vec4(gl_Vertex.xyz, 1.0);\
- }\
- ';
- this.plane = GL.Mesh.plane();
- if (!GL.Texture.canUseFloatingPointTextures()) {
- throw new Error('This demo requires the OES_texture_float extension');
- }
- var filter = GL.Texture.canUseFloatingPointLinearFiltering() ? gl.LINEAR : gl.NEAREST;
- this.textureA = new GL.Texture(256, 256, { type: gl.FLOAT, filter: filter });
- this.textureB = new GL.Texture(256, 256, { type: gl.FLOAT, filter: filter });
- this.dropShader = new GL.Shader(vertexShader, '\
- const float PI = 3.141592653589793;\
- uniform sampler2D texture;\
- uniform vec2 center;\
- uniform float radius;\
- uniform float strength;\
- varying vec2 coord;\
- void main() {\
- /* get vertex info */\
- vec4 info = texture2D(texture, coord);\
- \
- /* add the drop to the height */\
- float drop = max(0.0, 1.0 - length(center * 0.5 + 0.5 - coord) / radius);\
- drop = 0.5 - cos(drop * PI) * 0.5;\
- info.r += drop * strength;\
- \
- gl_FragColor = info;\
- }\
- ');
- this.updateShader = new GL.Shader(vertexShader, '\
- uniform sampler2D texture;\
- uniform vec2 delta;\
- varying vec2 coord;\
- void main() {\
- /* get vertex info */\
- vec4 info = texture2D(texture, coord);\
- \
- /* calculate average neighbor height */\
- vec2 dx = vec2(delta.x, 0.0);\
- vec2 dy = vec2(0.0, delta.y);\
- float average = (\
- texture2D(texture, coord - dx).r +\
- texture2D(texture, coord - dy).r +\
- texture2D(texture, coord + dx).r +\
- texture2D(texture, coord + dy).r\
- ) * 0.25;\
- \
- /* change the velocity to move toward the average */\
- info.g += (average - info.r) * 2.0;\
- \
- /* attenuate the velocity a little so waves do not last forever */\
- info.g *= 0.995;\
- \
- /* move the vertex along the velocity */\
- info.r += info.g;\
- \
- gl_FragColor = info;\
- }\
- ');
- this.normalShader = new GL.Shader(vertexShader, '\
- uniform sampler2D texture;\
- uniform vec2 delta;\
- varying vec2 coord;\
- void main() {\
- /* get vertex info */\
- vec4 info = texture2D(texture, coord);\
- \
- /* update the normal */\
- vec3 dx = vec3(delta.x, texture2D(texture, vec2(coord.x + delta.x, coord.y)).r - info.r, 0.0);\
- vec3 dy = vec3(0.0, texture2D(texture, vec2(coord.x, coord.y + delta.y)).r - info.r, delta.y);\
- info.ba = normalize(cross(dy, dx)).xz;\
- \
- gl_FragColor = info;\
- }\
- ');
- this.sphereShader = new GL.Shader(vertexShader, '\
- uniform sampler2D texture;\
- uniform vec3 oldCenter;\
- uniform vec3 newCenter;\
- uniform float radius;\
- varying vec2 coord;\
- \
- float volumeInSphere(vec3 center) {\
- vec3 toCenter = vec3(coord.x * 2.0 - 1.0, 0.0, coord.y * 2.0 - 1.0) -
相关内容
- HTML5的新特性(1) HTML5表单新特征简介与举例 WORD版HTML5新特性之用SVG绘制微信logo HTML5有哪些新特征HTML中文件上传时使用的<input type="file">元素的样式自定义文件上传input file简便美化方案(css)upfile asp文件上传 又一奇迹般的突破用Jquery实现大文件上传 Jquery Large File Upload v10.31.0ASP.NET FileUpload 文件上传控件HTML5新特性之type=file文件上传功能
- HTML5 Canvas实现烟花绽放特效实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码canvas烟花特效锦集
- 多视角3D可旋转的HTML5 Logo动画HTML5 canvas实现雪花飘落特效HTML5实现波浪滚动起伏动画特效源码HTML5+SVG实现盒子爆炸动画特效源码 HTML5+Canvas实现日期圆形时钟特效源码HTML5实现多视角3D逼真水波动画 多视角3D逼真HTML5水波动画 HTML5的新特性(1) HTML5 Canvas实现烟花绽放特效HTML5实现Notification API桌面通知功能 html5+css3进度条倒计时动画特效代码【推荐】
- 逼真的HTML5树叶飘落动画html5结合Canvas实现的树叶飘落动画特效源码HTML5实现的树叶飘落动画特效源码基于HTML5+Webkit实现树叶飘落动画
- HTML5+CSS3绘制锯齿状的矩形纯css3绘制的小黄人头像动画特效源码纯css3绘制的QQ企鹅动画特效源码纯css3绘制的精美购物优惠券样式效果源码纯css3绘制的哆啦a梦机器猫头像效果源码CSS3绘制不规则图形的一些方法示例使用HTML和CSS3绘制基本卡通图案的示例分享CSS3绘制圆角矩形的简单示例使用CSS3来绘制一个月食图案用CSS3绘制三角形的简单方法纯CSS3绘制打火机动画火焰效果
- 使用HTML5中的contentEditable来将多行文本自动增高contenteditable元素的placeholder输入提示语设置方法设置contenteditable属性可编辑HTML标签的内容(可代替textarea)当div设置contentEditable=true时,重置其内容后无法光标定位
- 解析HTML5中的新功能本地存储localStorageHTML5 LocalStorage 本地存储详细概括(多图)html5 localStorage本地存储_动力节点Java学院整理localstorage和sessionstorage使用记录(推荐)详解HTML5 LocalStorage 本地存储 html5本地存储 localStorage操作使用详解HTML5 本地存储 LocalStorage详解HTML5中Localstorage的使用教程localStorage的过期时间设置的方法详解
- 实例讲解使用SVG制作loading加载动画的方法基于SVG实现点击按钮loading加载特效源码HTML5 SVG实现的Loading动画加载特效源码
- 移动端HTML5实现文件上传功能【附代码】HTML5 文件上传下载的实例代码HTML5拖拉上传文件的简单实例HTML5应用之文件上传HTML5+WebSocket实现多文件同时上传的实例移动端HTML5实现文件上传html5实现多文件的上传示例代码HTML5拖拽文件到浏览器并实现文件上传下载功能代码HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法HTML5 FormData 方法介绍以及实现文件上传示例
- HTML5触摸事件演化tap事件介绍html5触摸事件判断滑动方向的实现HTML5触摸事件实现移动端简易进度条的实现方法整理HTML5移动端开发的常用触摸事件HTML5触摸事件(touchstart、touchmove和touchend)的实现
点击排行
本栏推荐
