En este tutorial se empiezan a complicar las cosas... Cambiaremos los valores alpha de los objetos usando un instrumento de control. Esto significa que tendremos un instrumento que no producirá un resultado visible sino que generará una variable global a la que todos los demás instrumentos tendrán acceso. Cuando se quieren modificar simultaneamente varios instrumentos es necesario usar una variable global que puede ser controlada por un 'instrumento de control'. Los instrumentos de control deben tener siempre un número menor que los instrumentos que serán controlados. Esto es debido al orden en que csound procesa los instrumentos.
Cuando se usan valores alpha, un nuevo concepto llamado 'mezcla alpha' o 'alpha' blending' se debe explicar. El alpha blending es el proceso de mezclar colores según los valores alpha de la fuente (SRC) y del destino (DST). El objeto fuente es el creado más tarde en la cadena gráfica, ya sea porque pertence a un grupo con valor GLinsert mayor o porque está creado más tarde. El color final de cada pixel se define como:
C = Csrc * F src + Cdst * Fdst
Donde C es el color original y F se refiere a la función de mezcla (blending function) usada. Por ejemplo cuando:
glBlendFunc $GL_SRC_ALPHA,$GL_ONE_MINUS_SRC_ALPHA
La función usada será:
C = Csrc * α src + Cdst * (1- αsrc)
En este caso el color del objeto de adelante (SRC) se multiplicar por su propio valor alpha, y el color del objeto de destino se multiplica por (1 menos el alpha del objeto fuente). Así que veremos más del objeto trasero cuando el alpha del objeto fuente es menor. Puede pensarse el alpha como el valor de transparencia, siendo 1 totalmente opaco y 0 totalmente transparente.
Entender esto puede ser algo complicado así que lo mejor es experimentar bastante, con este y otros programas.
<CsoundSynthesizer> <CsOptions> -+Y </CsOptions> <CsInstruments>
$GL_SRC_ALPHA |
---|
$GL_ONE_MINUS_SRC_ALPHA |
$GL_DST_ALPHA |
$GL_ONE_MINUS_DST_ALPHA |
$GL_ONE |
$GL_ZERO |