Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 2.891 pregleda

Najnovija ↓

XNA performanse pri kreiranju grada 19.07.2012. u 13:14 · pre 173 meseca #1
Da li neko ima iskustva (ne ono moglo bi ovo ili ono), vec realna iskustva, kako napraviti grad (sa npr 100-nu zgrada, kuca) u XNA?
Recimo da imam neke modele ulica, zgrada/kuca (nebitno), sa teksturama, pitanje je sta primeniti (koje tehnike iscrtavanja, koji "engine",
pristup) da bi nacrtali veci broj tih objekata, a da bi imali i dalje dobre performanse?

Primeri koda koji radi , bi bili vise nego dobrodosli (moze i link na sajt/forum) gde ste videli da je tako nesto napravljeno u XNA/C#.

Hvala

poz
Re: XNA performanse pri kreiranju grada 19.07.2012. u 14:44 · pre 173 meseca #3
Toso,
nije problem neka je i 10K zgrada/kuca, nego se raspitujem koji pristup da primenim, npr:

Occlusion Query (OcclusionQuery class)
Frustum Culling
QuadTree
Hardware instancing (mnogo istih modela)
Vertex Cashe (vertexi koji imaju istu texturu i normale, ali drugacije polozaje -crta ih GPU u 1 cugu)
------------------------------------------------------------
-BoundingSphere for each model
-BoundingFrustum for camera
-check kamera Bounding with model Sphere
------------------------------------------------------------
Group all objects that use the same texture/material properties together (and send to GPU)
The key is not minimising calls but minimising the amount of changes in state (textures/shaders etc) required across the scene.
------------------------------------------------------------

E sada ako neko ima iskustva u tome sta iskoristiti / iskombinovati od ovoga (ili ako postoji jos neki pristup) ?

Hvala

poz

PS.Dobro bi doslo i neko parce koda koje radi ispravno :D


Re: XNA performanse pri kreiranju grada 19.07.2012. u 14:58 · pre 173 meseca #4
Pa svakako ce ti trebati neki visibility culling. Posto je struktura relativno ravna (grad) onda je quad tree sasvim ok. Kada izolujes vidljive celije quad tree-a onda radis frustum culling za svaku kucu/zgradu/objekat.
Da li ces da koristis sfere ili AABB nije preterano vazno jer ce ti svakako broj vidljivih zgrada pasti drasticno. Pretpostavljam da nisu providne zgrade, tj. da nemas transparenciju - onda ih sortiras po udaljenosti od kamere i crtas od blize ka daljim, da bi lepo koristio Z buffer.
Ove ostale optimizacije su u redu svaka za sebe ali stvarno zavisi, pre svega, od podataka koliko svaka ima smisla. Ja ti predlazem da odradis prvo quad tree/frustum cull pa da onda vidis da li to radi dovoljno brzo - ako ne radi onda da vidimo sa cim radis (podaci).

Za kod ce morati neko drugi da se javi jer ne koristim C# :)
Re: XNA performanse pri kreiranju grada 19.07.2012. u 15:42 · pre 173 meseca
izmenjeno 1 put, poslednji put bondja 20.07.2012. u 09:13
  1. bondja20.07.2012. u 09:13zapis iz teksta poruke
#5
Hvala Toso!

"Ove ostale optimizacije su u redu svaka za sebe ali stvarno zavisi, pre svega, od podataka koliko svaka ima smisla" - pa to je, znaci najvise ce zavisiti od modela / tekstura koje imam...

Nisam pomenuo LOD - da se ucitavaju lakse teksture u zavisnosti od razdaljine - ovo ce da ubrza, ali ce mozda ruzno da izgleda... :(

Nadao sam se da postoji neki opstiji pristup, gde moze da se napravi poredjenje npr ovako nesto:

Npr imamo 1000 objekata koji treba da se iscrtaju, sledeci pristupi odreduju sta treba da se zaista i nacrta:

- quad tree - crtaj samo 120 objekata
- frustum culling - crtaj 90
- occlusion culling - crtaj 60
- LOD - crtaj 60, ali brze iscrtavanje (pitanje koliko)
- hardware instancing - brze ako ima vise istih objekata (a uglavnom ima)

Brojevi su onako nabacani, ali pokazuju koliko bi ove tehnike bile efikasne...

Ali ako svako ovo iscrtavanje zavisi od podataka (modela/tekstura), to znaci da cu morati da eksprimentisem :)

PS. nasao sam primere gde se crtaju tereni (primenjuju ove pristupe), ali nigde da se crta grad.
Ono sto je vazno napomenuti, da bi ipak trebalo da imam i sunce + senku!

poz
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme