Three.js: Apakah akan ada perender berbasis WebGPU?

Dibuat pada 9 Mar 2019  ·  20Komentar  ·  Sumber: mrdoob/three.js

Saya penasaran Three.js punya rencana untuk mendukung WebGPU. Apa itu mungkin?

Question

Komentar yang paling membantu

Saya dapat meyakinkan Anda bahwa kami tidak akan melupakannya ... 😁

Semua 20 komentar

Secara teoritis di masa depan, tetapi seperti yang Anda ketahui, grup WebGPU masih aktif berbicara / menyelaraskan pembentukan proposal / spesifikasi / draf pertama. Perlu waktu bertahun-tahun sebelum kami memiliki spesifikasi lengkap dan implementasi standar yang berfungsi.

Karena itu, saya akan merekomendasikan untuk terlibat / mengikuti pengembangan WebGPU di sini: https://github.com/gpuweb/gpuweb/wiki dan https://www.w3.org/community/gpu/

Jika WebGPU ternyata sekuat yang kita semua harapkan, perpustakaan seperti Three.js kemungkinan harus ditulis ulang dari awal untuk memanfaatkannya sepenuhnya.

@Tokopedia
Ya saya setuju. Aku akan menjadi masa depan yang jauh.
Apakah tidak mungkin menambahkan perender WebGPU di three.js tanpa menulis ulang inti dari awal? haruskah kita menulis ulang seluruh mesin (API) dalam threejs dari awal? Saya pikir bahkan jika WebGPU keluar, akan sangat mungkin untuk hidup berdampingan bersama (WebGL / WebGPU) untuk sementara waktu. Saya tidak berpikir WebGPU akan membunuh semua ekosistem WebGL.
Namun, saya berasumsi bahwa WebGPU akan sangat kuat jika mendukung secara native & langsung tidak seperti WebGL adalah API tidak langsung dari driver grafis;Dan, Google dan pemain besar lainnya menginginkannya untuk kinerja DeepLearning yang lebih baik dan pengalaman grafis berkinerja tinggi di browser

ThreeJS sudah memiliki banyak perender berbeda - WebGLRenderer, WebGL2Renderer, CSS3DRenderer, SVGRenderer ... WebGPU dapat ditangani dengan cara yang sama, saat API sudah siap. Perubahan yang lebih dalam pada pustaka juga dimungkinkan dari waktu ke waktu.

Menutup masalah ini untuk saat ini, meskipun saya senang API generasi berikutnya ini juga tersedia. :)

@tokopedia
Memang .. Three.js sangat fleksibel sehingga dapat mengimplementasikan bahkan WebGPU di masa mendatang, bukan?

Berdasarkan proposal WebGPU, Mereka menyebutkan tentang Three.js deverlopers sebagai salah satu target audiens utama mereka.

https://gpuweb.github.io/admin/cg-charter.html

Pengembang kerangka kerja JavaScript yang membangun pustaka GPU, dimaksudkan untuk digunakan dalam konten Web, tetapi menyediakan API tingkat yang lebih tinggi dan menyembunyikan banyak grafik tingkat rendah dan detail komputasi dari penggunanya. Misalnya, three.js.

Pertanyaan saya adalah Mereka menggunakan bahasa shader lain yang disebut WHLSL.
https://github.com/gpuweb/WHLSL

Pertanyaan saya adalah Mereka menggunakan bahasa shader lain yang disebut WHLSL.

"Kita akan menyeberangi jembatan itu saat kita sampai di sana."

Diumumkan @ Google I / O dengan dukungan eksperimental di Chrome Canary untuk OSX tersedia sekarang:
https://www.youtube.com/watch?v=K2JzIUIHIhc

Babylon.js telah mengumumkan dukungan penuh untuk itu saat dirilis. Lihat disini:
https://forum.babylonjs.com/t/webgpu-is-coming-to-babylon-js/3122

Saya berharap tim ThreeJS akan mengikuti jejaknya.

Tidak yakin mengapa menutup ini karena disebutkan dukungan potensial. Secara logika, kami membiarkan masalah terbuka untuk "melacak" -nya. Jika Anda menutupnya, Anda lupa tentang ... kecuali ada masalah lain untuk melacaknya.

Saya dapat meyakinkan Anda bahwa kami tidak akan melupakannya ... 😁

