.[ ČeskéHry.cz ].
Tvorba textury stromu v OpenGL

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Jorns



Založen: 27. 08. 2013
Příspěvky: 14

PříspěvekZaslal: 27. srpen 2013, 22:19:11    Předmět: Tvorba textury stromu v OpenGL Odpovědět s citátem

Zdravim, hlavne tych skusenejsich. V opengl sa pohybujem uz nejaky ten cas, a narazil som na problem s texturovanim a to konkretne s vytvorenim "stromu". Strom je textura s castou ktorou sa nema zobrazit nacierno. Pokial pouzijem funkciu glBlendFunc(GL_ONE,GL_ONE), tu ciernu cast nezobrazi ale objekt je vykresleny polopriehladne, skoda. Neviete prosim niekto v com je problem ? Alebo upravit alfa kanal v texture (zobrazit 00 (HEX) nezobrazit FF(HEX))??
Apropo pouzivam vlastny parser na loading textur vo formate .dds (a8r8g8b8)

Plus este jedna vec, a to ze mi nechce zobrazit textury vacsie nez 256x256, t.j. pokial pouzijem 512x512 aplikacia padne.

Vdaka za pomoc...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 28. srpen 2013, 10:29:42    Předmět: Odpovědět s citátem

K tym velkym texturam... nealokujes ich docasne nahodou na stacku? Lebo 512x512x4 je 1 MB a to by uz stack nemusel dat. Ale to je len taky tip.

Neskusis sem dat viac infa? Lebo ak to popises presnejsie, tak si mozno odpovies i sam.

Pri glBlendFunc(GL_ONE, GL_ONE) sa stane to, ze sa nascitaju vsetky zlozky sourcu (aktualneho fragmentu) s tym, co uz v targete (pixeli frame bufferu (render targetu)) bolo. Ak ma prichadzajuci fragment RGBA(0.0, 1.0, 0.0, 1.0) -- plne viditelny zeleny, tak ti "prepise" uplne cokolvek co tam bolo na cistu plnu zelenu a nema sancu byt akokolvek "polopriehladny". Cokolvek, co pride po nom, uz zelenu ani alfu nevyzenie vyssie (ledaze mas float target, co nemas). Ak je prichadzajuci fragment (0,0,0,0), tak sa veselo nascita a vysledok vobec nijako neovplyvni.

Bavime sa samozrejme o pripade, ze fragment prejde cez depth (a stencil) test.

Inak co sa tyka toho alfa kanalu, tak ak je to 0.0, tak ma byt pri tejto (beznej) reprezentacii neviditelny a ak je to 1.0 (0xFF byte alebo 0x3f800000 float32) tak je plne viditelny.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.


Naposledy upravil pcmaster dne 28. srpen 2013, 10:37:33, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



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

PříspěvekZaslal: 28. srpen 2013, 10:34:54    Předmět: Re: Tvorba textury stromu v OpenGL Odpovědět s citátem

Čau, to chceš je určitě alpha a pak buď alphatest nebo alpha blending (GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA).
Co se týká pádu, dost pochybuji, že by to kvůli tomu padalo. I na prastaré Voodoo3, která měla limit 256x256 to nepadalo, ale byl tam fallback do sw režimu (takže to pak běželo zatraceně pomalu). Jinými slovy bych hledal chybu u sebe, to že "něco padá" je dost široký pojem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Jorns



Založen: 27. 08. 2013
Příspěvky: 14

PříspěvekZaslal: 28. srpen 2013, 16:45:33    Předmět: Re: Tvorba textury stromu v OpenGL Odpovědět s citátem

mar napsal:
Čau, to chceš je určitě alpha a pak buď alphatest nebo alpha blending (GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA).
Co se týká pádu, dost pochybuji, že by to kvůli tomu padalo. I na prastaré Voodoo3, která měla limit 256x256 to nepadalo, ale byl tam fallback do sw režimu (takže to pak běželo zatraceně pomalu). Jinými slovy bych hledal chybu u sebe, to že "něco padá" je dost široký pojem.


Parsing textur je opraveny, chyba bola v mojom parseri, ktory sa spoliehal na velkost suboru ulozenu v headeri obrazku, ale tato hodnota pri 512x512 formate nebola korektna (delena dvoma), takze teraz mi to pocita program osobne, a funguje to perfektne.

A k tej alphe:


Vsak sa pozrite na to a zistite ten problem. Ja som z toho paf.
Este to musim poskusat. Inak mimochodom tie okraje toho "stromu" su cierne...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



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

PříspěvekZaslal: 28. srpen 2013, 16:55:17    Předmět: Re: Tvorba textury stromu v OpenGL Odpovědět s citátem

Jorns napsal:
Vsak sa pozrite na to a zistite ten problem. Ja som z toho paf.
Este to musim poskusat. Inak mimochodom tie okraje toho "stromu" su cierne...

No toto je typicky aditivní blending (proto tam, kde je černá, není žádná změna), jak se snažil popsat pcmaster, ale evidentně jeho zevrubný popis nepadl na úrodnou půdu. Co takhle si to nejdřív přečíst a pak se znovu zeptat? Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



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

PříspěvekZaslal: 28. srpen 2013, 18:58:25    Předmět: Re: Tvorba textury stromu v OpenGL Odpovědět s citátem

