Shader Tabanlı Terrain

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

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.377
Çözümler
439
Beğeni
4.907
Puan
1.849
Ticaret Puanı
0
Terrain de elendi..
Render yapısı tamamen shadera aktarıldı.
Şu an için sadece doku işleniyor. Sırada gölgeleri çizmek var.

Test videosunda ışık hareketinden sadece terrain etkileniyor. Bunun sebebi; diğer objelerin ışık hesaplaması ile terrainin ışık hesaplaması (şu an için) ayrı olmasıdır.

 
ne zaman patch dosyası geliyo bize tahmini
 
ne zaman patch dosyası geliyo bize tahmini
ezgif-49d414a14d4c10.gif
 
Karakter ve obje gölgeleri büyük oranda tamamlanıp shaderlara taşındı. Henüz ağaçlara dokunmadım, onları en sona bekletiyorum.
Şu an için çift katmanlı shadowmap hazırlayabildim. Altyapının %100 oturması için hala bazı ufak sorunları mevcut, ancak en önemli hesaplamaların bulunduğu kısımlar tamamlandı. Eğer şu anki hali yapmayı düşündüğüm düzenlemeler için yetersiz gelirse, shadowmapi çift katmanlıdan 4 katmanlıya çıkarmayı deneyeceğim.

Kısaca şu ana kadar yapılanlar;
Karakterlerin gölgesi->zemin gölgesi,
obje->karakter gölgesi,
karakter gölgesi->obje,
obje gölgesi->obje gölgesi
zemin gölgesi->yüzeydeki her şeyin gölgesi

Geçişleri sağlandı ve yüksek kalite için mümkün olduğunca hassas değerlerde tutuldu.

Birkaç görsel;
Ekran görüntüsü 2025-07-30 143244.webp

Ekran görüntüsü 2025-07-30 171028.webp

Ekran görüntüsü 2025-07-30 170938.webp

Ekran görüntüsü 2025-07-30 171102.webp

ekran-g%C3%B6r%C3%BCnt%C3%BCs%C3%BC-2025-07-30-171115-webp.24985

Ekran görüntüsü 2025-07-30 172404.webp
 
Tek ama önemli güncelleme:
Arazinin kendi kendini gölgelememesi sorunu çözüldü. Ayrıca, zenaris altyapısını geliştirdiğim zamanlardan beri beni tilt eden bir sorun daha giderildi. O da gölgelerin eğimli yüzeylerde uçmağa varırcasına uzayıp sünmesiydi.
Şimdi ise buna bağlı olan hesaplamalar daha tutarlı ve mümkün olduğunca doğal görüntü verecek şekilde ayarlandı.
İnsan kendisi yapınca daha kontrollü oluyor demek ki :D

Özetle
Öncesi:
1.webp
Sonra:
2.webp

Ekstra:
3.webp

4.webp

5.webp

6.webp


Şimdi sıra ağaç gölgelerine geldi, Ondan sonra işler biraz daha hızlanacak diye düşünüyorum.

Şu ana kadar ilerlenen yol:
C++:
Genişlet Daralt Kopyala
// Aktif
#define MATERIAL_SHADER        // TÜM objeleri kapsar  | (%100)
#define EFFECTS_SHADER        // Tüm efektleri kapsar | (%100)
#define TERRAIN_SHADER        // Tüm terrain dokularını kapsar (snow, lav vb.) | (%100)
#ifdef TERRAIN_SHADER
    // Terrain'in shaderını kullanır.
    // Fakat C++'da TERRAIN_SHADER'dan bağımsız yürütülür. | (%95) -> kaiserNot1
    #define TERRAIN_SHADOW
#endif
#define WATER_SHADER        // KaiserSF'den hazır alınacak | (%100)
#define HDR_SHADER            // Tüm Shaderları kapsar - KaiserSF'den hazır alınacak | (%100)
#define SUN_SHADER            // KaiserSF'den hazır alınacak | (%100)
#define SKY_SHADER            // KaiserSF'den hazır alınacak | (%100)
#define DYNAMIC_WEATHER        // KaiserSF'den hazır alınacak | (%100)
///////////////////////////////////////////////////////////////
// Beklemede
#define TREE_SHADOW         // Sadece gölge veya tamamen shader olacak
#define INTERFACE_SHADER    // "Tüm" UI nesneleri shadera aktarılacak
#define ENV_SHADER            // Sahip olduğu tüm veriler shadera aktarılacak // .msenv kullanımı kaldırılabilir

.. // Sonrasına bakılacak
 