Tapi saya bukan pemelihara. Secara pribadi, saya akan mengikuti kerangka pertama yang mengadopsi webgpu. Dan intinya bukan aku. Apakah pesan yang kalian berikan untuk menutup ini. Ini seperti "Hal yang keren, hal yang pasti, tapi saya tidak peduli. Itu bisa bertahan di limbo".

PS. Saya salah membacanya, saya pikir itu adalah "Saya jamin Anda tidak akan melupakannya"

@MichelDiz masalah ini dibuka untuk menanyakan apakah kami berencana mendukung WebGPU. Pertanyaan telah dijawab: kami benar-benar berencana untuk mendukung WebGPU. Mungkin sekarang ini terlalu dini untuk mengerjakannya, tetapi masalah baru akan terbuka ketika kita siap untuk membahas ini.

@TimvanScherpenzeel bagian tertentu yang disarikan dari pengguna harus ditulis ulang tetapi menyarankan agar semuanya harus "ditulis ulang dari awal" adalah pernyataan yang berlebihan. Geometri penyangga akan memiliki format yang sama. Sama seperti WebGL, WebGPU juga didasarkan pada shader GLSL -> WHLSL. Sepertinya format glTF yang telah menjadi standar WebGL juga akan menjadi standar WebGPU. Semua API Three.js yang paling banyak digunakan akan tetap 99% tidak berubah sementara perender WebGPU baru akan berada di bawah tenda dan mudah-mudahan akan membawa peningkatan kinerja yang besar dan membuka potensi rendering adegan besar pada fps tinggi.

Halo semua,
terima kasih banyak atas pembaruan yang satu ini!
Saya hanya ingin berbagi perspektif saya tentang fitur seperti ini. Dalam kasus kami, kami tidak selalu menggunakan WebGL untuk aplikasi konsumen. Kami memiliki pengalaman WebGL yang memvisualisasikan kumpulan data yang sangat besar dengan aset ~ 1GB dan disajikan secara lokal pada perangkat keras tetap tempat kami dapat mengontrol browser dan benderanya untuk mengaktifkan WebGPU. Jadi meskipun dalam mode eksperimental, kami pasti senang mendapat dukungan untuk itu. Saya mengerti bahwa kami adalah minoritas, tetapi saya hanya ingin menambahkan pandangan ini dalam percakapan.

@sinokgr Bagaimana WebGPU membantu menampilkan aset 1GB? Sejauh yang saya pahami, struktur data untuk data geometri sama dengan WebGL.

terima kasih atas balasannya @mrdoob . Sejujurnya 100%, saya tidak akan mengklaim bahwa saya cukup memahami perbedaannya dan informasi yang saya temukan online sangat kabur (menurut penelitian saya). Perasaan utama yang saya dapatkan adalah dari hal-hal yang saya baca seperti pesan terakhir dari @DVLP yang Anda sukai,

akan membawa peningkatan kinerja yang besar dan membuka potensi rendering adegan besar dengan fps tinggi.

yang membuat saya berpikir bahwa kita akan melihat setidaknya beberapa peningkatan. Ini mungkin, seberapa cepat misalnya aset ini akan dimuat, fps yang lebih baik mungkin? Saya tidak yakin.

Pemuatan awal ke memori biasa akan tetap sama tetapi seluruh API GPU akan lebih cepat sehingga dari saat GPU terlibat, itu akan lebih cepat. Begini cara saya melihat dari mana datangnya peningkatan kinerja:

  1. Muat file model ke browser - kecepatan yang sama
  2. Model parsing dan beban geometri ke buffer array - kecepatan yang sama
  3. Muat program GPU - lebih cepat
  4. Memuat tekstur - awalnya dengan kecepatan yang sama tetapi lebih cepat saat diserahkan ke GPU
  5. Transfer geometri ke GPU - lebih cepat
  6. Lakukan serangkaian panggilan gambar untuk membuat bingkai - lebih cepat

Terima kasih banyak atas penjelasannya @DVLP . Poin 5 dan 6 terdengar sangat menarik bagi saya karena kami memiliki ribuan objek dengan banyak bahan.

Mungkin butuh waktu lama sampai WebGPU diadopsi secara luas. Sampai saat itu Anda dapat mempercepat semuanya menggunakan instancing mesh
https://threejs.org/docs/#api/en/objects/InstancedMesh

Saya khawatir kami tidak dapat menggunakan instancing, semua objek @DVLP unik

Apakah halaman ini membantu?
0 / 5 - 0 peringkat