Modos de mezcla en Cocos2D con glBlendFunc

9

Hemos estado tratando de replicar los modos de fusión más comunes que están disponibles en Photoshop y Quartz 2D, pero solo hemos encontrado 3 y eso es después de una larga búsqueda en línea.

Para cualquier persona interesada, aquí están:

  • Multiplicar = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Pantalla = GL_MINUS_DST_COLOR, GL_ONE
  • Esquiva lineal = GL_ONE, GL_ONE

Puede probar estos y otros modos similares en acción en línea, en este sitio web muy útil: http://www.andersriggelsen.dk/glblendfunc.php

Ahora, agradeceríamos que alguien pudiera proporcionarnos modos de fusión adicionales que podamos recrear dentro de Cocos2D, ya que nuestra experiencia Open GL es muy, muy limitada.

¡Gracias de antemano!

Argiris

Argiris
fuente
1
Linear Dodge (Add) = GL_ONE, GL_ONE ¿esto se comporta para usted igual que en andersriggelsen.dk/glblendfunc.php y photoshop? hace que los sprites sean transparentes? no funciona para mí
Rakka Rage

Respuestas:

4

La mala noticia es que no puede implementar todos los modos de mezcla de Photoshop con glBlendFunc, aunque hay una gran cantidad de combinaciones que puede usar.

Una buena noticia es que, cuando te mueves a los sombreadores, el libro naranja (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) contiene un capítulo con sombreadores para emular la mezcla del photoshop modos.

Afortunadamente, todo lo que probablemente necesitarás en el mundo de pre-sombreado son los tres modos de mezcla más comunes;

  • Añadir: GL_ONE, GL_ONE
  • Mezcla: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Multiplicar: varios, como el que mencionó: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

EDITAR :

Pregunta relacionada (casi duplicada) sobre stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Sombreadores de fusión de Photoshop: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Jari Komppa
fuente