cari
Rumahhujung hadapan webTutorial H5Kemahiran tutorial _html5 animasi gelombang air HTML5 realistik 3D berbilang perspektif

Ini ialah kesan khas animasi gelombang air 3D berdasarkan HTML5 Kesannya sangat realistik. Kita boleh menekan kekunci "G" untuk membuat batu dalam kolam terapung ke atas dan ke bawah, dan tekan kekunci "L" untuk. tambah kesan pencahayaan Reka bentuknya cukup sempurna. Pada masa yang sama, sila ambil perhatian bahawa animasi gelombang air 3D ini adalah berdasarkan teknologi pemaparan WebGL Anda boleh belajar tentang WebGL.

Pratonton dalam talian Muat turun kod sumber

Kod HTML

Kod XML/HTMLSalin kandungan ke papan keratan
  1. img id="jubin" src="tiles.jpg">
  2. img id="xneg" src="xneg.jpg">
  3. img id="xpos" src="xpos.jpg">
  4. img id="ypos" src="ypos.jpg">
  5. img id="zneg" src="zneg.jpg">
  6. img id="zpos" src="zpos.jpg">

Kod JavaScript

Kod JavaScriptSalin kandungan ke papan keratan
  1. fungsi Air() {   
  2.   var vertexShader = '  
  3.     pelbagai vec2 coord;  
  4.     kosong utama() {  
  5.       coord = gl_Vertex.xy * 0.5   0.5;  
  6.       gl_Position = vec4(gl_Vertex.xyz, 1.0);  
  7.     }  
  8.   ';   
  9.   ini.plane = GL.Mesh.plane();   
  10.   jika (!GL.Texture.canUseFloatingPointTextures()) {   
  11.     buang baharu Ralat('Demo ini memerlukan tegangan_baharu >);   
  12.   }   
  13.   var penapis = GL.Texture.canUseFloatingPointLinearFiltering() ? gl.LINEAR : gl.NEAREST;   
  14.   ini.textureA = baharu GL.Tekstur(256, 256, { jenis: gl.FLOAT, penapis: penapis });   
  15.   ini.textureB = baharu GL.Tekstur(256, 256, { jenis: gl.FLOAT, penapis: penapis });   
  16.   ini.dropShader = baharu GL.Shader(vertexShader, ' ' > 
  17.     const float PI = 3.141592653589793;  
  18.     tekstur sampler2D seragam;  
  19.     pusat seragam vec2;  
  20.     jejari apungan seragam;  
  21.     kekuatan apungan seragam;  
  22.     pelbagai vec2 coord;  
  23.     kosong utama() {  
  24.       /* dapatkan maklumat puncak */  
  25.       vec4 info = texture2D(texture, coord);  
  26.         
  27.       /* tambahkan kejatuhan ke ketinggian */  
  28.       float drop = maks(0.0, 1.0 - panjang(tengah * 0.5   0.5 - coord) / radius);  
  29.       turun = 0.5 - kos(turun * PI) * 0.5;  
  30.       info.r  = jatuhkan * kekuatan;  
  31.         
  32.       gl_FragColor = maklumat;  
  33.     } 
  34.   ');   
  35.   ini.updateShader = baharu GL.Shader(vertexShader, ' ' > 
  36.     tekstur sampler2D seragam;  
  37.     seragam vec2 delta;  
  38.     pelbagai vec2 coord;  
  39.     kosong utama() {  
  40.       /* dapatkan maklumat puncak */  
  41.       vec4 info = texture2D(texture, coord);  
  42.         
  43.       /* kira purata tinggi jiran */  
  44.       vec2 dx = vec2(delta.x, 0.0);  
  45.       vec2 dy = vec2(0.0, delta.y);  
  46.       purata terapung = (  
  47.         tekstur2D(tekstur, coord - dx).r   
  48.         texture2D(tekstur, coord - dy).r   
  49.         tekstur2D(tekstur, coord   dx).r   
  50.         texture2D(tekstur, coord   dy).r  
  51.       ) * 0.25;  
  52.         
  53.       /* tukar halaju untuk bergerak ke arah purata */  
  54.       info.g  = (purata - info.r) * 2.0;  
  55.         
  56.       /* melemahkan halaju sedikit sehingga gelombang tidak berkekalan selama-lamanya */  
  57.       info.g *= 0.995;  
  58.         
  59.       /* gerakkan pucuk sepanjang halaju */  
  60.       info.r  = info.g;  
  61.         
  62.       gl_FragColor = maklumat;  
  63.     } 
  64.   ');   
  65.   ini.normalShader = baharu GL.Shader(vertexShader, ' ' > 
  66.     tekstur sampler2D seragam;  
  67.     seragam vec2 delta;  
  68.     pelbagai vec2 coord;  
  69.     kosong utama() {  
  70.       /* dapatkan maklumat puncak */  
  71.       vec4 info = texture2D(texture, coord);  
  72.         
  73.       /* kemas kini biasa */  
  74.       vec3 dx = vec3(delta.x, texture2D(texture, vec2(coord.x   delta.x, coord.y)).r - info.r, 0.0);  
  75.       vec3 dy = vec3(0.0, texture2D(texture, vec2(coord.x, coord.y   delta.y)).r - info.r, delta.y);  
  76.       info.ba = normalize(cross(dy, dx)).xz;  
  77.         
  78.       gl_FragColor = maklumat;  
  79.     }  
  80.   ');   
  81.   ini.sphereShader = baharu GL.Shader(vertexShader, ' ' > 
  82.     tekstur sampler2D seragam;  
  83.     seragam vec3 oldCenter;  
  84.     uniform vec3 newCenter;  
  85.     jejari apungan seragam;  
  86.     pelbagai vec2 coord;  
  87.       
  88.     float volumeInSphere(vec3 center) {  
  89.       vec3 toCenter = vec3(coord.x * 2.0 - 1.0, 0.0, coord.y * 2.0 - 1.0) - center;  
  90.       terapung t = panjang(kePusat) / jejari;  
  91.       float dy = exp(-pow(t * 1.5, 6.0));  
  92.       terapung ymin = min(0.0, center.y - dy);  
  93.       float ymax = min(maks(0.0, center.y   dy), ymin   2.0 * dy);  
  94.       pulangan (ymax - ymin) * 0.1;  
  95.     } 
  96.       
  97.     kosong utama() {  
  98.       /* dapatkan maklumat puncak */  
  99.       vec4 info = texture2D(texture, coord);  
  100.         
  101.       /* tambah volum lama */  
  102.       info.r  = volumeInSphere(oldCenter);  
  103.         
  104.       /* tolak jumlah baharu */  
  105.       info.r -= volumeInSphere(newCenter);  
  106.         
  107.       gl_FragColor = maklumat;  
  108.     }  
  109.   ');   
  110. }   
  111.   
  112. Water.prototype.addDrop = fungsi(x, y, jejari, kekuatan) {   
  113.   var ini_ = ini;   
  114.   ini.textureB.drawTo(fungsi() {   
  115.     this_.textureA.bind();   
  116.     this_.dropShader.uniforms({   
  117.       pusat: [x, y],   
  118.       jejari: jejari,   
  119.       kekuatan: kekuatan   
  120.     }).draw(this_.plane);   
  121.   });   
  122.   ini.textureB.swapWith(ini.textureA);   
  123. };   
  124.   
  125. Water.prototype.moveSphere = fungsi(oldCenter, newCenter, radius) {   
  126.   var ini_ = ini;   
  127.   ini.textureB.drawTo(fungsi() {   
  128.     this_.textureA.bind();   
  129.     this_.sphereShader.uniforms({   
  130.       oldCenter: oldCenter,   
  131.       Pusat baharu: Pusat baharu,   
  132.       jejari: jejari   
  133.     }).draw(this_.plane);   
  134.   });   
  135.   ini.textureB.swapWith(ini.textureA);   
  136. };   
  137.   
  138. Water.prototype.stepSimulation = fungsi() {   
  139.   var ini_ = ini;   
  140.   ini.textureB.drawTo(fungsi() {   
  141.     this_.textureA.bind();   
  142.     this_.updateShader.uniforms({   
  143.       delta: [1 / this_.textureA.width, 1 / this_.textureA.height]   
  144.     }).draw(this_.plane);   
  145.   });   
  146.   ini.textureB.swapWith(ini.textureA);   
  147. };   
  148.   
  149. Water.prototype.updateNormals = fungsi() {   
  150.   var ini_ = ini;   
  151.   ini.textureB.drawTo(fungsi() {   
  152.     this_.textureA.bind();   
  153.     ini_.normalShader.uniforms({   
  154.       delta: [1 / this_.textureA.width, 1 / this_.textureA.height]   
  155.     }).draw(this_.plane);   
  156.   });   
  157.   ini.textureB.swapWith(ini.textureA);   
  158. };   

以上就是本文的全部内容,希望对大家的学习有所帮助。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
H5: Ciri dan keupayaan baru untuk Pembangunan WebH5: Ciri dan keupayaan baru untuk Pembangunan WebApr 29, 2025 am 12:07 AM

H5 membawa beberapa fungsi dan keupayaan baru, meningkatkan kecekapan interaktiviti dan pembangunan laman web. 1. Tag semantik seperti meningkatkan SEO. 2. Sokongan multimedia memudahkan main balik audio dan video melalui dan tag. 3. Lukisan kanvas menyediakan alat lukisan grafik dinamik. 4. Penyimpanan Tempatan Memudahkan Penyimpanan Data melalui LocalStorage dan sessionStorage. 5. API Geolokasi memudahkan pembangunan perkhidmatan berasaskan lokasi.

H5: Penambahbaikan utama dalam HTML5H5: Penambahbaikan utama dalam HTML5Apr 28, 2025 am 12:26 AM

HTML5 membawa lima penambahbaikan utama: 1. Tag semantik meningkatkan kejelasan kod dan kesan SEO; 2. Sokongan multimedia memudahkan penyembuhan video dan audio; 3. Peningkatan Borang Memudahkan Pengesahan; 4. Offline dan storan tempatan meningkatkan pengalaman pengguna; 5. Fungsi kanvas dan grafik meningkatkan visualisasi laman web.

HTML5: Standard dan kesannya terhadap pembangunan webHTML5: Standard dan kesannya terhadap pembangunan webApr 27, 2025 am 12:12 AM

Ciri -ciri teras HTML5 termasuk tag semantik, sokongan multimedia, penyimpanan luar talian dan penyimpanan tempatan, dan peningkatan bentuk. 1. Tag semantik seperti, dan lain -lain untuk meningkatkan kebolehbacaan kod dan kesan SEO. 2. Memudahkan penanaman multimedia dengan label. 3. Storan luar talian dan penyimpanan tempatan seperti ApplicationCache dan LocalStorage Sokongan Operasi Bebas Rangkaian dan Penyimpanan Data. 4. Peningkatan Borang Memperkenalkan Jenis Input dan Sifat Pengesahan Baru Untuk Memudahkan Pemprosesan dan Pengesahan.

Contoh Kod H5: Aplikasi Praktikal dan TutorialContoh Kod H5: Aplikasi Praktikal dan TutorialApr 25, 2025 am 12:10 AM

H5 menyediakan pelbagai ciri dan fungsi baru, sangat meningkatkan keupayaan pembangunan front-end. 1. Sokongan Multimedia: Media Media Melalui dan Elemen, Tiada Plug-Ins diperlukan. 2. Kanvas: Gunakan elemen untuk menjadikan grafik dan animasi 2D secara dinamik. 3. Penyimpanan Tempatan: Melaksanakan penyimpanan data berterusan melalui LocalStorage dan sessionStorage untuk meningkatkan pengalaman pengguna.

Sambungan antara H5 dan HTML5: Persamaan dan PerbezaanSambungan antara H5 dan HTML5: Persamaan dan PerbezaanApr 24, 2025 am 12:01 AM

H5 dan HTML5 adalah konsep yang berbeza: HTML5 adalah versi HTML, yang mengandungi unsur -unsur baru dan API; H5 adalah rangka kerja pembangunan aplikasi mudah alih berdasarkan HTML5. HTML5 Parses dan membuat kod melalui pelayar, manakala aplikasi H5 perlu menjalankan bekas dan berinteraksi dengan kod asli melalui JavaScript.

Blok bangunan kod H5: elemen utama dan tujuan merekaBlok bangunan kod H5: elemen utama dan tujuan merekaApr 23, 2025 am 12:09 AM

Unsur -unsur utama HTML5 termasuk ,,,,,, dan lain -lain, yang digunakan untuk membina laman web moden. 1. Tentukan kandungan kepala, 2.

HTML5 dan H5: Memahami Penggunaan BiasaHTML5 dan H5: Memahami Penggunaan BiasaApr 22, 2025 am 12:01 AM

Tidak ada perbezaan antara HTML5 dan H5, iaitu singkatan HTML5. 1.HTML5 adalah versi kelima HTML, yang meningkatkan fungsi multimedia dan interaktif laman web. 2.H5 sering digunakan untuk merujuk kepada laman web atau aplikasi mudah alih berasaskan HTML5, dan sesuai untuk pelbagai peranti mudah alih.

HTML5: Blok Bangunan Web Moden (H5)HTML5: Blok Bangunan Web Moden (H5)Apr 21, 2025 am 12:05 AM

HTML5 adalah versi terkini bahasa markup hiperteks, yang diseragamkan oleh W3C. HTML5 memperkenalkan tag semantik baru, sokongan multimedia dan peningkatan bentuk, meningkatkan struktur web, pengalaman pengguna dan kesan SEO. HTML5 memperkenalkan tag semantik baru, seperti,, dan lain -lain, untuk menjadikan struktur laman web lebih jelas dan kesan SEO lebih baik. HTML5 menyokong elemen multimedia dan tiada pemalam pihak ketiga diperlukan, meningkatkan pengalaman pengguna dan kelajuan memuatkan. HTML5 meningkatkan fungsi bentuk dan memperkenalkan jenis input baru seperti, dan lain -lain, yang meningkatkan pengalaman pengguna dan membentuk kecekapan pengesahan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).