.[ ČeskéHry.cz ].
Generování lightmap - AO
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
VODA



Založen: 29. 07. 2007
Příspěvky: 1667
Bydliště: Plzeň

PříspěvekZaslal: 28. květen 2018, 16:50:24    Předmět: Odpovědět s citátem

Ty blázne, to byl fofr. Smile
Jseš borec. Takhle rychle dodat změny.Smile

Když jsem měl chvilku volna v práci, tak jsem to integroval do enginu a vyzkoušel. Funguje to parádně.

To hypercore zrychlení je hodně znát, jak na rychlosti výpočtu, tak i na vytížení pc. Opravdu během toho nejde nic dělat. Smile

Jinak jsem zjistil, že pro opravdu velké mapy program konzumuje velké množství paměti, dokonce v jednu chvíli nešlo alokovat další (a nějaký jiný program schodil celé Windowsy), ale to se dalo čekat při té obří scéně, kdy mám ještě nastaveno 3 herní centimetry na texel.

Takže jsem začal pracovat na systému, kdy se scéna naseká na nějaké menší kusy, tam se spočte AO + se provede nějaký handling přechodů mezi dlaždicemi a pak se vše zas uloží do jednoho souboru scény.
To by mělo snížit paměťovou náročnost a možná i dobu výpočtu.

Takže ještě jednou velké díky.
Ukázky určitě nějaké dodám, ale mám žalostně málo času dělat něco pořádného, takže jsem byl rád, že jsem se dostal k tomuto.
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



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

PříspěvekZaslal: 28. květen 2018, 21:15:01    Předmět: Odpovědět s citátem

No zrovna jsem něco na lightmapperu ladil, takže to nebyl zas takový problém.
Můžeš zkusit novou verzi? (link je pořád ta 1.9 viz výš)
Na konci to vypíše max. využití paměti v MB a stáhnul jsem to zhruba na čvrtinu.
Ono já pro sebe generuji 3 lightmapy (+1 temporary buffer) se třemi komponentami, AO byl takový bonus navíc.
Reálně by to šlo stáhnout ještě na třetinu toho, co teď, ale to bych musel kompletně předělat a to se mi nechce Smile

Ideální by bylo nastavovat detail lightmapy pro jednotlivé objekty (interně to můžu per triangle), přemýšlím jestli z toho blacklistu neudělat spíš flagy,
kde by sis mohl nastavit detail lightmapy a jestli "vrhá stíny" apod,
to by bylo mnohem flexibilnější než teď.
Těch parametrů tam je i víc, ale prostě z obj to nevyčtu.

Jinak vím ještě o dvou problémech, které časem asi budu řešit, jeden je problematické groupování v určitých případech (nic zásadního),
ale druhý je občas problém v rozích/na krajích group to občas vytvoří bílý pixel,
sice se na krajích snažím posouvat ty vertexy, odkud se sampluje,
ale nějak to není pořád ono; docela mě překvapuje, že sis toho ještě nevšimnul Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1667
Bydliště: Plzeň

PříspěvekZaslal: 29. květen 2018, 17:00:45    Předmět: Odpovědět s citátem

Funguje a vypadá to i paměťově šetrnější i když jsem zatím neměl čas na jakékoliv hlubší testování. Díky! Smile

S tím nastavováním detailů si nedělej starosti, stačí mi ten blacklist. Já potřebuji, aby byla velikost pixelů konzistentní, takže detail lightmapy nepotřebuji.
Takhle je to super.

Už jsem si naprogramoval optimizer, takže se scéna nadělí na bloky, kolem dokola se ještě vezme vše ze samplovací vzdálenosti a spočtou se lightmapy. A pak se z výstupu to samplovací okolí zas odstraní, takže mi budou bloky hezky navazovat.
Akorát se tedy vyplatí použít NPOT textury. Ale už jsem se s tím smířil. Smile

No a žádného bílého pixelu jsem si nikdy nevšiml.
Myslím si, že jsem spokojený. Takhle to dělá přesně to, co jsem chtěl. Smile
Takže mockrát děkuji.
Své jméno v kreditech jakékoliv hry, kterou se mi povede dokončit, máš přislíbené.
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VODA



Založen: 29. 07. 2007
Příspěvky: 1667
Bydliště: Plzeň

PříspěvekZaslal: 30. květen 2018, 15:35:25    Předmět: Odpovědět s citátem

