Öncelikle Merhaba Arkadaşlar;
Yaklaşık 3 aydır üzerinde çalıştığım bir projedir şuan %70 lik kısmını tamamladım.Hala zemin Terrain kısımlarını çizdirebilmiş değilim.
Üzerinde çalışıyorum arada kesinlikle wrapper yok saf vulkan RHI.dir
1. Neden Vulkan Tercih Etmeliyiz?
Metin2'nin mevcut grafik motoru (Direct3D 9 / 9Ex), 2000'li yılların başındaki ekran kartı mimarileri için tasarlanmıştı. Günümüz donanımlarında yaşanan FPS düşüşlerinin, kalabalık pazar alanlarındaki anlık takılmaların (stuttering) ana sebebi donanım yetersizliği değil, API (Sürücü) Overhead'idir.
1. Düşük CPU Sürücü Yükü (Reduced CPU Overhead)
DirectX 9, her bir çizim çağrısını (Draw Call) işlemci üzerinden tek bir hatta sürücüye iletir. Ekrandaki oyuncu, pazar, efekt ve nesne sayısı arttıkça CPU sürücü seviyesinde kilitlenir (CPU Bottleneck).- Vulkan Çözümü: Vulkan, donanıma doğrudan (Low-Level) erişim sağlar. Komut listelerini (Command Buffers) sürücüye iletirken işlemciye binen gereksiz yükü kaldırır. Bu sayede özellikle kalabalık alanlarda işlemci kaynaklı FPS çökmeleri minimuma iner.
2. Gelişmiş Bellek Yapılandırması (VRAM / RAM Yönetimi)
Direct3D 9, 32-bit mimarinin getirdiği adresleme sınırları ve eski bellek yönetim mekanizmaları nedeniyle yüksek çözünürlüklü kaplamalarda veya yoğun efekt durumlarında kolayca bellek sızıntısına (Memory Leak) uğrayabilir.- Vulkan Çözümü: Bellek tahsisi (Memory Allocation) doğrudan geliştirici ve API kontrolündedir. Bellek daha efektif kullanılır, GPU VRAM’ine veriler daha hızlı yüklenir.
3. Kararlı Çerçeve Zamanlaması (Frametime & Smoothness)
Metin2'de 120 FPS alsanız dahi oyunun "akıcı hissettirmemesinin" sebebi Frametime (Kare Süresi) dalgalanmalarıdır.- Vulkan Çözümü: Vulkan komut işleme sırasını daha düzenli yönettiği için kareler arası milisaniye farklarını (frametime spikes) düzeltir. Sonuç: Daha pürüzsüz ve takılmasız bir görüntü akışı.
4. Güncel Ekran Kartı Sürücü Desteği
NVIDIA ve AMD, yeni mimari ekran kartlarında (RTX serisi, RX 6000/7000 serisi vb.) DirectX 9 sürücü desteğini (Legacy Driver Support) minimuma indirdi veya tamamen emülasyon katmanlarına devretti.- Vulkan Çözümü: Vulkan, günümüz GPU mimarilerinin yerel olarak tam performansla desteklediği modern bir standarttır. Yeni nesil ekran kartlarında DX9'a kıyasla çok daha stabil çalışır.
Önemli Gerçeklik Notu (Uyarı):Vulkan bir mucize değildir. Metin2'nin çekirdek kodlamasındaki tek çekirdek (Single-Thread) bağımlılığını veya zayıf optimize edilmiş C++ kodlarını sihirli bir şekilde çok çekirdekli hale getirmez. Vulkan'ın yaptığı şey, grafik katmanındaki darboğazı kaldırmak ve var olan sistem kaynağını GPU'ya sıfır kayıpla iletmektir.
Bu Kısımları Çizdirmeyi Başardım Bu kısımlara elene kadar ekrana üçgen bile çizdirmek günlerimi almıştı.
]
Şuan Yaşadığım Problem Ve Üzerinde Çalıştığım Kısım Harita terrain sis ve özel efectlerde problemlerim var katman sayısını arttırmam bunu vulkan tarafında doğru yönlendirmem gerekiyor.
Düzeltme Güncelleme v1.
Direct3D 9 (Dx9Ex) grafik motorundan Vulkan grafik API'sine geçiş sürecinde yaşanan zemin görünmeme), zeminin gökyüzünde ters çıkması, alpha splatting kaplama renk kaymaları, (SkyBox), (Water/Lake) ve gölge rendering problemlerinin tespiti ve çözümü.
[PROBLEM 1] Zemin Render Edilemiyor / Oyun Zemin Tamamen Beyaz Görünüyor
--------------------------------------------------------------------------------
- Neden: Vulkan grafik pipeline'ında Direct3D 9 Clip Space NDC koordinat farkları ($Y$-axis flip) ve `terrain_projected.vert` ile `terrain_2d.frag` shader'larında projeksiyon ve vertex buffer layout uyumsuzluğu.
- Çözüm & Yapılan Değişiklikler:
1-.vert ve .frag shaderları Vulkan standartlarına uygun olarak yeniden hesaplanarak
SPIR-V bayt kodları yeniden derlendi.
Sorun çözüldü.
"Cross-platform" (çapraz platform) yaklaşımı; yazılan kodun minimal değişiklikle veya hiç değişiklik olmadan Windows, Linux, macOS, Android, iOS veya Web gibi farklı işletim sistemlerinde çalışabilmesidir.
Direct3D 9Ex vs. Vulkan Karşılaştırması
| Özellik / Parametre | Direct3D 9Ex | Vulkan |
| Mimari Yaklaşım | Yüksek seviyeli (High-Level), sürücü odaklı yönetim | Düşük seviyeli (Low-Level), donanıma doğrudan erişim |
| CPU Sürücü Yükü (Overhead) | Yüksek. Tek çekirdeğe binen sürücü yükü fazla | Çok Düşük. İşlemci komutları GPU'ya doğrudan iletilir |
| Draw Call Kapasitesi | Sınırlı. Kalabalık alanlarda CPU kilitlenmesine yol açar | Çok Yüksek. Aynı anda binlerce nesneyi daha az yükle çizer |
| Kare Süresi (Frametime) Stabilitesi | Dalgalı. Anlık mikro takılmalara (stuttering) açık | Kararlı. Kare geçiş aralıkları daha düzenli ve pürüzsüz |
| Bellek Yönetimi (VRAM/RAM) | Sürücü kontrolünde, bellek sızıntısına (memory leak) yatkın | Doğrudan API ve uygulama kontrolünde, daha efektif |
| Shader İşleme Mimarisi | Çalışma anında sürücü tarafından dinamik işlenir | Shader Pipeline Cache kullanır (İlk yüklemede kısa süreli drop yapabilir, sonrasında takılmaz) |
| Güncel GPU Sürücü Desteği | Zayıf. NVIDIA/AMD yeni kartlarda DX9 desteğini emülasyona devretti | Tam Destek. Modern GPU mimarilerinin (RTX / RX) yerel standardıdır |
| Çoklu Ekran Kartı (iGPU/dGPU) | Laptoplarda GPU geçişlerinde çökme veya yanlış kartı seçme riski yüksek | dxvk.conf üzerinden istenen GPU doğrudan zorlanabilir |
| Alt-Tab ve Pencere Yönetimi | DX9'a göre daha iyi olsa da tam ekranda kilitlenmelere meyilli | Borderless/Windowed modlarında yüksek stabilite |
Özet: Direct3D 9Ex, donanım ne kadar güçlü olursa olsun oyunun grafik komutlarını tek bir CPU dar boğazından (bottleneck) geçirmeye zorlar. Vulkan ise bu dar boğazı ortadan kaldırarak var olan donanım gücünün GPU'ya kayıpsız aktarılmasını sağlar.
Şuan Yaşadığım Problem Ve Üzerinde Çalıştığım Kısım Harita terrain sis ve özel efectlerde problemlerim var katman sayısını arttırmam bunu vulkan tarafında doğru yönlendirmem gerekiyor.
Kısacası :
Metin2 altyapısını Vulkan API'sine geçirmek, 20 yıllık grafik motorunun günümüz modern ekran kartları ve işlemcileriyle daha stabil, kararlı frametime (kare süresi) değerlerinde çalışmasını sağlar.Bu rehberdeki adımlar donanım seviyesindeki sürücü yükünü (overhead) düşürmeyi hedefler. Ancak unutulmamalıdır ki her sistem kombinasyonu (CPU/GPU/Sürücü sürümü) farklı sonuçlar verebilir.
Bu geçiş sürecinde yaşadığım tüm sorunları geçiş sürecini tek tek kayıt altına alıyorum.
Son düzenleme:
Düzeltme Güncelleme v1.
Direct3D 9 (Dx9Ex) grafik motorundan Vulkan grafik API'sine geçiş sürecinde yaşanan zemin görünmeme), zeminin gökyüzünde ters çıkması, alpha splatting kaplama renk kaymaları, (SkyBox), (Water/Lake) ve gölge rendering problemlerinin tespiti ve çözümü.
[PROBLEM 1] Zemin Render Edilemiyor / Oyun Zemin Tamamen Beyaz Görünüyor
--------------------------------------------------------------------------------
- Neden: Vulkan grafik pipeline'ında Direct3D 9 Clip Space NDC koordinat farkları ($Y$-axis flip) ve `terrain_projected.vert` ile `terrain_2d.frag` shader'larında projeksiyon ve vertex buffer layout uyumsuzluğu.
- Çözüm & Yapılan Değişiklikler:
1-.vert ve .frag shaderları Vulkan standartlarına uygun olarak yeniden hesaplanarak
SPIR-V bayt kodları yeniden derlendi.
Sorun çözüldü.
Direct3D 9 (Dx9Ex) grafik motorundan Vulkan grafik API'sine geçiş sürecinde yaşanan zemin görünmeme), zeminin gökyüzünde ters çıkması, alpha splatting kaplama renk kaymaları, (SkyBox), (Water/Lake) ve gölge rendering problemlerinin tespiti ve çözümü.
[PROBLEM 1] Zemin Render Edilemiyor / Oyun Zemin Tamamen Beyaz Görünüyor
--------------------------------------------------------------------------------
- Neden: Vulkan grafik pipeline'ında Direct3D 9 Clip Space NDC koordinat farkları ($Y$-axis flip) ve `terrain_projected.vert` ile `terrain_2d.frag` shader'larında projeksiyon ve vertex buffer layout uyumsuzluğu.
- Çözüm & Yapılan Değişiklikler:
1-.vert ve .frag shaderları Vulkan standartlarına uygun olarak yeniden hesaplanarak
SPIR-V bayt kodları yeniden derlendi.
Sorun çözüldü.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 1
- Görüntüleme
- 25
- Cevaplar
- 1
- Görüntüleme
- 46
- Cevaplar
- 1
- Görüntüleme
- 21
