- Mesaj
- 562
- Çözümler
- 21
- Beğeni
- 168
- Puan
- 749
- Ticaret Puanı
- 0
Zemini beğenmeyen tek ben miyimÖnceki güncellemeye ek:
Özetle;
- Terraine normal map desteği eklendi.
Öncesi:
28183 eklentisini görüntüle
Sonrası:
28184 eklentisini görüntüle
Zemini beğenmeyen tek ben miyimÖnceki güncellemeye ek:
Özetle;
- Terraine normal map desteği eklendi.
Öncesi:
28183 eklentisini görüntüle
Sonrası:
28184 eklentisini görüntüle
Önceki mesajlarımda da belirttiğim gibi; zemin/objeler/karakterler için uygulanan normal map haritasını rastgele seçtim ve görünümü daha uygun bir şekilde iyileştirmek için C++ tarafında ekstra özelleştirmeler yapmam gerek ve yapacağım da elbet. Şu an çok düzgün ve güzel görünmüyor evet, hem zeminin eski doku olması hem de normal mapin düzensiz uygulanmasının sonucu...Zemini beğenmeyen tek ben miyim
Güncelleme:
- D3DX kütüphanesi artık kullanılmıyor. DirectXTK'ya geçiş yapıldı ve bütün proje baştan sona buna göre düzenlendi.
- GPU Skinning ve eski bufferların kaldırılması sonrası bazı yerlerde darboğaz meydana geliyordu. Mesela 200-300-400 adet NPC ile FPS rahatsız etmeyecek derecedeyken, 60 tane metin taşı FPS'i 18-20'lere kadar düşürüyordu. Bunun sebebi ise metin taşlarının(her bir modelin) karakterlere ve objelere göre çok daha fazla mesh içeriyor olması. Rastgele birleştirilmiş sayıca fazla kağıt parçaları gibi düşünebilirsiniz.
Bu noktada; efektlere, karakterlere, objelere ve textlere varana kadar ciddi optimizasyonlar uygulandı. Daha da ileriye taşınabilir belki, fakat bu yeterli oldu benim için şimdilik. Dx11 girişimi öncesi bu darboğaz olayını çözmem gerekiyordu, şimdi ufaktan upgrade hazırlıklarına girebilirim. En azından denemek için....
Optimizasyon öncesindeki senaryoda:
60 Metin taşı: ~ 20 FPS. (En felaket buydu.)
Optimizasyon sonrası:
100 Metin Taşı: 61 FPS sabit.
200 Metin Taşı: 45 FPS
600 NPC: 40 FPS
1000 NPC: 28 FPS. (Optimizasyon bunları etkilemedi, çünkü önceden zaten sağlam bir temele sahiplerdi.)
Ekim 2025'te bu sonuçlar şu şekildeydi(eski mesajlarımdan):
28941 eklentisini görüntüle
Dipnot: Bu değerler test edilirken efektler ve isimler de aktiftir. Eğer bunlar kapatılırsa FPS bir miktar daha artış gösteriyor.
Ek olarak, test esnasında bütün modeller-efektler-textler tek bir noktada toplu olduğundan olması gerekenden fazla bir düşüş yaşanması normaldir. Gerçek bir senaryoda kamera dışında, arkasında falan kalan modeller, efektler vb. renderdan çıkarılır ve yoğun bir köy ortamı gibi ortamlarda mümkün olduğunca performans sağlanır. Videoda örneği mevcut fakat yinede spoiler içindeki örneğe bakabilirsiniz:
Test videosu
Bende bunları dm kutumda göremedim o ne olacak sayın (şüpheli) adminim.
Dediğimi yap, yaptığımı yapma.
Group DirectionalLight
{
Direction 0.128933 -0.967921 -0.215650
Group Background
{
Enable 1
Diffuse 1.000000 1.000000 1.000000 1.000000
Ambient 4.000000 4.000000 4.000000 1.000000
}
Group Character
{
Enable 1
Diffuse 1.000000 1.000000 1.000000 1.000000
Ambient 0.397059 0.463726 0.459804 1.000000
}
}
Group Material
{
Diffuse 1.000000 1.000000 1.000000 1.000000
Ambient 0.623529 0.584314 0.478431 1.000000
Emissive 0.368627 0.368627 0.368627 1.000000
}
Güncelleme:
- Global aydınlatma sisteminde ufak iyileştirmeler ve düzeltmeler yapıldı.
- Render state yönetimi C++ tarafına taşındı.
- D3DX kütüphanesini bıraktığımı önceki güncellemede söylemiştim, buna ek olarak her ne kadar D3DX kütüphanesine ait olmasalar da;
- D3DCOLOR kullanımı kaldırıldı.
- D3DMATERIAL9 kullanımı kaldırıldı.- Daha önceki güncellemelerde ScreenFilter.cpp ile alakalı düzenlemeler yapmıştım, iptal edildi ve cpp/h projeden kaldırıldı.
- Global MSAA kaldırıldı.
- [Giriş seviyesi] SkyBox'da ciddi değişiklikler yapıldı. Önceden doğal olarak .msenv dosyasındaki değerlerin client tarafından shadera iletilmesi ile çalışan bir mantık vardı. Artık hiçbiri kullanılmıyor, skybox yönetimi tamamen shadera aktarıldı. Elbette shader tarafında da mevcut çalışma mantığı artık yok:
- Eski skybox mantığı tamamen çöpe atıldı.
- Gökyüzüne gerçek bir güneş eklendi. Fakat şu an sadece gökyüzü ile etkileşim halindedir. Biraz bekleyecek...
- Bulutlar için artık packten dosya okuma mantığı (cloud veya 6 texture mod) yok.
- CSkyObject ve CSkyObjectQuad classlar da dahil olmak üzere tamamen kaldırıldı.
- 6 texture/cube desteği kaldırıldı. (statik dokularla işlenen gökyüzü)
- Cloud sky desteği kaldırıldı. (kayan bulutların olduğu varsayılan gökyüzü)
- Bulutların/tüm gökyüzünün kontrolü shaderdan yapılır. C++ veya python bağımlılığı yoktur.
- Başta da belirttiğim gibi giriş seviyesinde bir geliştirmedir, özelleştirmeden ziyade kodları revize ediyorum ve önceliğim hep bu olmuştu.
Yeni düzenleme sonrası gerekli olan .msenv kullanımı şöyledir:
Şimdi de çok gerekleri yok aslında ama duruyorlar öyle.
Kod:Group DirectionalLight { Direction 0.128933 -0.967921 -0.215650 Group Background { Enable 1 Diffuse 1.000000 1.000000 1.000000 1.000000 Ambient 4.000000 4.000000 4.000000 1.000000 } Group Character { Enable 1 Diffuse 1.000000 1.000000 1.000000 1.000000 Ambient 0.397059 0.463726 0.459804 1.000000 } } Group Material { Diffuse 1.000000 1.000000 1.000000 1.000000 Ambient 0.623529 0.584314 0.478431 1.000000 Emissive 0.368627 0.368627 0.368627 1.000000 }
Test için bulutlar hızlandırılmıştır.
yapacaksın rahat olGüncelleme:
- Directx9 cihazına ait tüm reset-kontrol, resources release-create vb. yapıları ve işlemleri kaldırıldı.
- Önceki mesajlarımda state yönetimini C++'ya taşıdığımı söylemiştim, buna ek olarak bu yönetim bütün proje genelinde eski mantıktan arındırılıp Directx 11 yapısına uygun olarak stateless mantığında güncelledim. Yani; artık hiçbir "render" fonksiyonu kendisinden önce / sonra gelen render state ayarlarını bilmez ve tanımaz, her biri ayrı ayrı GPU'ya "benim için bu ayarı kullanacaksın" emri verir. Aynı düzenleme sampler için de uygulandı.
- Son olarak: DirectX 11 port işlemlerine başladım, şu an başlangıç aşamasındayım ve ne kadar ilerleyebileceğim hakkında bir fikrim yok. Directx9'dan sonra 11'in kod mantığı çok garip geliyor.
Şu an için; UI nesnelerini taşımaya çalışıyorum. Henüz kayda değer pek bir şey yok fakat saatler süren siyah ekrandan sonra buraya gelmek de bir şeydir..
29452 eklentisini görüntüle
Güncelleme
- Mimariye olan yabancılıktan ötürü kodlarda ilk başta DX11'e geçirdiğim her bölgede kullanılan dokuları(LPDIRECT3DTEXTURE9 vb.) DX11'in tanıyabileceği formata manuel olarak convert ediyordum, şimdi bunu otomatiğe bağladım ve clientın yüklediği her doku dosyası arkaplanda otomatik olarak convert edilecek ve kullanılabilecek. Mevcut DX9 dokuları ise işlevsiz-çöp olarak duracaklar şimdilik.
- Terrain'in eksikleri büyük oranda giderildi ve normal map desteği ile gölge desteği de beraberinde DX11'e taşınıp araziye giydirildi. Şu an eksiksiz gibi görünüyor. Tam geçişten sonra durum daha net olacaktır.
- Skybox DX11'e taşındı. (Full)
Sırada yapılmayı bekleyen water var, sonrasında dünya sahnesi temel olarak tamamlanmış olacak ve sonra sıra ağaç-obje-efekt vb. gelecek.
benim altyapı yapmaya çalıştığım sv xp kaiserinkiler windows 11 premium platinum pro plus resmen .Güncelleme
- WeaponTrace gibi ufak tefek bölümler tamamen DX11'e taşındı.
- Water ve Reflection DX11'e taşındı. (Ufak düzenlemeleri kaldı, ancak artık hazırlar.)
- MSAA uygulandı.
- Yeni bir shader ile FXAA ekleyip görmeyi denedim ancak diğer tüm oyunlarda olduğu gibi FXAA'yı sevemediğim için burada da hoşuma gitmedi ve geri sildim.
29724 eklentisini görüntüle
29725 eklentisini görüntüle
29726 eklentisini görüntüle
An itibariyle proje temelde tamamen DirectX 11 olmuş durumda. Şu an sadece render target sistemi uyarlama bekliyor. Bunun haricinde DX9 kullanan hiçbir nokta kalmadı. Bu noktadan sonra aşırı bir kod temizliği(dx9'a dair her şey), düzenleme, optimizasyon ve directx11 keşfine doğru yol alacağım. Neyse ki DX9'dayken yaptığım optimizasyonlar bu geçişten etkilenmedi. (100 Metin = 61 FPS sabitliğini koruyor, 200 Metin = 40 FPS)
Son olarak:
29728 eklentisini görüntüle
Güncelleme
Henüz temizlik ve directx 11'i oturtma süreci hala devam ettiğinden bir süre görsel şölen sunamam ama eş zamanlı olarak bazı temel eksikleri gideriyorum ve iyileştiriyorum.
- DX9'dan kalan post process tamamen kaldırıldı ve sıfırdan DX11 tabanlı bir yapı kuruldu.
- Lens Flare tamamen kaldırıldı.
- Gökyüzüne daha önceden eklemiş olduğum güneş yeni post process ile canlandırıldı.
29744 eklentisini görüntüle
29745 eklentisini görüntüle
29746 eklentisini görüntüle
29747 eklentisini görüntüle
[/Lıst]