KaptanYosun'un Shader-Driven Grafik Günlüğü

Kaptan Yosun

Co-Co Admin
Moderatör
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.510
Çözümler
55
Beğeni
2.633
Puan
1.839
Ticaret Puanı
0

KaptanYosun'un Shader-Driven Grafik Günlüğü​

Üzerinde çalıştığım grafik sistemlerini ve bu süreçte edindiğim deneyimleri bu konuda adım adım paylaşacağım.

Şimdiye kadar yaptıklarım:​

HLSL Shader Manager.cpp/h
  • Shader derleme, yükleme ve yönetim süreçleri tek bir merkezden kontrol edilebilecek.
  • Shader'lar D3DDevice ile beraber oluşacak, cache edilecek, her map yüklemesinde yeniden derlenmeyecek, D3DDevice ile beraber yok edilecek.
ShaderVertexDeclarations.[cpp/h]
  • Kolayca ölçeklenebilir ve genişletilebilir olması için class'lara bölündü.
ShaderSettings.h
  • Shader parametrelerinin dağınık yapılardan kurtarılması amacıyla, tüm ayarların merkezi olarak yönetilebildiği bir kontrol merkezidir.
  • Kolayca ölçeklenebilir ve genişletilebilir olması amacıyla namespace'lere ve struct'lara bölündü.
YosunAdminPanel içine bir ImGui Shader Manager yazıldı.
  • Shader'a gönderilen tüm parametreler bu merkezden gerçek zamanlı kontrol edilebilir.
  • Farklı shaderlar kolay yönetim için yan yana sekmelere ayrıldı.
Screenshot 2026-01-31 161537.webp

Gelecek hedefler:​

Su verisine yükseklik (height) bilgisi eklenerek heightmap destekli bir su yüzeyi sistemi oluşturmak.
Su patch’leri başına düşen vertex yoğunluğunu artırarak, daha yüksek detaylı ve daha doğal bir su yüzeyi elde etmek.
Merkezi bir rüzgar sistemi kurup, SpeedTree ve Water shaderlarını ortak rüzgar ile etkileşime sokmak.

Bu günlük ilerledikçe; karşılaşılan problemler, alınan tasarım kararları ve yapılan optimizasyonlar da mümkün olduğunca şeffaf şekilde paylaşılacak.
 
Son düzenleme:
Su ile başlamanın doğru olacağını düşündüm.

  • MapOutdoorWater.cpp, DirectX 9 Fixed Function Pipeline (FFP) bağımlılıklarından tamamen arındırıldı.
    • Su render süreci artık tamamen vertex ve pixel shader’lar üzerinden gerçekleştiriliyor.
  • 30 adet su resmini itere edip suyu animasyonlu gibi gösterme mantığı kaldırıldı.
    • Su artık tek resim kullanıyor.
  • Suyu Z ekseninde yukarı aşağı indirip kaldırarak sahte bir sahil dalga animasyonu yapma mantığı kaldırıldı.
    • Bu çok ilkel bir yöntemdi ve göz tırmalıyordu.
  • Şimdilik prosedürel olarak sine dalgaları kullandım, henüz çok erken bir aşamadayım, heightmap mantığını oluşturana kadar bunu kullanacağım. Sadece Shader'ın çalıştığına dair bir hatırlatıcı olarak.

 
Geri
Üst