Marty5.8 Geliştirme Günlüğü [SHADER]

  • Konuyu açan Konuyu açan benjordi
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 5
  • Gösterim Gösterim 725

benjordi

MT Üye
MT Üye
Mesaj
195
Çözümler
10
Beğeni
371
Puan
784
Ticaret Puanı
0
Merhaba MMO Tutkunları topluluğu!
Bu benim ilk geliştirme günlüğü konum olacak zevk alarak ilerleyeceğimi düşünüyorum.


## 🔄 Yapılan Değişiklikler
​
-Client tarafı DirectX 8'den DirectX 9'a Güncellendi.

### Interface Güncellemeleri
// ESKİ → YENİ
IDirect3D8 → IDirect3D9
IDirect3DDevice8 → IDirect3DDevice9
LPDIRECT3DTEXTURE8 → LPDIRECT3DTEXTURE9
LPDIRECT3DVERTEXBUFFER8 → LPDIRECT3DVERTEXBUFFER9
...ve daha fazlası

### Struct Güncellemeleri
D3DCAPS8 → D3DCAPS9
D3DADAPTER_IDENTIFIER8 → D3DADAPTER_IDENTIFIER9
D3DVIEWPORT8 → D3DVIEWPORT9
...ve daha fazlası

### Fonksiyon Güncellemeleri
Direct3DCreate8(D3D_SDK_VERSION) → Direct3DCreate9(D3D_SDK_VERSION)
...ve daha fazlası

## 🛠️ Karşılaşılan Zorluklar ve Çözümler

### 1. C++17/20 Uyumluluk Uyarıları
- `register` keyword'ü deprecated → Tüm kullanımları kaldırdım
- Enum-float operatörleri deprecated → Explicit cast'ler ekledim
- Daraltma dönüşümleri → Explicit cast'ler ekledim

### 2. Deprecated API'ler
`GetVersionExA` gibi deprecated API'ler için `#pragma warning` kullanarak uyarıları bastırdım.

### 3. Dosyalar
- Tüm istemci kaynak kodlarını her bir dosyayı tek tek analiz ettim ve hataları giderdim.

## ✅ Sonuç
Proje başarıyla DirectX 9'a güncellendi:

- ✅ Tüm modüller güncellendi
- ✅ Derleme hataları çözüldü
- ✅ Derleme uyarıları çözüldü
- ✅ Oyun başarıyla çalışıyor
- ✅ Test edildi ve doğrulandı

m2.webp


## 🚀 Gelecek Planları
- DirectX9Ex sürümüne Güncellenecek
- Performans optimizasyonları
- Modern C++ özelliklerinin kullanımı
- Kod kalitesi iyileştirmeleri
 
↪ StepTimer'a geçildi
StepTimer ile gelen mob hareket animasyon hatası ve ses(yürüme,koşma kayma) hataları giderildi

↪ Fast Loading Kuruldu

↪ DirectX9Ex Geçildi

↪ Asenkron Shader Önbellekleme ve Versiyonlama (Hızlı Shader Yükleme ve şifreleme)
 
Zemin Shader'a aktarıldı

Silinenler:
Genişlet Daralt Kopyala
MapOutdoorRenderSTP.cpp (Bununla ilgili projede ki tüm kullanımlar kaldırıldı)

Yapılanlar:
Genişlet Daralt Kopyala
MapOutdoorWater.cpp ve MapOutdoorRenderHTP.cpp dosyalarında kullanılan,
STATEMANAGER bağımlılıkları kaldırıldı.

Örnek Kaldırılan STATEMANAGER Çağrıları:
   STATEMANAGER.Set → pDevice->Set
   STATEMANAGER.Get → pDevice->Get

Asenkron Yükleme Fonksiyonları Eklendi:
   void LoadZeminShadersAsync();
   void LoadWaterShadersAsync();


Background Worker Thread:
   - Shader'lar arka planda derleniyor
   - Ana thread bloklanmıyor
   - Thread-safe mutex koruması

Flush Mekanizması:
   void FlushCompiledShaders(int maxCount = 4);

   - Her frame'de maksimum 4 shader işleniyor
   - Yük oluşturmadan yükleme ekranı akıcı çalışıyor

Update Mekanizması:
   void UpdateShaderPointers();

   - Shader pointer'ları otomatik güncelleniyor
   - Render zamanında shader'lar hazır oluyor





1224_005600.webp
 
Son düzenleme:
Geri
Üst