Tek ama önemli güncelleme:
Arazinin kendi kendini gölgelememesi sorunu çözüldü. Ayrıca, zenaris altyapısını geliştirdiğim zamanlardan beri beni tilt eden bir sorun daha giderildi. O da gölgelerin eğimli yüzeylerde uçmağa varırcasına uzayıp sünmesiydi.
Şimdi ise buna bağlı olan hesaplamalar daha tutarlı ve mümkün olduğunca doğal görüntü verecek şekilde ayarlandı.
İnsan kendisi yapınca daha kontrollü oluyor demek ki :D

Özetle
Öncesi:
Sonra:

Ekstra:
25004 eklentisini görüntüle
25005 eklentisini görüntüle
25006 eklentisini görüntüle
25007 eklentisini görüntüle

Şimdi sıra ağaç gölgelerine geldi, Ondan sonra işler biraz daha hızlanacak diye düşünüyorum.

Şu ana kadar ilerlenen yol:
C++:
Genişlet Daralt Kopyala
// Aktif
#define MATERIAL_SHADER        // TÜM objeleri kapsar  | (%100)
#define EFFECTS_SHADER        // Tüm efektleri kapsar | (%100)
#define TERRAIN_SHADER        // Tüm terrain dokularını kapsar (snow, lav vb.) | (%100)
#ifdef TERRAIN_SHADER
    // Terrain'in shaderını kullanır.
    // Fakat C++'da TERRAIN_SHADER'dan bağımsız yürütülür. | (%95) -> kaiserNot1
    #define TERRAIN_SHADOW
#endif
#define WATER_SHADER        // KaiserSF'den hazır alınacak | (%100)
#define HDR_SHADER            // KaiserSF'den hazır alınacak | (%100)
#define SUN_SHADER            // KaiserSF'den hazır alınacak | (%100)
#define SKY_SHADER            // KaiserSF'den hazır alınacak | (%100)
#define DYNAMIC_WEATHER        // KaiserSF'den hazır alınacak | (%100)
///////////////////////////////////////////////////////////////
// Beklemede
#define TREE_SHADOW         // Sadece gölge veya tamamen shader olacak
#define INTERFACE_SHADER    // "Tüm" UI nesneleri shadera aktarılacak
#define ENV_SHADER            // Sahip olduğu tüm veriler shadera aktarılacak // .msenv kullanımı kaldırılabilir

.. // Sonrasına bakılacak
ilerlenen yolda bir eksiklik sezdim o yüzden ek yapma ihtiyacı hissettim kendimde
C++:
Genişlet Daralt Kopyala
#define HSM_PATCH        //Hasan kardeşime dosyalar atılacak | (%0)
 
Güncelleme:
Terrain sonrasında yapılan gölgeleme işlemleri shadowmapte özellikle arazinin kendi kendini gölgelemesinde bazı tutarsızlıklar yaratıyordu.
Aşağıdaki videoda 20.saniyeden itibaren zemine dikkat ederseniz patlamaları görebilirsiniz



Aşağıdaki kısa video ise son halidir:

C++:
Genişlet Daralt Kopyala
#define NEW_MATRIX_MANAGEMENT /* Dx9'un ortak state/matrix havuzundan tüm bağları koparmak için. Artık GetTransform/SetTransform yok.*/
#define NEW_SHADOW_FRUSTUM /* "GÖLGELER İÇİN": Gölgelere özgü culling-frustum yapısı. Artık eskisi kullanılmıyor.*/
#define DISABLE_LOD /* Üsttekilere ek: shaderlarda artefaktlara sebep olduğundan devredışı bırakıldı.*/

Özetlemek gerekirse; artık terrain üzerindeki tüm gölgeler c++ tarafında metin2'nin varsayılan culling ve frustum yapısını değil, kendileri için oluşturulmuş olan benzer yapıları kullanacaklar. Bu da gölgelerin artık kamera matrislerine değil, önceden hesaplanmış ışık matrislerine bağlı olduğu anlamına gelir. Dolayısıyla artık patlama,kırılma,kaybolma veya benzeri pürüzlerin gerçekleşme ihtimali ortadan kaldırılmış oldu.

Özellikle speedtree'yi shadera geçirdikten sonra bazı sorunlar baş göstermeye başlamıştı ve günlerdir bu yüzeysel hatalarda uğraşıyordum.
Şimdi artık speedtree ve terraine bağlı sorunların tamamı çözülmüş olduğuna göre projede kaldığım yerden devam edeceğim.
 
Güncelleme:
Terrain sonrasında yapılan gölgeleme işlemleri shadowmapte özellikle arazinin kendi kendini gölgelemesinde bazı tutarsızlıklar yaratıyordu.
Aşağıdaki videoda 20.saniyeden itibaren zemine dikkat ederseniz patlamaları görebilirsiniz



Aşağıdaki kısa video ise son halidir:

