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

多視角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)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
免费日本视频一区| 1024亚洲| 欧美午夜精品久久久久久超碰| 极品av少妇一区二区| 久久久久久久999精品视频| 国产视频一区在线观看一区免费| 香蕉久久夜色精品国产使用方法| 国产精品一区二区久久久久| 久久精品国产欧美亚洲人人爽| 黄色一区二区在线| 欧美日韩精品在线观看| 亚洲午夜一区| 国产午夜久久久久| 模特精品在线| 亚洲欧美成人一区二区在线电影| 国产毛片精品视频| 欧美电影免费观看高清完整版| 一本到高清视频免费精品| 欧美性大战久久久久久久| 久久一区亚洲| 99在线视频精品| 国产亚洲欧美一级| 欧美精品网站| 亚洲欧美日韩一区在线| 亚洲国产美女精品久久久久∴| 国产精品久久国产精品99gif | 欧美三日本三级少妇三2023| 欧美一级播放| 日韩视频三区| 亚洲国产高清一区| 国产一区二区三区在线播放免费观看 | 99热在线精品观看| 国产亚洲激情| 欧美午夜精品久久久久久孕妇 | 国产午夜一区二区三区| 欧美伦理91i| 久久九九99| 亚洲欧美另类在线| 亚洲精品欧美日韩专区| 国产免费成人在线视频| 欧美视频一二三区| 欧美精品亚洲二区| 欧美v国产在线一区二区三区| 亚洲欧美日韩综合aⅴ视频| 中文日韩在线视频| 一区二区三区欧美激情| 亚洲欧洲日本国产| 亚洲电影免费观看高清完整版在线观看| 国产精品影音先锋| 国产精品wwwwww| 欧美色大人视频| 欧美精品综合| 欧美日韩精品久久久| 欧美福利视频在线| 欧美成人一品| 欧美极品一区| 欧美色精品在线视频| 欧美日韩精品一区视频| 欧美久久久久久久| 欧美日韩影院| 欧美四级电影网站| 国产精品自拍三区| 国产午夜精品理论片a级探花| 国产一区二区精品久久| 尤物yw午夜国产精品视频| 亚洲高清视频在线观看| 亚洲精品久久在线| 亚洲视频综合在线| 欧美一区视频在线| 免费观看国产成人| 欧美日韩一区二区三区在线| 欧美小视频在线观看| 国产精品三区www17con| 国产乱码精品| 一区二区三区在线观看视频| 亚洲福利av| 亚洲视频你懂的| 久久福利毛片| 欧美激情中文字幕乱码免费| 欧美人成网站| 国产欧美日韩综合一区在线播放| 国产在线国偷精品产拍免费yy| 亚洲国产成人av| 亚洲午夜av在线| 久久国产一区二区三区| 欧美精品免费看| 国产午夜精品美女视频明星a级 | 久久精品国产欧美亚洲人人爽| 久久人91精品久久久久久不卡| 你懂的成人av| 国产精品一二三四区| 在线观看亚洲a| 亚洲综合国产| 免费在线成人| 国产欧美日韩精品专区| 国内精品视频在线观看| 亚洲最黄网站| 久久夜精品va视频免费观看| 欧美三级日本三级少妇99| 激情丁香综合| 亚洲一级黄色| 久久久久久久精| 国产精品黄色在线观看| 激情欧美亚洲| 亚洲欧美视频| 欧美激情国产日韩精品一区18| 欧美午夜一区二区福利视频| 激情五月***国产精品| 一区二区免费看| 欧美成人激情视频免费观看| 国产精品中文字幕欧美| 一级成人国产| 欧美黄色片免费观看| 激情亚洲一区二区三区四区| 亚洲欧美日韩国产一区二区三区 | 国产又爽又黄的激情精品视频| 亚洲国产日韩欧美在线99| 欧美资源在线| 国产农村妇女精品| 亚洲裸体视频| 欧美激情一区二区三区四区| 国产亚洲人成a一在线v站| 亚洲视频二区| 欧美午夜视频在线观看| 91久久久久久国产精品| 久久久综合网站| 国产欧美一区二区精品婷婷| 亚洲性感激情| 欧美日韩精品在线观看| 亚洲肉体裸体xxxx137| 欧美国产日韩一二三区| 亚洲精品乱码久久久久久黑人| 久久久高清一区二区三区| 国产最新精品精品你懂的| 亚洲视频你懂的| 欧美激情视频一区二区三区免费| 亚洲国产欧美在线人成| 欧美成人中文| 亚洲人成在线观看| 久久综合色影院| 亚洲三级电影全部在线观看高清| 欧美黄色免费| 亚洲精品乱码| 欧美精品激情在线| 在线一区日本视频| 欧美日本二区| 亚洲天堂av综合网| 欧美系列精品| 亚洲午夜日本在线观看| 国产精品日本精品| 久久久久久久999精品视频| 亚洲高清免费视频| 欧美日韩福利视频| 香蕉久久夜色精品国产| 黄色亚洲精品| 欧美日韩ab| 欧美影院在线| 亚洲欧洲在线一区| 国产精品家教| 久久久久久一区二区三区| 亚洲人成人一区二区三区| 欧美日韩免费一区| 欧美在线精品免播放器视频| 亚洲电影中文字幕| 国产精品xvideos88| 欧美日韩亚洲一区二| 亚洲视频欧美视频| 国产综合第一页| 欧美日韩卡一卡二| 欧美一级大片在线免费观看| 国户精品久久久久久久久久久不卡| 麻豆精品视频在线观看| 在线视频精品一| 黑人巨大精品欧美一区二区小视频| 欧美大尺度在线观看| 亚洲女性裸体视频| 亚洲久久一区| 伊人久久综合| 国产精品亚洲美女av网站| 欧美成人一区二区在线| 午夜免费日韩视频| 日韩一级在线| 亚洲国产精品999| 国产区欧美区日韩区| 欧美激情精品久久久久久蜜臀| 性做久久久久久久免费看| 亚洲国产成人精品视频| 国产欧美在线播放| 欧美视频精品一区| 欧美精品大片| 女人香蕉久久**毛片精品| 久久丁香综合五月国产三级网站| 欧美日韩一区二区三| 久久久久久亚洲精品不卡4k岛国| 一区二区三区精品国产| 极品日韩久久| 国产在线国偷精品产拍免费yy| 国产精品海角社区在线观看| 欧美久久99| 欧美高清在线视频观看不卡|