Функция mix
работает с типами смешивания.
Нет. Смешивание и функция glsl mix
- это совершенно разные вещи.
Функция mix(x, y, a)
всегда вычисляет x * (1−a) + y * a
.
Смешивание берет цветовые выходные фрагменты из шейдера фрагмента и объединяет их с цветами в цветовом буфере буфера кадров.
Если вы хотите использовать Смешивание , тогда вам нужно
- нарисовать геометрию с первой текстурой
- активировать смешивание
- Нарисуйте геометрию со второй текстурой
Если вы просто хотите смешать текстуры в фрагментном шейдере, то вы должны использовать арифметику glsl. См. Программирование GLSL / Векторные и матричные операции
* 1 034 *, например
vec4 MyBlend(vec4 source, vec4 dest, float alpha)
{
return source * alpha + dest * (1.0-alpha);
}
void main()
{
vec4 c1 = texture(texture1, TexCoord);
vec4 c2 = texture(texturecubeMap, ransformedR);
float f = MixValueVariables.CubeMapValue
FragColor = MyBlend(c1, c2, f) * vec4(result, material.opacity / 100.0);
}
Адаптируйте функцию MyBlend
к вашим потребностям.