Simulácia alpha-masky

Sem vkládejte editovatelné kusy kódu a tutoriály.
Odpovědět
Uživatelský avatar
ipq
Příspěvky: 921
Registrován: srpen 15, 2011, 7:31 pm
Bydliště: Petržalka

Simulácia alpha-masky

Příspěvek od ipq » září 16, 2012, 12:14 am

Ahojte, v poslednej dobe to ide so mnou biedne čo aj vysvetľuje, prečo už toho sem moc nedávam ale keď niečo vynájdem ako Tesla(i keď už iný s tým môže byť vopred), tak si to nenechám len pre seba ako nedokážem to dlho nechávať si, čo môže byť užitočné aj pre ostatných.
Chcel som pôvodne sem dať i ako robiť plošinovské kolízie s 80-tých rokov ale zrejme zabudol som, tak toto je provizorná náhrada.

Vysvetlivka
O čo ide? Začal som sa znovu venovať retro veciam resp. tomu ako sa dalo v minulosti dosiahnuť efektu, že sa zobrazí 2D obraz s alpha maskou, vtedy v starých rokoch vôbec nebývali žiadne nejaké obrázkové súbory, ktoré by preferovali alpha kanál. Až neskôr sa začal popularizovať PNG formát, v ktorom potom bolo implementované RGBA(A ako alpha kanál). Ale v tej dobe niektoré počítače alebo hracie konzole vôbec také obrázky nepodporovali ale zato miesto toho mali podporu blendov. Blendy sa používali ako náhrada efektov jak v 2D hrách, tak i v 3D hrách, dokým ich nenahradili shadery. Už 16-bitové konzole ako je Sega Genesis(známa ako Sega Mega Drive) alebo SNES konzola malo podporu aditívneho a subtraktívneho miešania farieb za pomocí toho už bolo možné spraviť simuláciu. Tak tiež i 32-bitové/64-bitové konzoly ako je Playstation série, N64, Xbox a Gamecube ich tiež podporovali ale už v pokročilejšom systéme.

Funkčnosť
Stačí za pomoci dvoch blendov(aditivný a subtraktivný) u každého vykresliť obrázok. Ale najprv je potreba rozdeliť obrázok, ktorý obsahuje alpha kanál, na dva(jeden normálny ale bez alpha masky nahradeným čiernym pozadím a druhý ako alpha maska).

Príklad nám poslúži tento obrázok:
Obrázek
[zdroj: Foxkeh.jp/Foxkeh.com]

Najprv si vytvoríme prvú kópiu toho obrázku ale miesto priehľadného miesta bude to nahradené čiernym pozadím.
Obrázek
Potom si spravíme druhú kópiu toho obrázku ale to bude obsahovať len obrázok alpha masky, ktorá tam je.
Obrázek
Poznámka: Game Maker pri subtraktívnom blende invertuje paletu farieb!

U Game Makeru stačí vo drawe vložiť tento script:

Kód: Vybrat vše

draw_set_blend_mode(bm_subtract);
//obrazok s alpha maskou
draw_sprite(spr_alpha,0,x,y);
draw_set_blend_mode(bm_add);
//obrázok s čierným pozadím
draw_sprite(spr_image,0,x,y);
//deaktivácia blednu
draw_set_blend_mode(bm_normal);
Výsledkom by malo byť toto:
Obrázek
Pokiaľ si s tým neviete rady, môžem aj dodať príklad!

Využitie
Úprimne, takmer nepoužiteľné. Maximálne sa to dá využiť napr. v GoldSource Enginu, pretože ten alpha-masku nepodporuje ale blendy áno(i keď rozšíriteľné doplnky už existujú) a najviac moderné Enginy už majú podporu alpha-masky. I Game Maker už podporoval alpha-masku tuším od štvorky ale bolo potreba obraz i s informáciou alpha-masky rozdeliť a za pomocí draw_sprite_alpha vykresliť(malo to podporu i priehľadnosti). Úprimne v starých verziach to bolo(i s priehľadnosťou) totálne náročne na výkon tím že o vykresľovanie sa staralo len softwarové vykresľovanie, do 6 verzie to bolo nahradené scriptami, ktoré to skompostujú do jedného, od 7 boli pridané scripty pre načítavanie PNG i TGA obrázkov(áno i TGA podporovali aplha-masku a DDS tiež). GM8 už dostal natívnu podporu.

Takže aký je výsledok, na normálne využitie obrázkov to nemá ale napr. na surface by sa to ešte dalo ako je klasický transparent alebo kompletný prechod ale nemám to otestované.
Naposledy upravil(a) ipq dne září 24, 2013, 2:53 pm, celkem upraveno 1 x.

BboyScary
Příspěvky: 239
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice

Re: Simulácia alpha-masky

Příspěvek od BboyScary » září 11, 2013, 3:42 pm

vysvětlené to je snad dobře ale když se dívám na obrázky tak jsou úplně stejné. Nevím čeho se má docílit ve výsledném obrázku když je stejný jako origoš.

Uživatelský avatar
Nichar
Redaktor
Příspěvky: 435
Registrován: srpen 6, 2011, 1:51 pm
Facebook: http://www.facebook.com/nikolas.charalambidis
Bydliště: Praha

Re: Simulácia alpha-masky

Příspěvek od Nichar » září 11, 2013, 5:19 pm

Obrázky jsou sice stejné, ale tady jde o pozadí. Všimni si ocasu, který má průhlednou auru kolem sebe. Na pozadí působí přirozeně. Stejného efektu lze už snadněji dosáhnout v GM8 a výš...

Tohle byl jediný tvůj důvod pro otevření rok starého topicu?
The Scarecrow - 2. místo v prestižní soutěži, online highscore!
Symphony of good and evil: Finding the end - Soutěžní kousek (3. místo)
NWinAPI 0.2.gex | nMath.dll | nBeep.dll - Moje DLL a GEX
Vektorová galerie - Začátek mých vektorů

BboyScary
Příspěvky: 239
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice

Re: Simulácia alpha-masky

Příspěvek od BboyScary » září 24, 2013, 9:56 am

ne důvod spíš jsem si toho dříve nevšiml a když jsem se teď díval nepochopil jsem. Ale dík za vysvětlení už vím o co jde :)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti