Nidavelir Filesı ile Grafiksel Çıldırmacalar

  • Konuyu açan Konuyu açan Tengrist
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 352

Tengrist

Mapper
Mapper
Yardımsever Üye
MT Üye
Mesaj
1.802
Çözümler
44
Beğeni
1.830
Puan
1.329
Ticaret Puanı
0
-God Rays dediğimiz mevzuyu ekledim bir miktar sudaki yansıma muhabbetini daha realistic hale çektim, mantığını kurabilirsem devamında karakter ya da binek vs koştuğunda suda kendi dalgalanması ve suların etrafa damla damla saçılması muhabbeti var. günlerdir youtubeda boş zamanlarımda grafik programlamanın mantığını anlamaya çalışıyorum çok şükür matematik seviyem yetiyor anlamaya. god rays'den sonra jettyxin çim muhabbetini ekledim bu alagavas specularla çimeni bağlamış, specularlı haritalarda dungeon maplerinde falan gidince çimen çıkıyo saçma sapan bir şeyler var :D çimen olayını da 2ye böleceğim yapabilirsem videosunu çekerim bu gece. şimdilik boş durmasın diye god raysi bırakıyorum.
ayrıca harita da rezillik tasarımla uğraşamadım var olanlar üstünde geliştireceğim şimdilik.

nida1.webp
 
nida2.webp


Adsız.webp


üç bir'in dışında da fps baya problem :D
gördüğüm 2 büyük problemden biri diğeri de ağaçlarda flicker var zamanla artık hallederiz :d

şu an için grass mantığını istediğim zemin dds'inin üzerine 0 ila 100 yoğunluğu arasında çıksın diye ayarladım şu an çiçekler yüzde 15 gibi yoğunlukta iken klasik çimler yüzde 100 yoğunlukta, estetiğe dikkat etmeksizin bulduğum bitkileri koyup geçtim. şu an bitkiler dds'ten görüntü çekip x ve y ekseninde 1 tur çizilerek oturtturuluyor maplere bu mantığa da birkaç fikrim var daha natural duruş için yapabilirsem o resimleri de çekeceğim.
 
Ey maşallah mübarek adam,
Eline sağlık vareze ne zaman düşer :D​
 
filesın sorunlar neler grafiksel anlamda hacım onları da çözeyim atarım clienti wareze
Onca uğraşıp sonra onu ücretsiz paylaşmak ve ilgi görmek bence ücretli satmaktan daha hoş oluyo,
Ciddi değildim ama şu ambiyans için beklemeye değer eline sağlık tekrar güncellemeleri bekliyor olacağım. :)​
 
cimsiz.webp

cimli.webp

Bizim grass sisteminde SPT materyallerini direkt ağaç mantığında kullanmıyoruz artık Mantık şu: zeminde hangi ground texture varsa onu okuyup, o texture için tanımladığımız SPT modelini otomatik olarak o bölgelere yayıyoruz. Yani ben haritaya tek tek çim çizmek zorunda kalmıyorum.

Mesela ground tarafında grass.dds kullanılıyorsa TXT içinde diyorum ki bu zeminin üstünde şu SPT modeli çıksın. Sonra DENSITY, SPACING, COVERAGE gibi değerlerle ne kadar sık olacağını ayarlıyoruz. %100 dediğimiz zaman hedefimiz o ground texture'ın görüldüğü yerin mümkün olduğunca tamamen çimle kaplanması. Bir de aynı ground'un altına birden fazla SPT koyabiliyoruz; böylece tek tip çim yerine uzun çim, kısa çim, farklı otlar falan karışık çıkabiliyor.

SPT'nin güzel tarafı da şu: normal PNG/DDS billboard çim gibi dümdüz iki tane çapraz plane koymak yerine, modelin kendi branch/leaf/frond parçalarını kullanabiliyoruz. O yüzden çime biraz hacim geliyor. Kendi texture'ını da SPT'den alıyor. İstersek sadece leaf kısmını, istersek branch + leaf gibi parçaları kullandırabiliyoruz.

Yüksekliği de HEIGHT_OFFSET ile ayarlıyoruz. Mesela model toprağın üstünde kalıyorsa -10, -12 gibi aşağı gömüyoruz. MODEL_SCALE ile boyunu ayarlıyoruz. COLOR_MATCH ile zeminin rengine biraz yaklaştırıyoruz ki yemyeşil çim kahverengi zeminin üstünde yapıştırılmış gibi durmasın. WIND de çok hafif veriyoruz; çünkü fazla verdiğimizde çim değil ağaç gibi sağa sola sallanıyor.

örnek grass.txt:
Genişlet Daralt Kopyala
# V19: COVERAGE=FULL asla zemine opak kare cizmez; 100 = tum uygun yerlesim noktalarinda bitki.
# SPACING = yakin bolge araligi; orta bolge en az 65 birim, uzak 125 birimdir.
# Tamamen saydam DDS yapraklari arasindan zemin fiziksel olarak gorunebilir.
# V18: FULL -> 100% eligible coarse cells + dense close grass and material-aligned opaque carpet.
# SPACING: 25..250 game units, 35 = dense grass, 125 = original spacing.
# Dense clumps within 1900 units; carpet within 4050 units; beyond that normal V17 LOD.
# FULL carpet uses opaque grass-tinted ground based on supplied DDS; does not create 3D blades for every pixel.
# VIELLO GRASS V19 - dogal, opak kare kaplayici OLMADAN sik bitki ortusu
# Oyun yolu: d:/ymir work/environment/viello_grass_rules.txt
# DENSITY 100: Uygun yerlesim hucresinin tamaminda bir ornek; her DDS pikselinde degil.
# GEOMETRY: GRASS_CLUMP = egimli cim kumesi; FLOWER_CARDS = dik cicek kartlari.
# BLADES: V17 2..8; 9 desteklenmedigi icin 8 kullanildi.
# SCALE_MIN/MAX: V17 0.35..2.5. Kucuk eski olcekler WIDTH/HEIGHT ile korunuyor.
# WIDTH_SCALE/HEIGHT_SCALE: V17 0.35..2.5; bitki en ve boyunu ayri ayarlar.
# COLOR_MATCH: 0..100; WIND: 0..1, 0.5 = en dusuk sifir-disi ruzgarin yarisi.
# Tum yollar kullanicinin orijinal TXT dosyasindan alinmistir.

[GROUND]
TERRAIN = "d:/ymir work/terrainmaps/betefilase.jimdo.com/grass01.dds"

GRASS = "sound/grass/viellogenel.dds"
DENSITY = 100
SPACING = 35
COVERAGE = FULL
GEOMETRY = GRASS_CLUMP
BLADES = 8
WIDTH_SCALE = 1.60
HEIGHT_SCALE = 0.50
SCALE_MIN = 0.60
SCALE_MAX = 0.90
WIND = 0.5

SPT = "d:/ymir work/environment/viello_vegetation/flower.spt"
RENDER_PARTS = ALL
DENSITY = 15
SPACING = 220
COVERAGE = NORMAL
MODEL_SCALE = 0.65
HEIGHT_OFFSET = +6
COLOR_MATCH = 15
WIND = 0.5

SPT = "d:/ymir work/environment/viello_vegetation/plant_bush.spt"
RENDER_PARTS = ALL
DENSITY = 15
SPACING = 220
COVERAGE = NORMAL
MODEL_SCALE = 0.65
HEIGHT_OFFSET = -16
COLOR_MATCH = 15
WIND = 0.5

# V21 SPT leaf, bark/trunk/branches and fronds: DDS discovered inside .spt; no manual texture paths.
# LEAVES_BRANCHES includes SpeedTree woody branch mesh, which may contain trunk.
# ALL additionally includes native fronds if present in the SPT.
# Multiple SPT declarations under the SAME GROUND create independent species.
SPT = "d:/ymir work/environment/viello_vegetation/redpine1.spt"
RENDER_PARTS = ALL
DENSITY = 25
SPACING = 250
COVERAGE = NORMAL
MODEL_SCALE = 3.70
HEIGHT_OFFSET = -12
COLOR_MATCH = 25
WIND = 0.5
[/GROUND]

[GROUND]
TERRAIN = "d:/ymir work/terrainmaps/betefilase.jimdo.com/grass02.dds"

GRASS = "sound/grass/viellogenel.dds"
DENSITY = 100
SPACING = 35
COVERAGE = FULL
GEOMETRY = GRASS_CLUMP
BLADES = 8
WIDTH_SCALE = 1.60
HEIGHT_SCALE = 0.50
SCALE_MIN = 0.65
SCALE_MAX = 0.90
WIND = 0.5


SPT = "d:/ymir work/environment/viello_vegetation/ot/treeeasthemlockfa.spt"
RENDER_PARTS = ALL
DENSITY = 15
SPACING = 120
COVERAGE = NORMAL
MODEL_SCALE = 3.85
HEIGHT_OFFSET = +6
COLOR_MATCH = 15
WIND = 0.5
[/GROUND]

[GROUND]
TERRAIN = "d:/ymir work/terrainmaps/betefilase.jimdo.com/grass03.dds"

GRASS = "sound/grass/viellogenel.dds"
DENSITY = 100
SPACING = 35
COVERAGE = FULL
GEOMETRY = GRASS_CLUMP
BLADES = 8
WIDTH_SCALE = 1.60
HEIGHT_SCALE = 0.50
SCALE_MIN = 0.65
SCALE_MAX = 0.90
WIND = 0.5

SPT = "d:/ymir work/environment/viello_vegetation/flower2.spt"
RENDER_PARTS = ALL
DENSITY = 15
SPACING = 120
COVERAGE = NORMAL
MODEL_SCALE = 1.55
HEIGHT_OFFSET = +6
COLOR_MATCH = 15
WIND = 0.5
[/GROUND]
 

Adsız.webp

Tam olmuş varya Ağacın arkasından ok fırlatıyor falan.. :D​
 

32758 eklentisini görüntüle
Tam olmuş varya Ağacın arkasından ok fırlatıyor falan.. :D​
bunlar daha bebek adımları hacım yapmak istediğim şey unrealda mıydı bi programda gördüm texture terrain dosyalarını veriyor ona uygun doğal biyom yaratıyor. ben daha kısmen spt okuma işini bitirdim ama ağaçların dalları ve yaprakları propertyden çektiği gibi çekmiyor o olayı da halledebilirsem verdiğimiz dds'e uygun ağaç,bitki,çim modellerini çıkartaabileceğiz ve uygun bir çim spt'si bulamadım yerdeki çimler jettyxinki gibi ddsden çekip kendi yaratıyor x-y düzlemine uygun olarak. düzgün bir grass bulabilirsem yerdeki her şey spt tabanlı olacak. normal ağaç gibi de kastırtmıyor zemine koyduğum dds'ten oluşan çim kapanınca sptden sadece verirsem fps pek azalmıyor şimdiki gibi.
 
bunlar daha bebek adımları hacım yapmak istediğim şey unrealda mıydı bi programda gördüm texture terrain dosyalarını veriyor ona uygun doğal biyom yaratıyor. ben daha kısmen spt okuma işini bitirdim ama ağaçların dalları ve yaprakları propertyden çektiği gibi çekmiyor o olayı da halledebilirsem verdiğimiz dds'e uygun ağaç,bitki,çim modellerini çıkartaabileceğiz ve uygun bir çim spt'si bulamadım yerdeki çimler jettyxinki gibi ddsden çekip kendi yaratıyor x-y düzlemine uygun olarak. düzgün bir grass bulabilirsem yerdeki her şey spt tabanlı olacak. normal ağaç gibi de kastırtmıyor zemine koyduğum dds'ten oluşan çim kapanınca sptden sadece verirsem fps pek azalmıyor şimdiki gibi.
Eline emeğine sağlık güncellemeleri merakla bekliyorum vallahi. :)​
 


Files'ın kronik flicker sorununu çözdüm. göz kırpar gibi bir yaprakların üzerine gölge vururmuş gibi bir ışık vururmuş gibi göz kırpmasal saçmalığı düzelttim. Aşağıya da şimdiye kadar yaptığım değiştirdiğim özellikler ve defineleri bulunuyor jtx yazanlarda da major değişiklikler var.

Eklentiler:
Genişlet Daralt Kopyala
// ============================================================
// DIRECTX
// ============================================================

#define DirectX9Ex
#define DIRECTX9


// ============================================================
// FPS / FRAME SYSTEM
// ============================================================

#define ENABLE_FPS_SYSTEM_LIMIT_REWORK

#ifdef ENABLE_FPS_SYSTEM_LIMIT_REWORK
#define FPS_SYSTEM_FORCE_60FPS
#endif


// ============================================================
// SPEEDTREE / TREE SYSTEM
// ============================================================

#define JTX_GPU_LEAF_PLACEMENT
#define JTX_GPU_TREE_WIND
#define JTX_TREE_DYNAMIC_LIGHT

#define FIX_MEMORY_SPEEDTREE


// ============================================================
// POST PROCESS / CAMERA / WATER REFLECTION
// ============================================================

#define JTX_UNDERWATER_CAMERA
#define JTX_WATER_REFLECTION
#define JTX_DEATHCAM
#define JTX_SHARPNESS


// ============================================================
// VIELLO ADVANCED WATER
// Client/GameLib/VielloWaterFeatures.h
// ============================================================

#define ENABLE_VIELLO_ADVANCED_WATER

#ifdef ENABLE_VIELLO_ADVANCED_WATER

#define ENABLE_VIELLO_WATER_FRESNEL
#define ENABLE_VIELLO_WATER_DEPTH
#define ENABLE_VIELLO_WATER_GERSTNER_WAVES
#define ENABLE_VIELLO_WATER_SHORE_FOAM
#define ENABLE_VIELLO_WATER_CHARACTER_RIPPLES
#define ENABLE_VIELLO_WATER_SPLASH

#define ENABLE_VIELLO_WATER_DIAGNOSTICS

#endif


// ============================================================
// VIELLO GRASS / VEGETATION
// Client/GameLib/VielloGrassFeatures.h
// ============================================================

#define ENABLE_VIELLO_TEXTURE_GRASS

#define VIELLO_GRASS_RULES_FILE \
    "d:/ymir work/environment/viello_grass_rules.txt"

#define VIELLO_GRASS_GRID_UNITS          125.0f
#define VIELLO_GRASS_MAX_INSTANCES      55000
#define VIELLO_GRASS_MAX_BATCH          1000
#define VIELLO_GRASS_SECTORS_PER_FRAME  12

#define VIELLO_GRASS_LOD_NEAR           1600.0f
#define VIELLO_GRASS_LOD_MIDDLE         4000.0f
#define VIELLO_GRASS_LOD_FAR            7600.0f


// ============================================================
// VIELLO ATMOSPHERE
// Client/GameLib/VielloAtmosphereFeatures.h
// ============================================================

#define ENABLE_VIELLO_GOD_RAYS
#define ENABLE_VIELLO_VOLUMETRIC_FOG

#define VIELLO_GODRAYS_STRENGTH 1.0f

// Henüz aktif değil:
// #define ENABLE_VIELLO_VOLUMETRIC_CLOUDS

Ayrıca SpeedTree’nin kendi config tarafında çalışan şu define’ler de var:

