Цитата:
Сообщение от VisualDima
Но меня смущает лишняя операция деления в шейдере. Не привык я разбрасываться ресурсами системы.
|
Совершенно с тобой согласен. И кстати, файл таки без premultipled… странно все это.
Добавлено через 2 минуты
Партизан, не решает, потому что в данном случае совершенно идентично — SOURCE_ALPHA же у нас ноль, значит ONE_MINUS_SOURCE_ALPHA и так ONE.
Добавлено через 25 минут
Итак,
вот что вычитал уважаемый
Волгоградец (автор сайта, который указан выше).
Цитата:
Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета.
…
Все методы BitmapData принимают и возвращают неумноженные значения.
|
Таким образом любое изображение, которое вставляется во Flash (будь то элемент из библиотеки в IDE или изображение, вставленное с помощью тега embed), превращаясь в BitmapData сразу же подлежит предварительному умножению. Таки да. Произвол. Понятно, зачем это сделано, но нам пофиг!
Как видно, никакими getPixel32/setPixel32 ты это не исправишь. Остается лишь пробежаться по содержимому BitmapData как по ByteArray и переделить все RGB на A. И лишь после этого можно отгружать текстуру в GPU.
Однако наш коллега комментирует это так:
– можно переделить, но одно деление в шейдере — это ничто, наносекунды, даже меньше, даже на отстойных телефонах;
P.S.
И да, ты был прав, Flash таки мутит свои дела, оправдывая это вероломство какими-то нелепыми отмазками типа ускорения отрисовки сцены, пфф!