Tulisannya menarik, tetapi bagian diagram yang menggambarkan OpenGL / WebGL / WebGPU seolah dibangun di atas Vulkan adalah penjelasan yang keliru
WebGL dan WebGPU berjalan langsung di atas D3D dan Metal tanpa melalui Vulkan
Selain itu, Vulkan bukan open source melainkan sebuah standar
WebGPU juga tidak terbatas pada browser, melainkan tersedia sebagai library Dawn untuk C++ dan WGPU untuk Rust, sehingga dapat berjalan di Windows, macOS, Linux, iOS, Android, dan lainnya
Vulkan memang berjalan di sedikit lebih banyak platform dibanding DirectX, tetapi tidak termasuk dalam konfigurasi bawaan Windows, dan tidak berjalan di macOS maupun iOS
Saya juga ingin menambahkan bahwa Vulkan bukan open source, melainkan standar terbuka
Implementasi nyatanya ditangani oleh masing-masing vendor hardware, dan Vulkan pada dasarnya hanyalah file header
Selain itu, Vulkan juga berjalan dengan baik di platform Apple melalui lapisan translasi Vulkan-to-Metal seperti MoltenVK atau KosmicKrisp
Vulkan memang tidak sepenuhnya lintas platform, tetapi cakupannya jauh lebih luas daripada DirectX
DirectX digunakan di Windows dan Xbox, sementara Vulkan tersedia di Linux, Android, Windows, Nintendo Switch, Switch 2, dan lainnya
Perlu disebutkan bahwa WebGPU adalah API terpadu yang berada di atas API native tiap platform (DirectX, Vulkan, Metal)
API Khronos memiliki sangat banyak fitur ekstensi, tetapi sebagian bersifat proprietari sehingga portabilitasnya rendah
PlayStation tidak mendukung Vulkan, dan di Switch, NVN lebih umum dipakai daripada OpenGL/Vulkan
Fakta bahwa Vulkan berjalan di Windows saja sudah membuatnya terasa lebih umum dibanding DirectX
Bahwa Vulkan tidak berjalan di sebagian lingkungan Linux VNC bukanlah kasus yang umum
Sebagian besar pengguna mendapat dukungan Vulkan melalui driver GPU mereka
Kualitas kursus di situs ini mengejutkan
Kalau bukunya dijual meski dalam bentuk pre-order, saya rasanya ingin mendukung proyek ini
Saya mengikuti sejak tulisan pertamanya, dan setiap artikel terasa makin mengesankan
Kalau ingin bereksperimen dengan shader, saya merekomendasikan IDE berikut
shadertoy – berbasis browser, paling mudah dan paling populer
Shadron – usability-nya bagus dan secara pribadi saya lebih suka, meski agak niche
SHADERed – perlu waktu untuk terbiasa dengan UX-nya, tetapi fiturnya sudah memadai
KodeLife – pernah dengar, tetapi belum pernah saya coba sendiri
Cables(cables.gl) juga cukup keren
Ada karya-karya yang mengesankan dari Kirell Benzi
Saya menemukan wgshadertoy di software manager milik Mint
Mendukung berbagai platform seperti flatpak, AUR, macports, Windows, dan lainnya
Di macOS atau iPadOS, Playgrounds bisa jadi cara mudah untuk mulai memakai shader Metal
Ada juga Bonzomatic yang dipakai untuk kompetisi live coding shader di demoscene
Pada akhirnya, pemrograman adalah proses menerjemahkan apa yang dipahami manusia agar bisa dipahami komputer
Namun pemrograman GPU tingkat kesulitannya jauh lebih tinggi
Begitu banyak jebakan, ketidakselarasan antara hardware/software, kurangnya alat debugging, dan sebagainya membuat pengalaman pengembangannya sangat buruk
Disayangkan juga komunitas tampak kurang punya kemauan untuk memperbaiki masalah ini
OpenGL dan DirectX versi sebelum 12 adalah upaya untuk mengabstraksikan detail hardware, tetapi pada akhirnya abstraksi itu justru merugikan
Saat menulis fragment shader, bagian yang paling tidak intuitif adalah konsep menerima koordinat lalu mengeluarkan warna
Tidak seperti menggambar dengan pena, shader menentukan warna dengan menghitung posisi tiap piksel
Kita perlu berpikir dengan cara memanipulasi ruang, bukan memindahkan objek
Vertex shader terasa lebih alami karena ia mengeluarkan posisi segitiga
Itu terasa tidak intuitif hanya ketika fragment shader disalahgunakan
Sebenarnya ia menangani tahap terakhir dalam pipeline rendering seperti texture sampling dan perhitungan pencahayaan
Dalam PBR atau deferred rendering, kebanyakan shader dipakai bersama, dan hanya efek khusus yang dikustomisasi
Ini seharusnya dilihat bukan sebagai masalah shader itu sendiri, melainkan perbedaan antara grafis raster vs vektor
Shading bukan menggambar garis luar, melainkan proses merepresentasikan material berbasis fisika
Lukisan lebih dekat ke shading, sedangkan gambar pena tidak demikian
Menggunakan fragment shader untuk menggambar persegi panjang adalah pendekatan yang keliru
Shader dipakai untuk memberi bayangan/shading pada persegi panjang itu
Pada praktiknya, vertex shader mendefinisikan batas, lalu fragment shader mengisi bagian dalamnya
Untuk tujuan edukasi, vertex shader kadang dihilangkan dan seluruh layar diisi dengan fragment shader
Saat mempelajari kode GPU, bagian tersulit adalah pengaturan awal yang rumit dan sulit dipahami
Konsep seperti format data, urutan transformasi, batas CPU-GPU, dan dokumentasi yang minim membuatnya sulit
Sistem variabel global pada GPU juga membingungkan
Sebagian dari pertanyaan itu lebih berkaitan dengan desain API daripada GPU itu sendiri
GPU memakai struktur SIMT, sehingga konsistensi akses data sangat penting
Transformasi diterapkan secara berurutan di dalam tiap thread, dan batas antara CPU-GPU bisa dilintasi beberapa kali tergantung anggaran performa
Variabel global adalah konsep konstanta yang dikirim sama ke setiap thread, seperti uniform
Di CUDA, akses global dimungkinkan lewat operasi atomic, tetapi performanya turun cukup besar
Kursus pengantar WebGL akan menjadi titik awal yang baik
Tingkat penyelesaian situs ini benar-benar sangat tinggi
Diagram, scrollbar, dan stylenya semuanya luar biasa
Shader muncul lebih dulu daripada GPU, dan juga bisa dijalankan di CPU
Inti GPU adalah model eksekusi SIMT/SIMD, dan shader pada dasarnya adalah konsep fungsi callback
Menurut saya, kesederhanaan dan keanggunan shader datang dari fakta bahwa ia bisa ditulis dengan pola pikir sekuensial yang sama seperti di CPU
Yang особенно mengesankan adalah semua ilustrasinya dibuat dengan Figma
Saya meninggalkan balasan bahwa feedback-nya luar biasa
Karyanya benar-benar indah dan sangat matang
100% setuju. Saya jadi penasaran apakah situs ini adalah aplikasi kustom yang dibuat dengan Next.js
Pekerjaan yang luar biasa. Menontonnya menyenangkan dari awal sampai akhir
Saya merekomendasikan video Iñigo Quilez, “This painting is a mathematical formula”
Video itu menunjukkan dengan baik konsep shader yang mengekspresikan koordinat x dan y tiap piksel sebagai fungsi
1 komentar
Komentar Hacker News
WebGL dan WebGPU berjalan langsung di atas D3D dan Metal tanpa melalui Vulkan
Selain itu, Vulkan bukan open source melainkan sebuah standar
WebGPU juga tidak terbatas pada browser, melainkan tersedia sebagai library Dawn untuk C++ dan WGPU untuk Rust, sehingga dapat berjalan di Windows, macOS, Linux, iOS, Android, dan lainnya Vulkan memang berjalan di sedikit lebih banyak platform dibanding DirectX, tetapi tidak termasuk dalam konfigurasi bawaan Windows, dan tidak berjalan di macOS maupun iOS
Implementasi nyatanya ditangani oleh masing-masing vendor hardware, dan Vulkan pada dasarnya hanyalah file header
Selain itu, Vulkan juga berjalan dengan baik di platform Apple melalui lapisan translasi Vulkan-to-Metal seperti MoltenVK atau KosmicKrisp
DirectX digunakan di Windows dan Xbox, sementara Vulkan tersedia di Linux, Android, Windows, Nintendo Switch, Switch 2, dan lainnya
PlayStation tidak mendukung Vulkan, dan di Switch, NVN lebih umum dipakai daripada OpenGL/Vulkan
Bahwa Vulkan tidak berjalan di sebagian lingkungan Linux VNC bukanlah kasus yang umum
Sebagian besar pengguna mendapat dukungan Vulkan melalui driver GPU mereka
Kalau bukunya dijual meski dalam bentuk pre-order, saya rasanya ingin mendukung proyek ini
Saya mengikuti sejak tulisan pertamanya, dan setiap artikel terasa makin mengesankan
Ada karya-karya yang mengesankan dari Kirell Benzi
Mendukung berbagai platform seperti flatpak, AUR, macports, Windows, dan lainnya
Namun pemrograman GPU tingkat kesulitannya jauh lebih tinggi
Begitu banyak jebakan, ketidakselarasan antara hardware/software, kurangnya alat debugging, dan sebagainya membuat pengalaman pengembangannya sangat buruk
Disayangkan juga komunitas tampak kurang punya kemauan untuk memperbaiki masalah ini
Tidak seperti menggambar dengan pena, shader menentukan warna dengan menghitung posisi tiap piksel
Kita perlu berpikir dengan cara memanipulasi ruang, bukan memindahkan objek
Vertex shader terasa lebih alami karena ia mengeluarkan posisi segitiga
Sebenarnya ia menangani tahap terakhir dalam pipeline rendering seperti texture sampling dan perhitungan pencahayaan
Dalam PBR atau deferred rendering, kebanyakan shader dipakai bersama, dan hanya efek khusus yang dikustomisasi
Shading bukan menggambar garis luar, melainkan proses merepresentasikan material berbasis fisika
Lukisan lebih dekat ke shading, sedangkan gambar pena tidak demikian
Shader dipakai untuk memberi bayangan/shading pada persegi panjang itu
Untuk tujuan edukasi, vertex shader kadang dihilangkan dan seluruh layar diisi dengan fragment shader
Konsep seperti format data, urutan transformasi, batas CPU-GPU, dan dokumentasi yang minim membuatnya sulit
Sistem variabel global pada GPU juga membingungkan
Barebones WebGL in 75 lines,
Barebones 3D rendering with WebGL
Vulkan membutuhkan jauh lebih banyak boilerplate code daripada WebGL
GPU memakai struktur SIMT, sehingga konsistensi akses data sangat penting
Transformasi diterapkan secara berurutan di dalam tiap thread, dan batas antara CPU-GPU bisa dilintasi beberapa kali tergantung anggaran performa
Variabel global adalah konsep konstanta yang dikirim sama ke setiap thread, seperti uniform
Di CUDA, akses global dimungkinkan lewat operasi atomic, tetapi performanya turun cukup besar
Kursus pengantar WebGL akan menjadi titik awal yang baik
Diagram, scrollbar, dan stylenya semuanya luar biasa
Shader muncul lebih dulu daripada GPU, dan juga bisa dijalankan di CPU
Inti GPU adalah model eksekusi SIMT/SIMD, dan shader pada dasarnya adalah konsep fungsi callback
Menurut saya, kesederhanaan dan keanggunan shader datang dari fakta bahwa ia bisa ditulis dengan pola pikir sekuensial yang sama seperti di CPU
Video itu menunjukkan dengan baik konsep shader yang mengekspresikan koordinat x dan y tiap piksel sebagai fungsi