Shader Tabanlı Objects

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 16
  • Gösterim Gösterim 420

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.365
Çözümler
439
Beğeni
4.881
Puan
1.849
Ticaret Puanı
0
Shader Tabanlı Water konusunda da belirttiğim gibi oyunun tüm yapısını shadera taşımak gibi bir fanteziye girişmiştim. Su düzenlemesinden sonra en çok korktuğum ve en zorlandığım binalar-karakterler-moblar üçlüsünü de shader yapısına geçirdim nihayet.
Bir noktada bunu n2playden çekmeyi düşündüm ancak aşırı derecede fazla ve işime yaramayacak kod&extern bağımlılığı olduğu için bundan vazgeçtim.

Velhasıl; ağaçların haricindeki tüm objeler artık sabit pipeline tarafından değil shader tarafından render ediliyor.
C++ tarafında ise bu üçünü kontrol eden tek bir yapı ve tek bir shader mevcut. (ShaderManager)
Dolayısıyla aşağıdakiler de dahil olmak üzere EterGrnLib ve GameLib içinden pek çok fonksiyon ve bağlamları kaldırıldı ve daha da kaldırılacak.

C++:
Genişlet Daralt Kopyala
void CGrannyMaterial::__ApplyDiffuseRenderState() // Not used
{
}
void CGrannyMaterial::__RestoreDiffuseRenderState() // Not used
{
}
void CGrannyMaterial::__ApplySpecularRenderState() // Not used
{
}
void CGrannyMaterial::__RestoreSpecularRenderState() // Not used
{
}
void CGrannyMaterial::ApplyRenderState() // Not used
{
}
void CGrannyMaterial::RestoreRenderState() // Not used
{
}

Şu anki mevcut shader tamamen sıfırdan hazırlandı ve herhangi bir özelleştirme uygulanmadı. Hala halledilmesi gereken bazı küçük problemleri var.
Aydınlatmalar, görsel efekt hesaplamaları vb. çok daha sonra dahil edeceğim.

Ve ayrıca; bu düzenlemeyi yaptığım files tamamen boş bir files, daha sonra kendi filesımdaki dinamik yapıya entegre edeceğim. O yüzden aşağıdaki fotolardan harikalar beklemeyin :D

Ekran görüntüsü 2025-07-16 164622.webp

Ekran görüntüsü 2025-07-16 164652.webp

Ekran görüntüsü 2025-07-16 164845.webp

Ekran görüntüsü 2025-07-16 165305.webp
 
bazı görsel bozukluklar var ama olur yani sıkıntı yok
 
An itibari ile tamamlandı ve kalan sorunları da giderildi.
Eğer başka sorunlar varsa da çok küçük şeylerdir ve halledilir şeylerdir.(Zamanla fark edersem düzeltirim.)
Fakat şu an genel anlamda göze batan ve ciddiye alınabilecek tüm sorunları giderildi ve stabil hale getirildi.

- Pek çok fonksiyon daha kaldırıldı (Muhtemelen dahası da olacak, çünkü şu an pek çok çağrı,fonksiyon, değişken vs. boşa düştü.)
- İtemlerdeki varsayılan specular görünümü artık kullanılmıyor, shader kendisi halledecek.
- Aydınlatma hesaplamaları temel düzeyde iyileştirildi ve tüm objelere uygulanıyor...
- Alpha,blend vb. işlemleri tamamen shadera aktarıldı ve tüm sorunları giderildi. (Mobların spawn oluşu, karakterin oyuna ilk giriş saniyesindeki şeffaflık vb. işlemler dahi shaderdan yapılacak.)
- Modellerin çeşidine,türüne cartına curtuna göre vb. yüklenmesi ve render edilmesinde görevli olan tüm buffer/load/render gibi işlemler yapan fonksiyonlar artık yoklar. Yüklenen her model doğrudan shadera gönderilir.

Çok da önemli olmayan şeyler:
- Anti-aliasing uygulandı.
- Hafif bir kontrast uygulandı.

Kendi filesımda zaten pek çok şeyi shadera geçirmiştim(su,gökyüzü vs.) Bu model olayı aralarında en zoru olduğu için boş bir fileste çalışmak istedim. Nihayet bu da tamamen aradan çıktı. Bundan sonra kendi filesime entegre edip çeki düzen vereceğim ve geriye ne kaldıysa onları da shader tabanlı yapmaya niyetim var. Bakalım nereye kadar gidebileceğim..


Ekran görüntüsü 2025-07-17 161714.webp
 
Unutulan bir güncelleme:

Önceki mesajımda aradan çıktı falan dedim, konuda buraya kadar her şey iyi güzel hoş oldu da, en önemli bir faktörü atlamışım. Bunu da tesadüfen fark ettim. Dungeon haritaları da birer obje oldukları için onlar için harici bir düzenleme yapmamışım ve örümcek zindanına girdiğimde aşağıdaki görüntüyle karşılaştım:
Ekran görüntüsü 2025-07-23 210934.webp

Vertex patlaması, derinlik bozulması, ne ararsanız vardı. Sonrasında bunu da düzenledim ve dungeonlar için aynı görevi gören, aynı shader üzerinden çalışan yeni bir render fonksiyonu hazırladım. (Belki geri kaldırıp ana shader renderına dahil edebilirim)

Sonuç:
Ekran görüntüsü 2025-07-24 133110.webp



Ek olarak; +0 +1 ve +2 gibi düşük seviyeli silahların tamamında specular bozulması yakaladım. Bu da c++ tarafından ufak bir düzenleme ile halledildi. Şimdi bu obje muhabbeti gerçekten tamamen bitti :D
 
Örümcek zindanına texture renewal lazım gerçekten babaannemin köydeki ahrına benziyo obje

Şaka maka fark hissediliyo hocam süper olmuş
 
Örümcek zindanına texture renewal lazım gerçekten babaannemin köydeki ahrına benziyo obje

Şaka maka fark hissediliyo hocam sper olmuş
Örümcek zindanı sadece doku yönünden değil, tasarım yönünden de pek çok açıdan kusurlu. Mesela sonuç olarak eklediğim görselde zemindeki dokular tam dikişli ve tutarlı değil (özellikle sol alt kısımda daha belirgin.)
Tüm bu shader muhabbetlerinden sonra dokuları da elden geçirebilirim belki. Çünkü dediğin gibi bazı dokuları shader bile kurtarmıyor.
 
Unutulan bir güncelleme:

Önceki mesajımda aradan çıktı falan dedim, konuda buraya kadar her şey iyi güzel hoş oldu da, en önemli bir faktörü atlamışım. Bunu da tesadüfen fark ettim. Dungeon haritaları da birer obje oldukları için onlar için harici bir düzenleme yapmamışım ve örümcek zindanına girdiğimde aşağıdaki görüntüyle karşılaştım:
24903 eklentisini görüntüle
Vertex patlaması, derinlik bozulması, ne ararsanız vardı. Sonrasında bunu da düzenledim ve dungeonlar için aynı görevi gören, aynı shader üzerinden çalışan yeni bir render fonksiyonu hazırladım. (Belki geri kaldırıp ana shader renderına dahil edebilirim)

Sonuç:
24904 eklentisini görüntüle


Ek olarak; +0 +1 ve +2 gibi düşük seviyeli silahların tamamında specular bozulması yakaladım. Bu da c++ tarafından ufak bir düzenleme ile halledildi. Şimdi bu obje muhabbeti gerçekten tamamen bitti :D
O duvardaki çıkıntılar da meşale koymak için yapılmış ama koymamışlar. Işık gayipten geliyor. Bence indoor maplerde global aydınlatmayı kapatıp, oralara meşale koyup onları shaderdan gerçek ışık kaynakları yapıp dungeon'a karanlık hava katabilirsin.
 
O duvardaki çıkıntılar da meşale koymak için yapılmış ama koymamışlar. Işık gayipten geliyor. Bence indoor maplerde global aydınlatmayı kapatıp, oralara meşale koyup onları shaderdan gerçek ışık kaynakları yapıp dungeon'a karanlık hava katabilirsin.
Bu gibi düzenlemeler için aklımda bir şeyler var ama çok sonranın işi. En azından deneyeceğim, olmazsa da çok üsteleyeceğimi sanmıyorum. Harita düzenleme işleri pek bana göre değil 😅
 
hocam sizin zindanda sanırsam gölgelendirme yok :alala:
Evet şu an öyle gözüküyor. Bunun nedeni power vb. ışık değerlerini doğrudan shaderdan sabit değerlerle çekiyor.
Src içinden veya .msenv içindeki değerleri okumuyor. O yüzden baya bir parlak oldu :D
Daha sonra kendi filesıma geçtiğimde bu yaptığım shaderların tamamını kendi dinamik aydınlatmama bağlayacağım, o zaman normale dönecektir.
 
İnan ben de bilmiyorum, şu an en zor kısımlardayım diyebilirim. Önümdeki zorluğu atlattıktan sonra biraz daha hızlanacağımı düşünüyorum. Aşırı sıkılıyorum ama başladık bir kere..
Bunların üzerine bir de DirectX 10, 11, 12'yi de eklersin şimdi! 😄 Loading ekranını komple kaldırır, giriş (login) ekranını da lobi tarzında yaparsın. Karakterler lobide oturur, takılırlar falan. 😄
 
Geri
Üst