Ok, vyměkl jsem Smile
Nejjednodušší řešení je asi toto:
Načti si texturu (exportuj třeba do png) v nějakém editoru, přidej alfa kanál, označ si černou oblast a u ní nastav alfu na 0.
Exportuj do png s alfou, pak zkonvertuj zpátky do dds.
V enginu místo glBlendFunc(GL_ONE, GL_ONE) použij glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA).
Hotovo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Jorns



Založen: 27. 08. 2013
Příspěvky: 14

PříspěvekZaslal: 28. srpen 2013, 19:03:07    Předmět: Re: Tvorba textury stromu v OpenGL Odpovědět s citátem

OK dikes skusim, uz som to KONECNE pochopil Shocked

mar napsal:
V enginu místo glBlendFunc(GL_ONE, GL_ONE) ...


Od enginu to ma este daleko..., ale co neni moze byt...

Hmm tie HL2 textury to robia velmi realisticke, este musim dat bumpmapping a je to...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 28. srpen 2013, 19:17:05    Předmět: Odpovědět s citátem

OT: Ježiši... až teď mi došlo, že strom je strom jako kytka.. já v tom hledal pořád vizualizaci nějakýho BVSka nebvo QuadTree... hm.. asi už mam dost Rolling Eyes Confused
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Dlaha



Založen: 30. 07. 2007
Příspěvky: 598
Bydliště: Olomouc

PříspěvekZaslal: 28. srpen 2013, 20:16:09    Předmět: Odpovědět s citátem

perry napsal:
OT: Ježiši... až teď mi došlo, že strom je strom jako kytka.. já v tom hledal pořád vizualizaci nějakýho BVSka nebvo QuadTree... hm.. asi už mam dost Rolling Eyes Confused


To samé u mě. Ale já jsem nikdy 3D engine nepsal, to je deformace tady od vás z fóra Very Happy
_________________
Other Inside
Greenlitnuto!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Peto



Založen: 01. 08. 2007
Příspěvky: 206
Bydliště: Košice

PříspěvekZaslal: 28. srpen 2013, 22:11:02    Předmět: Odpovědět s citátem

Jorns> Potom by si sa mal este poobzerat po tom alfa teste (alebo clip() v shadery), blending je pri stromoch naprd, tebe to teraz funguje lebo strom je iba placka, pokial bude zlozeny z viacerych cez seba iducich polygonov, bude ti to robit problemy...
_________________
Code or die!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Jorns



Založen: 27. 08. 2013
Příspěvky: 14

PříspěvekZaslal: 29. srpen 2013, 00:13:24    Předmět: Odpovědět s citátem

Peto napsal:
Jorns> Potom by si sa mal este poobzerat po tom alfa teste (alebo clip() v shadery), blending je pri stromoch naprd, tebe to teraz funguje lebo strom je iba placka, pokial bude zlozeny z viacerych cez seba iducich polygonov, bude ti to robit problemy...


Problem som vyriesil, doplnenim parseru a tzv. color key a potom pri rendere pouzit alpha test. Pokial ma strom okolitu farbu napr. 192, 68, 90 parser mi to zisti, pomeni vsetky tieto farby - teda alfakanal tychto farieb z FF na 00 a pouzitim alfa testu to funguje ako hodinky a ani netreba photoshop, za predpokladu ze mam hotovu texturu. Takze staci urcita farba ktora je jednotna a je to...


Ale dalsi problem spociva v tom, ze pokial rendrujem strom z troch placiek, teda jedna je 0, dalsia je 45 a dalsia 90 stupnov natocena v ose Y, nejak divne ich zobrazuje, myslim ze ich to prekryva (asi si odpoviem sam ak je problem vyrieseny stencilom, ale to je zlozite a je to len moja domienka). Obrazok poskytnem potom pokial neviete o co ide, ale program pisem zatial na druhom PC, a dokonca je to minibook Very Happy

Ale kazdopadne vdaka za odbornu pomoc, lebo neviem dokedy by som sa v tom vrtal, avsak zanedlho tu budem zasa otravovat ale s niecim inym, ale dufam ze nie heh.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Peto



Založen: 01. 08. 2007
Příspěvky: 206
Bydliště: Košice

PříspěvekZaslal: 29. srpen 2013, 08:35:49    Předmět: Odpovědět s citátem

Ak ti robi to prekryvanie to je prave tym chybajucim alfa testom (alebo ze je zle nastaveny). Skus vypnut alfa blending a nechat zapnuty iba alfa testing, aby si videl ci ti ten alfa testing skutocne ide (mal by fungovat aj bez alfa blendingu)
_________________
Code or die!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Jorns



Založen: 27. 08. 2013
Příspěvky: 14

PříspěvekZaslal: 29. srpen 2013, 16:18:40    Předmět: Odpovědět s citátem

Peto napsal:
Ak ti robi to prekryvanie to je prave tym chybajucim alfa testom (alebo ze je zle nastaveny). Skus vypnut alfa blending a nechat zapnuty iba alfa testing, aby si videl ci ti ten alfa testing skutocne ide (mal by fungovat aj bez alfa blendingu)


Nie nie, alpha test je zapnuty, praveze bez neho by vykreslilo aj to farbne pozadie tej placky, a blending je vypnuty. Ale uvidime...
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 -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
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