speedtree sistemi defineler ve değişenler:
Genişlet Daralt Kopyala
#define USE_SPEEDGRASS
#define WRAPPER_RENDER_SELF_SHADOWS
#define WRAPPER_USE_FOG


  • DirectX9Ex geçişini oturttuk. Eski DX8 mantığından çıkıp client’i DX9Ex tarafına taşıdık, shader ve yeni render efektlerinin önünü açtık.
  • Su sistemini baştan geliştirdik. Dalgaları güçlendirdik, fresnel, derinlik hissi, kıyı köpüğü, karakter ripple’ı ve splash ekledik. Sonra suya girince crash, beyaz üçgen splash, kıyıda saçma dikdörtgen köpük gibi sorunları tek tek toparladık.
  • Karakter su etkileşimini düzelttik. Yürürken ve binekte arkadan su sıçraması, küçük halkalar ve daha yumuşak dalga tepkisi ekledik. Çok yapay durduğu yerleri de yoğunluk ve hızla ayarladık.
  • God Rays ekledik ve güçlendirdik. İlk hali çok zayıftı, güneş yönüne göre daha belirgin hale getirdik. Sonra sisle birlikte çalışabilecek yapıya oturttuk.
  • Volumetric fog sistemi yaptık. Harita bazlı çalışan sis ekledik, msenv ve map mantığıyla derinlik hissi vermeye başladık. Çok ağır çalıştığı için slice sayısını sonradan performans tarafında sınırladık.
  • DDS/TGA grass sistemi yaptık. Zeminin texture’ına göre otomatik çim ürettik, manuel yerleştirme mantığından çıktık. Yoğunluk, spacing, yükseklik ve farklı bitki tiplerini TXT’den kontrol eder hale getirdik.
  • SPT vegetation sistemini ekledik. SpeedTree modellerini çim gibi kullanmaya başladık. Kendi bark/leaf texturelarını buluyor, RENDER_PARTS, MODEL_SCALE, HEIGHT_OFFSET, density, spacing gibi değerlerle yönetiliyor.
  • SPT branch/leaf görünmeme sorunlarını düzelttik. İlk başta dallar veya bazı parçalar kayboluyordu, materyal ve render part mantığını düzelterek tam görünür hale getirdik.
  • %100 grass’ta boşluk ve kare desen sorunlarını azalttık. Grid yerleşimini ve coverage mantığını değiştirip daha dolu ve daha doğal dağılım yaptık.
  • Performans bütçe sistemi ekledik. Çim, SPT, sis slice ve çizim mesafelerini tek tek sınırlandırıp TXT’den değiştirilebilir hale getirdik. Her ayar için tekrar client derleme zorunluluğunu kaldırdık.
  • Performans log sistemi yaptık. deform, reflection, shadow, scene, water, grass, fog gibi aşamaları ayrı ayrı loglamaya başladık. Böylece FPS düşüşünü körlemesine değil, hangi pass yoruyor diye bakarak çözmeye başladık.
  • Yansımanın fazla kaynak tükettiğini tespit ettik. Loglarda reflection kısmının bazı sahnelerde 12–14 ms civarına çıktığını gördük. O yüzden gereksiz tekrar çizim ve yansıma maliyetinin ciddi olduğunu netleştirdik.
  • SpeedTree rüzgâr zamanlamasını düzelttik. Önceden aynı frame’de birden fazla kez rüzgâr zamanı ilerliyordu, ağaçlar anlık tıklıyor ve snap yapıyordu. Tek render-frame clock mantığına geçirip aynı frame’de bütün pass’lerin aynı wind matrisi kullanmasını sağladık.
  • Ağaç dallarının anlık yukarı fırlama sorununu çözdük. Shader register tarafında wind matrix register’ı yanlışlıkla başka değerle eziliyordu. O register çakışmasını kaldırınca dalların anlık kırılıp sıçraması düzeldi.
  • Ağaç gölge/flicker sorununu düzelttik. Rüzgâr varken ağacın karanlık-aydınlık arasında gidip gelmesi vardı. Wind deformasyonu ile shadow caster/receiver tarafını aynı matrise bağladık, shadow hesabını daha stabil hale getirdik.
  • Genel shadow receiver mantığını düzelttik. Sadece ağaç değil, zemin, duvar ve objeler de gölgede kararıp açılıyordu. PCF, bias, ambient floor ve ortak shadow sampling mantığıyla bunu stabilize ettik.
  • Güneş almayan taraftaki aşırı kararma sorununu düzelttik. Shadow sonucu ambient ışığı fazla eziyordu. Gölge tarafında minimum ambient katkı bırakarak yüzeyin bir anda simsiyah olup açılmasını azalttık.
  • Shadow map viewport hatasını düzelttik. Render target boyutundan taşan viewport kullanımı vardı. size + 2 mantığını düzelttik, sınır dışına taşmayı engelledik.
  • Shadow stabilizasyonundaki eski 128 sabitini kaldırdık. 1024–2048 shadow map kullanırken hâlâ 128’e göre snap yapıyordu. Gerçek shadow map çözünürlüğüne göre hesaplatınca kamera hareketinde shadow zıplaması azaldı.
  • SpeedTree memory leak riskini temizledik. Parent-instance tarafında shared_ptr döngüsü oluşturabilecek yapı vardı. Ownership zincirini kırarak leak riskini azalttık.
  • Tree shader’daki çift lighting çarpımını düzelttik. Işık sonucu bazı yerlerde iki kere çarpılıyordu, küçük shadow farkı bile aşırı kararma yapıyordu. Tek doğru lighting hesabına çektik.
  • Sert specular/shadow eşiklerini kaldırdık. 0.25 altı başka, üstü başka gibi sert geçişler flicker üretiyordu. Daha yumuşak ve sürekli bir hesap yaptık.
  • GR2 modellerinde yaklaşınca tek seferlik titreme sorununu düzelttik. LOD değişiminde model bir frame yanlış deform/LOD durumuna geçiyordu. LOD hysteresis ve ön deform mantığıyla yaklaşırken çıkan o tek karelik flicker’ı kestik.
  • Ağaç ve GR2 flickerını aynı temel mantıkta toparladık. Yani temel olay şu oldu: render pass’lerde aynı frame verisi kullanılacak, shader registerları ezilmeyecek, LOD ve shadow geçişleri sert olmayacak.
  • Texture/material tarafında eksikleri toparladık. PNG/JPG/JPEG/DDS/TGA yükleme taraflarında eksik destekleri ekledik, bazı materyallerin pembe/siyah veya görünmez çıkmasını düzelttik.
 
Geri
Üst