.[ ČeskéHry.cz ].
8 bit textury s paletou v opengl?
Jdi na stránku Předchozí  1, 2
 
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
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 13. září 2009, 17:22:25    Předmět: Odpovědět s citátem

Nouma> Mimochodem, psal jsi, že textury nemají vždy velikost 2^n x 2^m. Co takhle použít rectangle textury? Ty umožňují libovolné rozměry, akorát přijdeš o:
- mipmapy (asi nepotřebuješ)
- bilineární filtrování (dá se dodělat přes shader)
- opakování textur (taky se dá dodělat přes shader)
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 13. září 2009, 22:37:05    Předmět: Odpovědět s citátem

Ladis napsal:
Pokud vím, všechny staré hry v době, kdy měly podporu sw renderingu, měly 8bitové textury. Můžeš si např. stáhnout zdroják Quake 2 a podívat se.

Dá se to udělat třeba takhle (viz tohle vlákno):

kód:
glEnable(GL_TEXTURE_2D);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, texID);
glColorTableEXT(GL_TEXTURE_2D, GL_RGBA8, 256, GL_RGBA, GL_UNSIGNED_BYTE, palette);
glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, width, height, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, texture);

Ostatní řešení nejsou dostupná všude (např. GL_EXT_paletted_texture je jen na některých NVidiích).

BTW hrozně se mi líbí odpovědi typu "na co to potřebuješ", "to už se dneska nepoužívá" nebo obcházející řešení, které kvůli kompresi zprzní původní obrázek Wink.


Odpověd od GLEW:

citace:
GL_EXT_paletted_texture: MISSING
------------------------
glColorTableEXT: MISSING
glGetColorTableEXT: MISSING
glGetColorTableParameterfvEXT: MISSING
glGetColorTableParameterivEXT: MISSING
----------------------
GL_ARB_imaging: MISSING
---------------
glBlendEquation: OK
glColorSubTable: MISSING
glColorTable: MISSING
glColorTableParameterfv: MISSING
glColorTableParameteriv: MISSING
...


Už jsem to zkoušel, a opravdu tam ty funkce nemám Sad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 13. září 2009, 23:47:54    Předmět: Odpovědět s citátem

Ladis napsal:
obcházející řešení, které kvůli kompresi zprzní původní obrázek Wink.

Existuje software od ATI (i knihovna), který je určen na kompresi textur offline, docela mu to trvá, ale výsledek je poměrně kvalitní. To, co dělá OpenGL driver, je nejrychlejší implementace, kde vůbec nejde a nešlo o kvalitu.

Nejlepší obcházecí řešení je ale přes shader, tam se neztratí nic a je robustní. Kdyby dnes driver musel implementovat paletted_texture, dělal by to přesně tak, jak je zde naznačeno.

A na závěr pěknej příspěvek, kterej naprosto jasně dává najevo, že je lepší se shadery naučit raději dříve než později, protože pak už to bude těžší právě proto, že "zvyk je železná košile". Do toho:
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=263880#Post263880
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 14. září 2009, 09:30:17    Předmět: Odpovědět s citátem

Chápu to správně, že tento způsob (přes ty shadery) bude fungovat jenom při GL_NEAREST filtraci textur?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 14. září 2009, 09:59:59    Předmět: Odpovědět s citátem

Rectangle textury nejdou filtrovat, takže o tom ani nemůže být řeč. Vždyť ale přece není problém napsat ten filtr v shaderu, ne?
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



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

PříspěvekZaslal: 14. září 2009, 10:08:57    Předmět: Odpovědět s citátem

frca napsal:
Chápu to správně, že tento způsob (přes ty shadery) bude fungovat jenom při GL_NEAREST filtraci textur?

ano. mala chybycka v mojom priklade. ma tam byt +1.0/512.0 aby sa vzorka brala zo stredu pixela textury. teda (0,0) je lavy dolny roh laveho dolneho pixela v texture. stred laveho dolneho pixela je na (0.5/w , 0.5/h) koordinatoch.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 14. září 2009, 12:24:57    Předmět: Odpovědět s citátem

Tak ted jsem zmatený Smile každý mi napsal jiný příklad, a taky se liší od těch co jsem našel na netu Sad

Neměl by někdo fungující příklad? myslím tím kompletní shader a funkci která ho bude používat? byl bych moc vděčný, protože se mi nechce učit práce se shadery když dělám jen v 2D a k tomu musím přepisovat ten engine.

Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 14. září 2009, 12:32:19    Předmět: Odpovědět s citátem

nou ti dal příklad pro GL_TEXTURE_1D.

Já ti dal příklad pro GL_TEXTURE_RECTANGLE_ARB, který je lepší pro non-power-of-two textury a indexuje se pomocí souřadnic pixelů, ne pomocí normalizovaných koordinátů.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 14. září 2009, 12:40:15    Předmět: Odpovědět s citátem

Eosie napsal:
nou ti dal příklad pro GL_TEXTURE_1D.

Já ti dal příklad pro GL_TEXTURE_RECTANGLE_ARB, který je lepší pro non-power-of-two textury a indexuje se pomocí souřadnic pixelů, ne pomocí normalizovaných koordinátů.


Tu extenzi "GL_ARB_texture_rectangle" jsem včera přidal, taky kontroluji "GL_EXT_texture_rectangle" a "GL_NV_texture_rectangle", takže mi to funguje. Problém mám spíše s těmi shadery Smile

No ale když žádný kompletní příklad na ty shadery nemáte, kouknu se ještě na netu, snad něco najdu Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 14. září 2009, 13:35:24    Předmět: Odpovědět s citátem

Dávál jsem tu odkaz na lighthouse3d, kde jsou tutoriály. Stačí si je všechny projít a dát tomu pár hodin, je to až příliš lehký. NV a EXT verze nepoužívej, pouze ARB verze umí spolupracovat s shaderama.
_________________
AMD Open Source Graphics Driver Developer
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
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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