Když nad tím přemýšlím, možná, že by přeci jenom ten blacklist mohl být trochu rozšířený.
Stačilo by, kdyby za každým objektem, který chci nějak omezit, byly dva atributy (stačí 0/1), jeden by říkal, jestli daný objekt nemá přijímat stíny (tedy, aby se pro něj nepočítalo AO), druhý flag by říkal, jestli se má vypnout "vrhání stínů".

Takže něco ve smyslu:
Box01 0 1 // Přijímá stíny, ale sám je nevrhá (netestují se s ním kolize).
Box02 1 0 // Vrhá stín na ostatní objekty, ale sám stíny nepřijímá.
Box03 1 1 // Nepočítá se s ním (stejné jako když je v blacklistu v aktuální verzi).

Šlo by to udělat? Smile

EDIT: Nebo by stačil jeden flag 0/1/2, kde 0 je "nepočítá se s ním", 1 pak "přijímá stíny, ale není zdrojem kolizí", 2 "je zdrojem kolizí, ale nepočítá se pro něj AO).
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
mar



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

PříspěvekZaslal: 30. květen 2018, 20:35:59    Předmět: Odpovědět s citátem

Ok, máš to tam, udělal jsem to ale po svém, že ti prostě dám k dispozici interní flagy.
Tzn. blacklist jsou teď object flags. Pokud tam není číslo, chová se jako předtím (blacklist)
(link je pořád ta 1.9)

Seznam flagů (jsou popsané i v texťáku v zipu):
kód:

FLG_INVISIBLE    =    1    // no occlusion
FLG_TRACE_ALPHA  =    2    // not exposed to AOGen
FLG_UNLIT        =    4    // no incoming occlusion = white for AO
FLG_SKY          =    8    // not used for AO
FLG_NO_SHADOW    =    16   // same as FLG_INVISIBLE
FLG_BOTHSIDED    =    64   // not used for AO

// Lightmap quality mask:
// 8 = 16x (very low), 9 = 12x, 10 = 8x, 11 = 6x, 12 = 4x, 13 = 3x, 14 = 2x, 15 = 1.5x
// 0 = 1x, 1 = 0.75x, 2 = 0.5x, 3 = 0.375, 4 = 0.25x, 5 = 0.1875, 6 = 0.125x, 7 = 0.09375x (very high)
FLG_LMAP_QUALITY_MASK = 15 << 16,
FLG_LMAP_QUALITY_SHIFT = 16


Ta kvalita (relativní detail) samozřejmě znamená, že tu konstantu (8=16x) posuneš doleva o 16 bitů, tj. 0x80004 znamená,
že objekt bude bílý a zabere v lightmapě minimum (16x menší detail), ale objekty okolo od něj budou přijímat AO

Ještě přemýšlím, že bych ti mohl nějak umožnit zadat trace png bitmapy (TRACE_ALPHA) flag, sampluje to pak při raycastování alfa kanál a dělá to v podstatě alpha test na 0.5,
to by se mohlo hodit třeba pro kytky nebo keře, že by ten stín dole nebyl jenom placka. Chceš? Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



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

PříspěvekZaslal: 30. květen 2018, 22:21:21    Předmět: Odpovědět s citátem

Hmm, železo se má kout, dokud...
Přidal jsem alphamapy a ještě jednu drobnost, formát starého blacklistu je teď
např.

kód:

Teapot02 2 &alphamap "groundpalm_1k.png"

tj. název materiálu (ident. nebo string), pak flags a pak optional seznam spec. parametrů:
&alphamap "filename.png" načte png jako transparency mapu (alpha threshold 0.5)
&model 1 přiřadí model index objektu, co to znamená je, že se nikdy nevytváří lightmap groups napříč "modely", tj. v podstatě group index, který ti zajistí, že se nebudou mezi sebou groupovat

A to by ti snad mohlo na nějakou dobu stačit...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1667
Bydliště: Plzeň

PříspěvekZaslal: 31. květen 2018, 16:22:17    Předmět: Odpovědět s citátem

Perfektóza! Smile
Už jsem zaintegroval změny a vše funguje krásně.
U alfa map jsem trošku panikařil, že mi to nefunguje, ale bylo to tím, že objekt měl špatné UV souřadnice. Wink

Myslím, že mi to bohatě vystačí, i na dlouhou dobu.
Chtělo by to nějakou ukázkovou scénu... kde jí vzít a nekrást. Very Happy
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6
Strana 6 z 6

 
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