.[ ČeskéHry.cz ].
SG Simulator
Jdi na stránku Předchozí  1, 2, 3, 4, 5  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Inkubátor
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 27. únor 2014, 18:50:04    Předmět: Odpovědět s citátem

Jo díky s vyřešením tohoto problému. Debug verzi můžes stáhnout tu
kód:
http://ulozto.cz/xEwqG96z/sgs-debug-7z
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 27. únor 2014, 19:39:34    Předmět: Odpovědět s citátem

No, takže to spadlo v v nějakém generovaném kódu volaném z opengl driveru.
Když jsem to krokoval, padá to někde v Case::Render po vykreslení brány.
Jestli se dá věřit call stacku, říká řádek 1788, snad to pomůže.
EDIT: mělo by to být glDrawArrays
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 27. únor 2014, 20:26:08    Předmět: Odpovědět s citátem

mar: aha díky moc ze pomoc a jak se můžu taky na to podívat přes to pdb nebo přes co se na to díváš? Jinak v tom vertex shaderu stačilo dopsat jenom ten extension a nebo něco ještě dalšího bohužel to nemám jak ověřit.

#extension gl_arb_separate_shader_objects enable
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 27. únor 2014, 21:17:32    Předmět: Odpovědět s citátem

Mivoj napsal:
mar: aha díky moc ze pomoc a jak se můžu taky na to podívat přes to pdb nebo přes co se na to díváš? Jinak v tom vertex shaderu stačilo dopsat jenom ten extension a nebo něco ještě dalšího bohužel to nemám jak ověřit.

#extension gl_arb_separate_shader_objects enable

Ano, přidání #extension nebo #version 330 funguje taky. No ty to můžeš rovnou ladit (pdb jsou jenom debug symboly + čísla řádků), akorát na ATI (AMD) si moc nepomůžeš. Napadá mě, že možná selhalo bindování nějakých atributů.
Můžeš udělat třeba verzi, která po každém volání OpenGL zavolá glGetError a zaloguje to (včetně __FILE__ a __LINE__)? Aby bylo vidět, kde je přesně problém). Pak se dá pohnout dál.
(samozřejmě pro tebe by bylo nejlepší mít možnost to ladit na nVidii, ale myslím, že to bude nějaká drobnost)
EDIT: samozřejmě myslím nelogovat GL_NO_ERROR Smile
Tak jsem to prohnal ještě gDebuggerem a nic zvláštního tam nebylo.
Problém se objeví v ase.cpp na ř. 1784, voláno z drawglscene.cpp, ř. 507.
Jediné, co to píše, je tohle:
Debug String: Detected error: The debugged process asked for an extension function pointer (glUniform4fv) from one render context, but called this function pointer in another render context (context #2)
(myslím si ale, že tohle nemá na nic vliv. dost pochybuji, že by driver dynamicky generoval virtuální vstupní body těch funkcí pro každý kontext zvlášť).
Jiné chyby to nenašlo (akorát gDebugger pak crashnul taky Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 27. únor 2014, 21:33:37    Předmět: Odpovědět s citátem

Jasně mohl jsem dát rovnou #version 330 a dát podporu grafik pro Opengl 3.3, ale já chtěl aby to ještě jelo i na HD2000, které podle AMD podporují jen Opengl 3.1, prostě jsem chtěl více méně zajistít, aby to jelo na DirectX 10 kartách kromě Intel grafik, které některé podporují jen do Opengl 2.1.
Díky za rády jak hledat chyby.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Spytihněv



Založen: 05. 04. 2011
Příspěvky: 547
Bydliště: Praha

PříspěvekZaslal: 28. únor 2014, 01:27:32    Předmět: Odpovědět s citátem

Mně přidání extension nepomáhá - stále hlásí stejnou chybu při kompilování shaderu a následně v menu zamrzne při kliknutí na start. Přidání verze 330 nehází chybu, ale mrzne taky.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 28. únor 2014, 11:41:36    Předmět: Odpovědět s citátem

Moc pěkné, koukám že i na grafice jsi zapracoval.
Zkoušel jsem to na AMD FirePro (což je dost lowend) a měl jsem 10-20 fps v 640x480.
Po vypnutí světel jsem měl krásných 80-250, ovšem při kolizích u kulometu mi to spadlo zase na nějakých 10,
myslím že by nebylo špatné zauvažovat přece jen o low poly kolizních modelech
(nikdo nepočítá kolize se vším, pokud je geometrie velmi detailní),
protože pokud ti to v některých případech bude dělat 10 nebo 20 fps na high-end systémech,
kde moderní hry běží naprosto plynule s plnými detaily,
lidé se budou divit (nebo zkus kolize nepočítat každý snímek a interpolovat,
ale myslím že ani to v tomhle případě nepomůže, i když samozřejmě záleží, jak to máš udělané)
A taky vůbec nevím, jak zadat tu adresu, jsem SG-lama Smile
EDIT: bohužel se mi teď stalo, že jsem vypadl z mapy Sad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 4. březen 2014, 22:02:51    Předmět: Odpovědět s citátem

Mohli byste někdo zkusit jestli vám pujde testovací mapa na nVidii, kterou jsem vytvořil, abych to mohl rozjet na notebooku s Intel GMA 4500, která podporuje Opengl 2.1 a tak jsem to trochu upravil. Na něm to jede a nepadá.Takže uvidím jestli s tím budou mít problém i nVidie.
http://ulozto.cz/xMVzETdL/testovaci-mapa-7z

mar: ten gDEBugger je dost dobrý akorát se vněm vyznat a pochopit proč mu vadí zrovna ty chyby, i když u některých nevím proč mu to vadí, protože v mém kodu mně nepřijde, že je to špatně definované.
O těch kolizích vím a asi to budu řešit jen jednoduchými modely, ale nemám je vytvořené. No sice s interpolovaním nemám zkušenosti ani nevím jestli to jde nějak řešit v Bullet Physics knihovně, kterou využívám a jaktakž se snažím pochopit. Adresu můžeš zadat automaticky přes klávesu T jinak musíš ji zadat na té virtuální klávesnici. Jinak postup je vysvětlen v infu.
Spytihněv: díky za testování právě vydáním testovacích verzí to diky nim snad opravím.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Spytihněv



Založen: 05. 04. 2011
Příspěvky: 547
Bydliště: Praha

PříspěvekZaslal: 4. březen 2014, 22:23:08    Předmět: Odpovědět s citátem

Funguje!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 4. březen 2014, 23:31:21    Předmět: Odpovědět s citátem

Mivoj napsal:
No sice s interpolovaním nemám zkušenosti ani nevím jestli to jde nějak řešit v Bullet Physics knihovně, kterou využívám a jaktakž se snažím pochopit.

No interpolace nijak nesouvisí se simulací.
Jde o to, že budeš počítat simulaci řekněme fixně 20x za vteřinu (možná by stačilo i 15x, uvidíš sám) a budeš interpolovat pozici hráče (tj. v tvém případě kamery).
Máš dvě možnosti:
1) akumulátor (ten budeš potřebovat tak jako tak, pokud budeš chtít fixní time step): tj. na každý snímek přičteš k akumulátoru delta čas a jakmile přesáhneš periodu simulace (tj. 1/f), uděláš krok v simulaci a akumulátor vynuluješ (nebo odečteš 1/f).
aktuální hodnotu akumulátoru pak použiješ k lineární interpolaci hráče,
tj. old + (current - old) * (accum * f), kde f je frekvece simulace (řekněme 20)
nebo si můžeš akumulátor normalizovat a v tom případě budeš přičítat f*dt, to je asi elegantnější (a hlídat dosažení jedničky)
2) dynamická nelineární interpolace (toto používám momentálně já)
tj. na každý snímek spočítáš smooth += (current - smooth)/n (smooth je interpolovaná pozice, current je poslední pozice simulace)
n zvolíš podle delta času, aby to působilo dobře, já používám 0.0625 / dt
ještě musíš ošetřit speciální případ, kdy n <= 1, v tom případě jednoduše přiřadíš smooth = current
Jinými slovy toto plynule přibližuje předchozí pozici k nové - čím je blíž, tím míň se posouvá.
(doufám, že tam někde není překlep nebo blábol Smile
EDIT: testovací mapa u mě taky funguje
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 7. březen 2014, 17:30:44    Předmět: Odpovědět s citátem

No když fungovalo toto tak by měla i tahle verze. Doufam, že jste si nesmazali Stargate Simulator v0.311, protože ted stačí když do ní přepíšete ten bin a shadery a mělo by to jet. No a pokud to pujde, tak pak v nastavení grafiky povolte vykreslit zbývající objekty a uvidíme.
http://ulozto.cz/xHvLWFjS/sgs-bin-7z

mar: tak bullet tam má na to přímo fůnkci, kterou mam nastavenou asi jako dynamickou interpolaci a právě jsem netušil, že se to tak nazývá.
gScena.m_dynamicsWorld->stepSimulation(frameTime, 1, frameTime);
frameTime název se mně líbí víc než dt a výpočet dt provádí taky sám bullet. Jinak díky za vysvětlení pojmu.
kód:
   // stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds.
   // By default, Bullet will subdivide the timestep in constant substeps of each 'fixedTimeStep'.
   // in order to keep the simulation real-time, the maximum number of substeps can be clamped to 'maxSubSteps'.
   // You can disable subdividing the timestep/substepping by passing maxSubSteps=0 as second argument to stepSimulation, but in that case you have to keep the timeStep constant.
      virtual int   stepSimulation(btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 7. březen 2014, 18:24:29    Předmět: Odpovědět s citátem

Tak bohužel tě nepotěším. Padá Sad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 8. březen 2014, 22:31:01    Předmět: Odpovědět s citátem

Tak ted už snad.

http://ulozto.cz/x1YZj751/sgs-bin2-7z
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 9. březen 2014, 00:07:46    Předmět: Odpovědět s citátem

Funguje Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mivoj



Založen: 11. 12. 2012
Příspěvky: 32

PříspěvekZaslal: 10. březen 2014, 15:01:18    Předmět: Odpovědět s citátem

Fajn, tak že tady je to jako celek. Jinak vytvořil jsem kolizní model kulometů a u dalších modelů se mně zatím nechce vytvářet kolizní modely.
http://ulozto.cz/xEQL9x2b/stargate-simulator-v0-312-7z
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Inkubátor Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3, 4, 5  Další
Strana 4 z 5

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna