中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

多視角3D逼真HTML5水波動(dòng)畫(huà)
來(lái)源:易賢網(wǎng) 閱讀:1454 次 日期:2016-07-07 13:50:54
溫馨提示:易賢網(wǎng)小編為您整理了“多視角3D逼真HTML5水波動(dòng)畫(huà)”,方便廣大網(wǎng)友查閱!

這是一款基于HTML5的3D水波動(dòng)畫(huà)特效,它的效果非常逼真,我們可以按“G”鍵來(lái)讓水池中的石頭上下浮動(dòng),按“L”鍵添加燈光效果,設(shè)計(jì)相當(dāng)完美。同時(shí)說(shuō)明一下,這款3D水波動(dòng)畫(huà)是基于WebGL渲染技術(shù)的,大家可以了解一下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) - center;\  

      float t = length(toCenter) / radius;\  

      float dy = exp(-pow(t * 1.5, 6.0));\  

      float ymin = min(0.0, center.y - dy);\  

      float ymax = min(max(0.0, center.y + dy), ymin + 2.0 * dy);\  

      return (ymax - ymin) * 0.1;\  

    }\  

    \  

    void main() {\  

      /* get vertex info */\  

      vec4 info = texture2D(texture, coord);\  

      \  

      /* add the old volume */\  

      info.r += volumeInSphere(oldCenter);\  

      \  

      /* subtract the new volume */\  

      info.r -= volumeInSphere(newCenter);\  

      \  

      gl_FragColor = info;\  

    }\  

  ');   

}   

Water.prototype.addDrop = function(x, y, radius, strength) {   

  var this_ = this;   

  this.textureB.drawTo(function() {   

    this_.textureA.bind();   

    this_.dropShader.uniforms({   

      center: [x, y],   

      radius: radius,   

      strength: strength   

    }).draw(this_.plane);   

  });   

  this.textureB.swapWith(this.textureA);   

};   

Water.prototype.moveSphere = function(oldCenter, newCenter, radius) {   

  var this_ = this;   

  this.textureB.drawTo(function() {   

    this_.textureA.bind();   

    this_.sphereShader.uniforms({   

      oldCenter: oldCenter,   

      newCenter: newCenter,   

      radius: radius   

    }).draw(this_.plane);   

  });   

  this.textureB.swapWith(this.textureA);   

};   

Water.prototype.stepSimulation = function() {   

  var this_ = this;   

  this.textureB.drawTo(function() {   

    this_.textureA.bind();   

    this_.updateShader.uniforms({   

      delta: [1 / this_.textureA.width, 1 / this_.textureA.height]   

    }).draw(this_.plane);   

  });   

  this.textureB.swapWith(this.textureA);   

};   

Water.prototype.updateNormals = function() {   

  var this_ = this;   

  this.textureB.drawTo(function() {   

    this_.textureA.bind();   

    this_.normalShader.uniforms({   

      delta: [1 / this_.textureA.width, 1 / this_.textureA.height]   

    }).draw(this_.plane);   

  });   

  this.textureB.swapWith(this.textureA);   

};   

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

更多信息請(qǐng)查看網(wǎng)頁(yè)制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:多視角3D逼真HTML5水波動(dòng)畫(huà)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)頁(yè)制作

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产一区亚洲一区| 国产精品亚洲成人| 欧美不卡高清| 国产精品日韩二区| 亚洲欧美日韩中文视频| 国产精品麻豆va在线播放| 99精品国产在热久久婷婷| 欧美精品二区| 亚洲一区二区三区久久| 欧美日韩999| 午夜精品理论片| 国产在线视频欧美| 欧美亚洲专区| 国产精品爱啪在线线免费观看| 亚洲午夜在线视频| 国产精品久久777777毛茸茸| 久久成人免费网| 日韩视频在线播放| 一区二区三区日韩精品视频| 可以看av的网站久久看| 欧美va亚洲va香蕉在线| 亚洲免费成人av电影| 国产视频久久| 欧美99久久| 免播放器亚洲| 欧美一区观看| 欧美亚洲免费高清在线观看| 亚洲国产精品小视频| 国产精品日韩在线一区| 欧美精品色一区二区三区| 麻豆精品在线播放| 免费精品视频| 欧美高清视频一区二区三区在线观看| 欧美在线关看| 久久精品国产成人| 久久精品欧洲| 久久精品免费电影| 久久久久久综合网天天| 久久婷婷成人综合色| 欧美华人在线视频| 久久国产视频网| 亚洲婷婷国产精品电影人久久| 国产日本欧美在线观看| 国产精品毛片| 欧美好骚综合网| 国产精品二区影院| 国产精品亚洲综合天堂夜夜| 国产拍揄自揄精品视频麻豆| 黄色精品一区| 国产亚洲精品久久久| 在线观看精品| 亚洲欧美精品| 欧美久久久久久| 国产精品美腿一区在线看| 国产精品久久久久免费a∨大胸| 欧美日在线观看| 国产精品超碰97尤物18| 亚洲第一二三四五区| 欧美尤物一区| 欧美日韩一区在线观看视频| 国产精品一区二区在线观看| 亚洲国产高清视频| 欧美专区日韩视频| 欧美日本在线观看| 亚洲黄色影片| 免费久久99精品国产| 欧美视频国产精品| 亚洲欧洲一区二区三区在线观看 | 亚洲一区二区在线视频 | 久久久噜噜噜久久久| 国产欧美综合在线| 亚洲精品日韩激情在线电影| 欧美在线视频一区二区| 欧美亚洲第一页| 羞羞色国产精品| 国模大胆一区二区三区| 小黄鸭精品密入口导航| 国产区精品在线观看| 久久精品国产亚洲一区二区三区| 国产欧美日本在线| 久久综合久久综合久久| 亚洲精品欧美日韩专区| 国产精品久久久久一区二区| 亚洲欧美中文日韩在线| 国产一区二区三区高清在线观看| 亚洲综合清纯丝袜自拍| 国产日韩高清一区二区三区在线| 久久久91精品国产一区二区三区| 国产一区在线免费观看| 欧美韩国日本一区| 午夜精品久久久久影视| 亚洲国产婷婷| 国产精品一卡二卡| 久久久国产91| 亚洲欧美日韩区| 亚洲电影毛片| 国产嫩草影院久久久久 | 国产一区二区0| 欧美国产日本| 欧美日本不卡高清| 在线观看中文字幕不卡| 国产精品超碰97尤物18| 欧美日韩中字| 欧美午夜精品理论片a级按摩| 久久久另类综合| 99热精品在线观看| 国产婷婷成人久久av免费高清 | 亚洲一区二区在线| 日韩手机在线导航| 亚洲精品国产精品国自产观看| 欧美偷拍一区二区| 久久婷婷激情| 亚洲自拍偷拍网址| 日韩网站在线观看| 亚洲国产高清自拍| 亚洲人成人一区二区三区| 亚洲丶国产丶欧美一区二区三区| 亚洲成人在线网| 一区二区久久久久| 日韩一级大片| 欧美在线一二三区| 欧美搞黄网站| 欧美视频1区| 国产色综合天天综合网| 国产精品久久久久永久免费观看| 欧美午夜片欧美片在线观看| 老妇喷水一区二区三区| 欧美日韩在线高清| 欧美高清在线视频| 久久精品国产欧美激情| 久久国产精品毛片| 欧美精品九九99久久| 国产一区欧美日韩| 黑人巨大精品欧美一区二区| 在线国产精品播放| 亚洲影视综合| 久久综合给合| 国产精品影音先锋| 亚洲电影在线免费观看| 亚洲小说欧美另类婷婷| 香蕉久久夜色精品国产| 欧美黄免费看| 国产欧美一区二区三区国产幕精品 | 亚洲深夜福利| 久久久天天操| 国产亚洲精品资源在线26u| 亚洲天堂激情| 欧美美女bbbb| 一区二区三区精品| 欧美视频国产精品| 在线视频精品一区| 欧美亚洲第一页| 欧美一区二区三区成人 | 欧美一区二区三区婷婷月色| 国产精品高潮呻吟久久av黑人| 91久久黄色| 欧美成人日本| 亚洲第一在线综合网站| 蜜桃久久精品乱码一区二区| 一区二区三区在线高清| 老色鬼精品视频在线观看播放| 好看的日韩av电影| 欧美高清一区二区| 亚洲一区二区久久| 国产伦精品一区二区三区在线观看 | 欧美日韩免费精品| 日韩午夜在线播放| 欧美久久视频| 亚洲欧美在线播放| 91久久精品国产91久久| 欧美天堂亚洲电影院在线观看| 亚洲最快最全在线视频| 国产精品高清网站| 久久福利电影| 一本色道久久综合| 国内精品国产成人| 国产精品99免视看9| 美日韩精品视频免费看| 一区二区三区**美女毛片| 亚洲午夜久久久久久久久电影院| 欧美日韩免费精品| 亚洲欧美视频在线观看| 91久久午夜| 国产日韩一区二区三区在线播放| 久久午夜精品| 久久夜色精品亚洲噜噜国产mv| 亚洲最新在线视频| 亚洲国内精品在线| 亚洲国产精品久久人人爱蜜臀| 黑人巨大精品欧美一区二区| 国产乱码精品1区2区3区| 欧美成人伊人久久综合网| 欧美精品二区三区四区免费看视频| 欧美在线短视频| 每日更新成人在线视频| 久久久99精品免费观看不卡| 狼狼综合久久久久综合网 | 宅男噜噜噜66一区二区| 一区二区电影免费观看| 欧美亚洲免费在线|