Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. říjen 2018, 07:37:37 Předmět: MonoGame import textury s alfou |
|
|
Používáte někdo MonoGame?
Potřebuju importovat texturu s alfakanálem, ale vypadá to, že content pipeline tool umí alfu jen u PNG. Ale PNG moc rád nemám, protože na tvorbu textur používám Adobe Photoshop a ten z nějakýho důvodu u PNG exportuje alfu jen jako průhlednost vrstvy. Tam, kde je alfa 0, tam ani neexportuje správnou barvu pixelu, takže to je pro textury nepoužitelné. Radši bych TGA, nebo přímo PSD, ale všechno se to v MonoGame importuje bez alfy.
Ptal sem se na to i na jejich community diskuzi, ale zatim nikdo neodpověděl (přestože to tam celkem žije). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 24. říjen 2018, 08:53:22 Předmět: |
|
|
Asi bych to v PS ukladal do TGA a nejakym Imagemagickem to konvertoval do PNG v tom formatu, ktery potrebuju. Ale to asi neni rada, kterou hledas... _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. říjen 2018, 08:55:38 Předmět: |
|
|
Taky mě to napadlo, ale radši přímou cestu, bude-li existovat. Asi by šel napsat vlastní importer textur, ale nechce se mi :) _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
Spytihněv
Založen: 05. 04. 2011 Příspěvky: 547 Bydliště: Praha
|
Zaslal: 24. říjen 2018, 10:16:26 Předmět: |
|
|
Zkusil jsem to (Photoshop CC) a skutečně se u PNG alfa kanál neexportuje, místo něj je průhlednost vrstev, takže přesný opak TGA. |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 24. říjen 2018, 10:35:25 Předmět: Re: MonoGame import textury s alfou |
|
|
Není to tak, že do nulové alfy dá Photoshop fixní barvu (černou/bílou?) (dělá to i GIMP myslím).
Takže buďto můžeš zkusit přejít na premultiplied alpha, nebo použít nějaký tool, který vyfilluje okraje s nulovou alfou podle nenulového okolí, jako třeba můj tool, který jsem tady nedávno někam postoval:
http://www.ceske-hry.cz/forum/viewtopic.php?t=4211 |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 24. říjen 2018, 11:02:29 Předmět: Re: MonoGame import textury s alfou |
|
|
Nebo možná nechápu, v čem je problém?
Četl jsem na nějakém Adobe fóru, že PNG nepodporuje alfa kanál, ale to je naprostý nesmysl.
PNG podporuje až 4 kanály (tedy i alfa kanál), 16 bitů na kanál a dokonce i paletu s alfou, plus prehistorický chroma key. Takže problém určitě není v PNG formátu. |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. říjen 2018, 11:13:49 Předmět: |
|
|
Tak ono to neni TGAčkem...ono je potřeba v content pipeline tool zapnout právě premultiply alpha. Což já ale nechci, proč bych měl chtít přenásobit rgb alfou? Na co je to dobrý?
mar: neříkal sem, že je problém v PNG formátu, ale ve Photoshopu. U PNG se tam nedá pracovat s alfou jako s kanálem, pouze jako s průhledností vrstvy, což je naprd.
Ale jak sem psal o pár řádků vejš, nový poznatek je, že import do mono game je stejný pro PNG i TGA, což sem myslel, že neni. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 24. říjen 2018, 11:28:38 Předmět: |
|
|
]semo[ napsal: |
Tak ono to neni TGAčkem...ono je potřeba v content pipeline tool zapnout právě premultiply alpha. Což já ale nechci, proč bych měl chtít přenásobit rgb alfou? Na co je to dobrý? |
Tak je to na to, že pokud pak máš nulovou alfu, tak ti je jedno, jaká pod tím byla barva, protože po premult z toho bude stejně černá
Pak jenom upravíš blending a vyhneš se tím problémům, jako černé/bílé haló okolo hran, co přechází do nulové alfy, tj. v podstatě jenom přičtěš premult.
rgb a destination se scaluje stejně, jako u klasického alfa blendingu (tj. GL_ONE, GL_ONE_MINUS_SRC_ALPHA). Navíc tímhle způsobem můžeš kombinovat i aditivní blending do jednoho, stačí jenom upravit vstupní texturu.
(já sám ale stejně používám všude klasický alpha blending
EDIT: když o tom tak přemýším, tak mi není úplně jasné, jak moc jde pak dohromady premult. alpha s sRGB, asi by se musela ještě udělat gamma korekce v premult kroku |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. říjen 2018, 11:42:01 Předmět: |
|
|
Nikdy sem s klasickým blendingem problémy neměl, protože nejsem prase a kontury si hlídám :-).
Jak teda ale v MonoGame importujou specilální textury, řekněme třeba RGB normála + Alfa specular? Nebo cokoliv podobnýho, kde v žádným případě nelze barvu alfou násobit. Zatim sem nenašel způsob, jak importovat RGBA bez premultiply alfa :-/. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 24. říjen 2018, 11:48:51 Předmět: |
|
|
]semo[ napsal: |
Nikdy sem s klasickým blendingem problémy neměl, protože nejsem prase a kontury si hlídám .
Jak teda ale v MonoGame importujou specilální textury, řekněme třeba RGB normála + Alfa specular? Nebo cokoliv podobnýho, kde v žádným případě nelze barvu alfou násobit. Zatim sem nenašel způsob, jak importovat RGBA bez premultiply alfa :-/. |
Jasně, premult. alfa má smysl jenom v případě, že rgb reprezentuje barvu a alfa průhlednost.
S MonoGame jsem nikdy nedělal, ani v C# (mimochodem jak se takový hardcore C++ programátor jako ty dostal k MonoGame? |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. říjen 2018, 12:06:00 Předmět: |
|
|
No, jak sem se k tomu dostal....
Občas jsem C# používal na prototypy. A pak tu taky byla ta moje životní epizoda s Unity3D. I když jsem v tom pár komerčních projektů udělal, znovu bych to asi zažít nechtěl :-). Ale c sharp jako takový mi špatný nepřipadá. Je dobrý, že nahodíš IDE, dáš nový projekt a hned píšeš. To u C++ většinou tak snadno nejde. Než nalinkuješ knihovny, než se zbavíš precompiled headerů a podobných ptákovin...tak to trvá. Proto jsem si na malou hru vybral C# - chtěl sem to mít zkrátka rychle rozjetý :-). Na větší projekty a práci samozřejmě C++. Takže C# je celkem ok. Na druhou stranu, občas kroutím hlavou, jak je chudej. I ty kontejnery, algoritmy...všechno je to takový dětský. (Případné proti-argumenty beru jen od těch, kteří znají C++11 a vejš a STL). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 25. říjen 2018, 09:23:17 Předmět: |
|
|
Tak problém s alfou je vyřešen. Myslel sem, že se používá na premultiplied alfa stejný nastavení blendingu. Ale neni to tak. V MonoGame na to mají BlendState.NotPremultiplied :-). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
satik
Založen: 06. 05. 2010 Příspěvky: 161 Bydliště: Krkonose
|
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 25. říjen 2018, 15:43:08 Předmět: |
|
|
....a jedém! C# vs C++ :-)
Linq..moc neznám (tak to následující ber spíš jako srandu). Připadá mi to, že Linq funguje nějak takhle: potřebuješ nějakou hodnotu, tak to napíšeš na svitek, ten zastrčíš do flašky, tu vystřelíš raketou do vesmíru, pak až spadne zase dolů, do moře, tak ji tam najde námořník, vyndá svitek, doručí ho na poštu na Novým Zélandu a odtud mi pak tu hodnotu pošlou (aniž bych věděl, co všechno ten svitek zažil :) ). Ale jen mi to tak připadá :-).
Mě by pro začátek stačilo, kdyby místo linq byl resize na vectoru (v C# List), Tuple, u kterýho jdou měnit hodnoty, ...a podobně. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
satik
Založen: 06. 05. 2010 Příspěvky: 161 Bydliště: Krkonose
|
Zaslal: 26. říjen 2018, 09:57:27 Předmět: |
|
|
Takhle jsem se taky na LINQ zezacatku dival, ted uz ho pouzivam rad, veci co bys jinak psal na nekolik radku tady muzes napsat na podstatne min
Tuple je immutable, pokud ho chces menit, tak si napsat tridu nebo pouzit anonymni typy jako tuple
Nebo podle pouziti i treba Dictionary, pokud bys chtel jen dve hodnoty a chtel menit jen druhou
Pokud ti staci Reserve, tak to c# umi jako capacity nebo v konstruktoru, jestli opravdu myslis Resize (ze ti to doplni poctem defaultnich hodnot) tak to nejak jednoduse jednim prikazem nejde, ale da se to treba pres linq, treba pres AddRange a Enumerable.Repeat
_________________ https://www.facebook.com/peasantsandcastles/ |
|
Návrat nahoru |
|
|
|