Kaiser Graphic | Changelog

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 133
  • Gösterim Gösterim 10K
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Zemini beğenmeyen tek ben miyim
Ö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...

Bu tarz şeyleri düzeltmek basit ancak zaman alan şeyler olduğundan erteliyorum, önceliğimi her zaman zor olan noktalara veriyorum. Zor olanlar bittiğinde bu gibi şeyleri çok daha seri ve rahat iyileştireceğim ve özelleştireceğim. Normal map'i uygulamak da bu zorluklardan biriydi..
 
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):
    Ekran görüntüsü 2026-02-02 165033.webp

    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:

    Tam sahne
    Ekran görüntüsü 2026-02-02 170803.webp

    İçeride/farklı konum
    Ekran görüntüsü 2026-02-02 170836.webp

    Test videosu

 
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.
 
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:
    Genişlet Daralt Kopyala
    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
    }

    Ekran görüntüsü 2026-02-14 230714.webp

    Ekran görüntüsü 2026-02-14 230743.webp
    Test için bulutlar hızlandırılmıştır.
 
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:
    Genişlet Daralt Kopyala
    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.

Çeliğin kollarını hurdacıya mı verdin?
 
Güncelleme:
  • Karakter seçme/oluşturma ekranında merkezi yapıdan ayrı olan aydınlatma mantığı kaldırıldı.
  • SetGameRenderState mantığı kaldırıldı.
  • SetInterfaceRenderState mantığı kaldırıldı.
  • EterImageLib projesi komple kaldırıldı.
  • Textler için pixel iyileştirmesi uygulandı.
    Ekran görüntüsü 2026-02-23 194323.webp
  • Mevcut shaderların tamamı ve shader manager kaldırıldı. Bütün shaderlar HLSL'ye dönüştürüldü ve yeni-multiple bir manager kuruldu.
  • Directx11 için temel motor dosyaları oluşturuldu. Şu an projenin geri kalanından tamamen bağımsız çalışıyor doğal olarak. Test amacıyla sadece basit bir shader ile üçgen çizdirdim şimdilik. (Videodaki titremenin nedeni: Directx9 ile aynı anda çizim yaptıklarından dolayı birbirlerini eziyorlar.)


    Bu noktadan sonra artık projeyi yavaş yavaş directx11 tarafına taşımaya çalışacağım. Bu ne kadar mümkün olur hep birlikte zamanla görecez..
    F9w-8VRW4AAqO-p.webp
 
Gü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..

    Ekran görüntüsü 2026-02-28 190127.webp


    3 Saat sonra gelen edit:
    Ekran görüntüsü 2026-02-28 212705.webp
 
Gü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
yapacaksın rahat ol
 
Güncelleme:
DX11 altyapısını kurduktan sonra büyük bir iş yükü ile karşı karşıya kaldım (doğal olarak.)
O da elbette oyundaki bütün nesneleri,objeleri vb. cerrahi operasyon gibi tek tek directx11'e güncellemek ve sıfırdan inşa etmek. Herhangi bir wrapper/API vb. desteği kullanmadığım için bu geçişin bu derece zor ve uzun sürecek olması gayet anlaşılabilir.
DX9 sonrası DX11 mimarisi çok farklı geldiğinden henüz alışma sürecindeyim ve ayrıca çok vakit ayıramadığımdan ister istemez daha yavaş ilerliyor. Ama kendimce bir ilerleme planı hazırladım, bakalım bundan sonrası hayırlısı..
  • Textler C++ ve HLSL tarafında DX11'e taşındı. (Full)
  • Terrain C++ ve HLSL tarafında DX11'e taşındı. (Basic)
  • State cache eklendi.
Ekran görüntüsü 2026-03-11 135751.webp

Ekran görüntüsü 2026-03-11 150758.webp
 
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.
 
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.

unityde ilk gün mapi import edince böyle duruyodu
 
Güncelleme

Sırada water var demiştim ama water biraz beklemek zorunda kalacak. Çünkü suyun reflection olduğunu unuttum, bu sebeple öncesinde ağaçlar,objeler vb. uyarlamam gerekecek. En son water..

  • Objeler + Shadow DX11'e taşındı.
  • Karakterler + Shadow DX11'e taşındı. (Ufak tefek eksikleri kaldı.)
  • GPU Skinning DX11'e uyarlandı.
    Ekran görüntüsü 2026-03-14 214040.webp

    Ekran görüntüsü 2026-03-14 214303.webp
 
Şu adamdaki grafik işinin yarısı bende olsa yeter be :D benim altyapı yapmaya çalıştığım sv xp kaiserinkiler windows 11 premium platinum pro plus resmen .
 
Güncelleme
  • Arazi/terrainde fark edilen bir bug giderildi.
  • Minimapte mevcut olan bir eksiklik giderildi.
  • Önceki güncellemede bahsettiğim karakterlerle ilgili olan eksikler tamamlandı. (Full)
  • Zindanlar DX11'e taşındı.(Full)
  • Ağaçlar DX11'e taşındı.(Full)
  • Efektler DX11'e taşındı.(Ufak eksikler var) (Edit: Full)
    Ekran görüntüsü 2026-03-15 213550.webp
    Ekran görüntüsü 2026-03-15 204725.webp

    Ekran görüntüsü 2026-03-15 212831.webp
 
Son düzenleme:
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.

    Ekran görüntüsü 2026-03-16 225427.webp

    Ekran görüntüsü 2026-03-16 225544.webp

    Ekran görüntüsü 2026-03-16 225639.webp



    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:
    Ekran görüntüsü 2026-03-16 230451.webp
 
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

1773692504547.webp

(ufak düzenlemelerde bitince son hali)
 
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ı.
    Ekran görüntüsü 2026-03-17 214523.webp

    Ekran görüntüsü 2026-03-17 215044.webp

    Ekran görüntüsü 2026-03-17 220039.webp

    Ekran görüntüsü 2026-03-17 220303.webp
 
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.

Bu adam Metin2 yi bitirmiş 3 e geçmiş.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst