Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
megaton
Založen: 19. 05. 2016 Příspěvky: 17
|
Zaslal: 18. prosinec 2017, 16:25:11 Předmět: UE4 - rozbijatelne okna / update constant bufferu |
|
|
Caute, chcem v UE4 spravit rozbijatelne okna. Musi to byt efektivne, nechcem vytvarat tisice objektov.
V DX11 by som to spravil tak, ze si okno rozsekam na mensie ulomky, dam ich do jedneho meshu, do kazdeho vertexu ulozim id ulomku.
Vytvorim constant buffer kde budu ulozene matice (ci skor quaterniony) pre ulomky.
Po detekcii ze sa ma okno rozbit dam ulomky do fyziky, kazdy frame zoberiem ich transformacie z fyziky a hodim do constant buferu. Vo vertex shaderi potom vyberiem maticu podla id a transformujem vertex. Ziaden problem.
Otazka je ako toto spravim v UE4? Nezalezi mi ci v editore ci v C++.
Ma s tym niekto skusenosti? Alebo je vhodne to v UE4 riesit inak?
Asi najviac ma zaujima ako vytvorim a updatujem ten constant buffer a ako upravim vertex shader.
Co som zatial nasiel https://answers.unrealengine.com/questions/423891/how-to-update-efficiently-uniform-buffer-in-shader.html tak neexistuje efektivny sposob ako updatovat constant buffer v UE4. |
|
Návrat nahoru |
|
|
micky
Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
|
Návrat nahoru |
|
|
megaton
Založen: 19. 05. 2016 Příspěvky: 17
|
Zaslal: 19. prosinec 2017, 15:09:25 Předmět: |
|
|
Dik, to by stalo za pokus, zrejme by netrebalo ani modifikovat Unreal.
Texturu bude treba updatovat kazdy frame, ale zase ta bude velmi mala,
len 32KB pre 1000 objektov (32B na objekt: pozicia + quaternion + pripadne
scale) takze to nemusi vadit.
Inak uvazoval som i nad Apexom, ale chcem to pouzit i pre auta a Apex
ma limit max 2000 objektov na scenu a tiez tam asi nemas plnu kontrolu nad
tym ktore ulomky sa maju simulovat a ktore nie, takze by to mohol
byt vykonovy problem. |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 20. prosinec 2017, 10:54:22 Předmět: |
|
|
megaton napsal: |
Texturu bude treba updatovat kazdy frame, ...
|
To právě ne, koukni na to video ještě jednou. Posouval bys jen UVčka toho střepu. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
megaton
Založen: 19. 05. 2016 Příspěvky: 17
|
Zaslal: 20. prosinec 2017, 11:06:36 Předmět: |
|
|
No ja chcem ale preniest transformacie z fyziky do shaderu. Pouzil by som texturu ked uz ten update constant bufferu v UE4 nefunguje idealne. Nie je mi jasne ako by mi pomohlo posuvat UV. V ktorej minute to je? |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 20. prosinec 2017, 12:39:04 Předmět: |
|
|
Aha, ty je chceš přenýst z fyziky počítané v reálném čase. Myslel jsem, že fyzika by byla předpočítaná a v textuře by bylo uloženo více framů. Tak to je jiná.
Řekl bych, že v UE by to mělo jít přes kostěný animace (skinned mesh, nebo jak se to jmenuje?). To se kreslí taky na jeden drawcall a kost má přesně to, co potřebuješ - transformaci. Kdysi jsem takhle zkoušel v UE rozpohybovat vlastní fyzikou model letadla. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
micky
Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 21. prosinec 2017, 11:22:38 Předmět: |
|
|
Přenášet transformace z fyziky rovnou do shaderu mi přijde zvláštně na půli cesty. Budou těch střepů desetitisíce? Pak to stejnak vytíží fyziku (malé a rychlé objekty) a použil bych předpočítanou animaci třeba z textury. I za cenu, že mi pak porovnají hru s mafií 1.
Nebo je to vážně takový rozdíl použít regulérní entity?
S těmi kostmi, to je de facto ragdoll, ne? _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
|
megaton
Založen: 19. 05. 2016 Příspěvky: 17
|
Zaslal: 21. prosinec 2017, 17:56:21 Předmět: |
|
|
Predpocitane ulomky by som nerad robil v roku 2018, ak sa to da spocitat realtime.
Dynamickych ulomkov bude do 1000, este to obmedzim podla vykonu fyziky. Co staci asi tak na 2 auta. Rozbijem okno,
ulomky blizko narazu pridam do fyziky, takze realne spadnu na zem a po cca 2s ich z fyziky vymazem.
Niektore ulomky zostanu na svojom mieste na aute, tych moze byt vela, i 100 tisic ak mas velke mnozstvo aut.
Tie nebudu vo fyzike. Staticke i dynamicke bude renderovat jeden shader naraz, az na to
ze staticke nepotrebuju maticu z textury. Textura pre matice bude len jedna na vsetky auta.
Je preto vhodne aby ten rendering bol rychly, nemozu to byt entity.
Navyse mam pocit ze UE4 by skolaboval az by som v realnom case vytvoril 1000 entit.
Ten skinned mesh by mohol fungovat, ale to mi pride zlozitejsie na implementaciu. Necham si ho ako zalozny
plan az by textura nefungovala dobre. |
|
Návrat nahoru |
|
|
|