Tryby mieszania w Cocos2D z glBlendFunc

9

Próbowaliśmy replikować najpopularniejsze tryby mieszania dostępne w Photoshopie i Quartz 2D, ale wymyśliliśmy tylko 3, a to po długich poszukiwaniach online.

Dla wszystkich zainteresowanych są to:

  • Pomnóż = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Screen = GL_MINUS_DST_COLOR, GL_ONE
  • Unikanie liniowe = GL_ONE, GL_ONE

Możesz wypróbować te i inne tryby w akcji online, na tej bardzo przydatnej stronie internetowej: http://www.andersriggelsen.dk/glblendfunc.php

Bylibyśmy wdzięczni, gdyby ktokolwiek mógł zapewnić nam dodatkowe tryby mieszania, które możemy odtworzyć w Cocos2D, ponieważ nasze doświadczenie Open GL jest naprawdę bardzo ograniczone.

Z góry dziękuję!

Argiris

Argiris
źródło
1
Linear Dodge (Add) = GL_ONE, GL_ONE czy zachowuje się to tak samo jak na andersriggelsen.dk/glblendfunc.php i photoshopie? sprawia, że ​​duszki są przezroczyste? nie działa dla mnie
Rakka Rage

Odpowiedzi:

4

Zła wiadomość jest taka, że ​​nie można zaimplementować wszystkich trybów mieszania Photoshopa za pomocą glBlendFunc, mimo że istnieje wiele kombinacji, których można użyć.

Dobrą wiadomością jest to, że po przejściu na shadery pomarańczowa książka (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) zawiera rozdział z shaderem naśladujący mieszankę programu Photoshop tryby.

Na szczęście wszystko, czego prawdopodobnie będziesz potrzebować w świecie przed shaderem, to trzy najpopularniejsze tryby mieszania;

  • Dodaj: GL_ONE, GL_ONE
  • Mieszanka: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Pomnóż: różne, takie jak wspomniany: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

EDYCJA :

Powiązane (prawie zduplikowane) pytanie dotyczące stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Mieszające programy cieniujące Photoshop: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Jari Komppa
źródło