OpenFL/HTML5 Применение шейдера к растровому изображению
Я пытаюсь применить шейдер к растровому изображению, как описано в этой ссылке.
Это код:
var shader = new Shader ();
shader.glFragmentSource = "..."; <- this part is not important
shader.data.useAlphaImage = [ true ];
shader.data.uAlphaImage.input = alphaBitmapData;
bitmap.filters = [ new ShaderFilter (shader) ];
Но если я применяю шейдер, он становится прозрачным, без ошибок. Нужно ли что-то настраивать, чтобы это работало?
Я ориентируюсь на HTML5.
1 ответ
Решение
ShaderFilter
частично отключен в текущих выпусках OpenFL. Первоначальная реализация была слишком медленной, чтобы работать на мобильных устройствах; Есть планы вернуться к этой функции, написанной по-другому.
Между тем, есть бета-версия API, которую вы можете попробовать:
bitmap.shader = shader;
Также имейте в виду, что OpenFL использует предварительно умноженную альфу, поэтому имейте это в виду в своем шейдере, когда дело доходит до альфа-значений. Это должно быть представлено в коде шейдера по умолчанию.