1 puan yazan GN⁺ 2025-11-24 | 1 yorum | WhatsApp'ta paylaş

1 yorum

 
GN⁺ 2025-11-24
Hacker News görüşleri
  • Yazı ilgi çekiciydi, ancak diyagramda OpenGL / WebGL / WebGPU sanki Vulkan’ın üzerine kurulmuş gibi gösterilmiş; bu yanlış bir anlatım
    WebGL ve WebGPU, Vulkan’dan geçmeden doğrudan D3D ve Metal üzerinde çalışır
    Ayrıca Vulkan açık kaynak değil, bir standarttır
    WebGPU yalnızca tarayıcılarla sınırlı değildir; C++ için Dawn, Rust için WGPU kütüphaneleriyle de sunulur ve Windows, macOS, Linux, iOS, Android gibi platformlarda çalışabilir
    Vulkan, DirectX’ten biraz daha fazla platformda çalışsa da Windows’un varsayılan kurulumunda yer almaz ve macOS ya da iOS’ta çalışmaz
    • Vulkan’ın açık kaynak değil, açık standart olduğunu eklemek isterim
      Gerçek uygulamaları her donanım üreticisi kendisi sağlar; Vulkan aslında sadece başlık dosyalarından ibarettir
      Ayrıca MoltenVK veya KosmicKrisp gibi Vulkan-to-Metal dönüştürme katmanları sayesinde Apple platformlarında da gayet iyi çalışır
    • Vulkan tamamen çapraz platform olmasa da DirectX’e göre çok daha geniş bir alanı destekler
      DirectX, Windows ve Xbox’ta kullanılır; Vulkan ise Linux, Android, Windows, Nintendo Switch, Switch 2 gibi platformlarda kullanılabilir
    • WebGPU’nun, her platformun yerel API’sinin (DirectX, Vulkan, Metal) üzerinde duran birleşik bir API olduğundan bahsetmek gerekir
    • Khronos API’lerinde çok sayıda ek özellik vardır, ancak bazıları özeldir ve taşınabilirliği düşürür
      PlayStation Vulkan’ı desteklemez; Switch’te ise OpenGL/Vulkan yerine çoğunlukla NVN kullanılır
    • Sadece Windows’ta da çalışıyor olması bile Vulkan’ı DirectX’ten daha genel amaçlı yapıyor bence
      Bazı Linux VNC ortamlarında Vulkan’ın çalışmaması genel bir durum değil
      Çoğu kullanıcı GPU sürücüleri sayesinde Vulkan desteği alıyor
  • Bu web sitesindeki kurs kalitesi gerçekten şaşırtıcı
    Kitap ön sipariş şeklinde bile satışa çıksa projeyi desteklemek isterim
    İlk yazıdan beri takip ediyorum; her yeni yazı daha da etkileyici oluyor
  • Shader’ları denemek istiyorsanız şu IDE’leri öneririm
    • shadertoy – tarayıcı tabanlı, en kolay ve en popüler seçenek
    • Shadron – kullanımı güzel, kişisel olarak tercih ediyorum ama biraz niş
    • SHADERed – UX’ine alışmak zaman alıyor ama özellikleri yeterli
    • KodeLife – adını duydum ama bizzat kullanmadım
    • Cables(cables.gl) da oldukça etkileyici
      Kirell Benzi’nin çok etkileyici çalışmaları var
    • Mint’in yazılım yöneticisinde wgshadertoy’u keşfettim
      flatpak, AUR, macports, Windows gibi çeşitli platformları destekliyor
    • macOS veya iPadOS’ta Playgrounds ile Metal shader’larına kolayca başlanabilir
    • Demoscene’de shader canlı kodlama yarışmalarında kullanılan Bonzomatic de var
  • Programlama nihayetinde insanın anladığını bilgisayarın anlayacağı hale çevirme sürecidir
    Ama GPU programlama bunun çok daha zor bir versiyonu
    Sayısız tuzak, donanım/yazılım uyumsuzluğu, yetersiz hata ayıklama araçları gibi nedenlerle geliştirme deneyimi oldukça kötü
    Topluluğun bunu iyileştirme yönünde pek istekli görünmemesi de üzücü
    • OpenGL ve DirectX 12 öncesi sürümler, donanım ayrıntılarını soyutlamaya çalışıyordu; ama sonuçta soyutlama ters etki yarattı
  • Fragment shader yazarken en sezgisel olmayan kısım, koordinat alıp renk üretme fikri
    Kalemle çizim yaparken olduğunun aksine, shader her pikselin konumunu hesaplayıp rengini belirler
    Nesneleri hareket ettirmek yerine uzayı manipüle ederek düşünmek gerekir
    Vertex shader’lar üçgenlerin konumunu ürettiği için daha doğal gelir
    • Sadece fragment shader’ı aşırı kullandığınızda sezgisel gelmez
      Aslında doku örnekleme ve ışık hesaplamaları gibi rendering pipeline’ın son aşamasını üstlenir
      PBR veya deferred rendering’de çoğu ortak shader paylaşılır, yalnızca özel efektler özelleştirilir
    • Bu, shader’ların değil, raster ve vektör grafikler arasındaki farkın meselesi olarak görülmeli
      Shading, kontur çizmek değil, fizik tabanlı malzeme görünümünü ifade etme sürecidir
      Resim yapmak shading’e daha yakındır; kalem çizimi ise değil
    • Bir dikdörtgen çizmek için fragment shader kullanmak yanlış bir yaklaşımdır
      Shader’ın görevi dikdörtgeni gölgelendirmektir (shading)
    • Pratikte sınırları vertex shader tanımlar, fragment shader ise içini doldurur
      Eğitim amaçlı olarak bazen vertex shader atlanır ve tüm ekran fragment shader ile doldurulur
  • GPU kodu öğrenirken en zor kısım ilk kurulumun karmaşık ve anlaşılmaz olması
    Veri formatları, dönüşüm sırası, CPU-GPU sınırı gibi kavramlar zor; dokümantasyon da yetersiz
    GPU’nun global değişken sistemi de kafa karıştırıcı
    • Bende de aynı sorular vardı; WebGL öğrenimi için blog yazıları yazmıştım
      Barebones WebGL in 75 lines,
      Barebones 3D rendering with WebGL
      Vulkan, WebGL’e kıyasla çok daha fazla boilerplate kod gerektirir
    • Soruların bir kısmı GPU’nun kendisinden çok API tasarımıyla ilgili
      GPU, SIMT yapısında olduğu için veri erişiminde tutarlılık önemlidir
      Dönüşümler her thread içinde sıralı biçimde uygulanır; CPU-GPU sınırı da performans bütçesine göre birden fazla kez aşılabilir
      Global değişkenler, uniform gibi her thread’e aynı şekilde aktarılan sabitler olarak düşünülebilir
      CUDA’da atomic işlemlerle global erişim mümkündür ama performans maliyeti yüksektir
      WebGL başlangıç kursu iyi bir çıkış noktası olacaktır
  • Sitenin tamamlanmışlık seviyesi şaşırtıcı derecede yüksek
    Diyagramlar, kaydırma çubuğu, stil; hepsi çok iyi
    Shader’lar GPU’dan önce ortaya çıktı ve CPU’da da çalıştırılabilir
    GPU’nun özü SIMT/SIMD yürütme modelidir; shader ise özünde callback fonksiyonu kavramıdır
    CPU’dakiyle aynı sıralı düşünceyle yazılabilmesi, shader’ların sadeliğini ve zarafetini oluşturuyor diye düşünüyorum
    • Tüm illüstrasyonların Figma ile yapılmış olması özellikle etkileyici
    • Geri bildirimin harika olduğunu belirten bir yanıt bırakıldı
  • Çalışma gerçekten çok güzel ve çok özenli
    • %100 katılıyorum. Acaba bu site Next.js ile yapılmış özel bir uygulama mı diye merak ediyorum
  • Harika iş çıkmış. Baştan sona izlemek çok keyifliydi
  • Iñigo Quilez’in “This painting is a mathematical formula” videosunu öneririm
    Shader’ın her pikselin x, y koordinatlarını bir fonksiyon olarak ifade etme fikrini çok iyi gösteriyor