Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kada se odvija rendering ?

[es] :: 3D programiranje :: Kada se odvija rendering ?

[ Pregleda: 3361 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vms
mister no
studiram ETF u Beogradu
SCG BG

Član broj: 16262
Poruke: 35
*.rcub.bg.ac.yu

Sajt: www.sky-razor.cjb.net


Profil

icon Kada se odvija rendering ?03.04.2004. u 10:12 - pre 244 meseci
Kada GPU obavlja rendering na ekran? Ono sto bih hteo da postignem je da graficka kartica i CPU rade paralelno koliko je to god moguce. Kako onda treba organizovati kod?
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.attbi.cable.earthlink.net



+18 Profil

icon Re: Kada se odvija rendering ?03.04.2004. u 11:57 - pre 244 meseci
To se vec tako i desava. Tvoj program daje komande GPUu, koji te komande baferuje i izvrsava paralelno. Naravno, kolicina tog bafera je konacna, tako da mozes da dodjes u situaciju gde tvoj program trazi 'suvise' od GPUa, i onda se tvoj thread blokira u grafickom APIu (Direct3D / OpenGL) dok GPU ne uspe da odradi deo posla iz bafera.

Precizniji odgovor zavisi od toga sta tvoj program radi.
 
Odgovor na temu

vms
mister no
studiram ETF u Beogradu
SCG BG

Član broj: 16262
Poruke: 35
*.rcub.bg.ac.yu

Sajt: www.sky-razor.cjb.net


Profil

icon Re: Kada se odvija rendering ?03.04.2004. u 13:00 - pre 244 meseci
Ako moj program izgleda otprilike ovako:

Code:


device->BeginScene();

// slanje podataka na GPU

device ->EndScene();
device->Present(....);


Ocekivao bih da odmah po prijemu komande Present GPU mora da iscrta sve sto sam mu poslao do tada. Meni izgleda da ce CPU morati posle slanja Present() malo da saceka da GPU obavi sve zadate operacije. Deluje mi logicnije da posaljem Present tek posto CPU potpuno spremi novu scenu za slanje. Ipak pri eksperimentisanju sa ovim stvarima nisam primetio neku promenu brzine (mada mozda saljem isuvise jednostavne scene).
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.attbi.cable.earthlink.net



+18 Profil

icon Re: Kada se odvija rendering ?03.04.2004. u 19:50 - pre 244 meseci
Present ne blokira thread osim u ova dva uslova:

1) Nestalo ti je back buffera u koji crtas, znaci GPU mora da zavrsi rendanje i da izbaci frejm. Ovaj problem mozes da smanjis ako koristis triple buffering, ali time povecavas latency i koriscenje video memorije.

2) Ukoliko je command buffer pun, GPU jednostavno ne moze da primi dalje instrukcije, i onda blokira thread.

Ukoliko se desilo ovo pod 2, paralelno izvrsavanje CPU rada ne pomaze, jer si GPU bound, cak i da izracunas sledeci frejm unapred, opet ces da stallujes kada budes izdavao komande GPUu.

U slucaju pod jedan ima malo vise smisla raditi sve ovo, ali imaj u vidu da ti provedes 40% vremena u drajveru - znaci to sto si izdao naredbe za crtanje ne znaci da se one desavaju paralelno i bez CPU overheada, vec i drajver mora malo da 'misli' o njima, i to trosi CPU cikluse. Ne treba ga dodatno usporavati.

I za kraj, ova dva game loopa su skoro ista (osim sto drugi ima veci latency) i ne resavaju problem:

BeginScene()
Think()
Render()
EndScene()

i

BeginScene()
Render()
ThinkNextFrameWhileCurrentFrameRenders()
EndScene()

Jedini bolji nacin je multithreading, ali paralelizacija je teska stvar za implementaciju, jer implicira sinhronizaciju i otvara sijaset problema u razvoju i odrzavanju koda.

BTW, kako napreduje igra, nema nista novo na sajtu? ;)
 
Odgovor na temu

vms
mister no
studiram ETF u Beogradu
SCG BG

Član broj: 16262
Poruke: 35
*.77.eunet.yu

Sajt: www.sky-razor.cjb.net


Profil

icon Re: Kada se odvija rendering ?05.04.2004. u 00:52 - pre 244 meseci
Inace igrica je veoma uznapredovala u poslednje vreme i verovatno cemo uskoro osveziti sadrzaj na sajtu... Cim bude bilo nekih promena poslacu poruku na forum...
 
Odgovor na temu

[es] :: 3D programiranje :: Kada se odvija rendering ?

[ Pregleda: 3361 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.