C++:
Genişlet Daralt Kopyala
#define NEW_MATRIX_MANAGEMENT /* Dx9'un ortak state/matrix havuzundan tüm bağları koparmak için. Artık GetTransform/SetTransform yok.*/
#define NEW_SHADOW_FRUSTUM /* "GÖLGELER İÇİN": Gölgelere özgü culling-frustum yapısı. Artık eskisi kullanılmıyor.*/
#define DISABLE_LOD /* Üsttekilere ek: shaderlarda artefaktlara sebep olduğundan devredışı bırakıldı.*/

Özetlemek gerekirse; artık terrain üzerindeki tüm gölgeler c++ tarafında metin2'nin varsayılan culling ve frustum yapısını değil, kendileri için oluşturulmuş olan benzer yapıları kullanacaklar. Bu da gölgelerin artık kamera matrislerine değil, önceden hesaplanmış ışık matrislerine bağlı olduğu anlamına gelir. Dolayısıyla artık patlama,kırılma,kaybolma veya benzeri pürüzlerin gerçekleşme ihtimali ortadan kaldırılmış oldu.

Özellikle speedtree'yi shadera geçirdikten sonra bazı sorunlar baş göstermeye başlamıştı ve günlerdir bu yüzeysel hatalarda uğraşıyordum.
Şimdi artık speedtree ve terraine bağlı sorunların tamamı çözülmüş olduğuna göre projede kaldığım yerden devam edeceğim.

bu dosyalarla işin bitip kendi dosyalarına geçtiğinde bunları bana gönderir misin ya. hiç öylesine istiyorum.
 
Karakter ve obje gölgeleri büyük oranda tamamlanıp shaderlara taşındı. Henüz ağaçlara dokunmadım, onları en sona bekletiyorum.
Şu an için çift katmanlı shadowmap hazırlayabildim. Altyapının %100 oturması için hala bazı ufak sorunları mevcut, ancak en önemli hesaplamaların bulunduğu kısımlar tamamlandı. Eğer şu anki hali yapmayı düşündüğüm düzenlemeler için yetersiz gelirse, shadowmapi çift katmanlıdan 4 katmanlıya çıkarmayı deneyeceğim.

Kısaca şu ana kadar yapılanlar;
Karakterlerin gölgesi->zemin gölgesi,
obje->karakter gölgesi,
karakter gölgesi->obje,
obje gölgesi->obje gölgesi
zemin gölgesi->yüzeydeki her şeyin gölgesi

Geçişleri sağlandı ve yüksek kalite için mümkün olduğunca hassas değerlerde tutuldu.

Birkaç görsel;
24981 eklentisini görüntüle
24982 eklentisini görüntüle
24983 eklentisini görüntüle
24984 eklentisini görüntüle
ekran-g%C3%B6r%C3%BCnt%C3%BCs%C3%BC-2025-07-30-171115-webp.24985

24986 eklentisini görüntüle
Binalar üzerindeki normal Maps ile ilgili bir çalışmanız varmı acaba
 
Güncelleme:
Terrain sonrasında yapılan gölgeleme işlemleri shadowmapte özellikle arazinin kendi kendini gölgelemesinde bazı tutarsızlıklar yaratıyordu.
Aşağıdaki videoda 20.saniyeden itibaren zemine dikkat ederseniz patlamaları görebilirsiniz



Aşağıdaki kısa video ise son halidir:

C++:
Genişlet Daralt Kopyala
#define NEW_MATRIX_MANAGEMENT /* Dx9'un ortak state/matrix havuzundan tüm bağları koparmak için. Artık GetTransform/SetTransform yok.*/
#define NEW_SHADOW_FRUSTUM /* "GÖLGELER İÇİN": Gölgelere özgü culling-frustum yapısı. Artık eskisi kullanılmıyor.*/
#define DISABLE_LOD /* Üsttekilere ek: shaderlarda artefaktlara sebep olduğundan devredışı bırakıldı.*/

Özetlemek gerekirse; artık terrain üzerindeki tüm gölgeler c++ tarafında metin2'nin varsayılan culling ve frustum yapısını değil, kendileri için oluşturulmuş olan benzer yapıları kullanacaklar. Bu da gölgelerin artık kamera matrislerine değil, önceden hesaplanmış ışık matrislerine bağlı olduğu anlamına gelir. Dolayısıyla artık patlama,kırılma,kaybolma veya benzeri pürüzlerin gerçekleşme ihtimali ortadan kaldırılmış oldu.

Özellikle speedtree'yi shadera geçirdikten sonra bazı sorunlar baş göstermeye başlamıştı ve günlerdir bu yüzeysel hatalarda uğraşıyordum.
Şimdi artık speedtree ve terraine bağlı sorunların tamamı çözülmüş olduğuna göre projede kaldığım yerden devam edeceğim.

Ben shader tabanlı ayak sesleri istiyorum.
 
Geri
Üst