Показать сообщение отдельно
Старый 17.11.2014, 17:08
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 8  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от 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 таки мутит свои дела, оправдывая это вероломство какими-то нелепыми отмазками типа ускорения отрисовки сцены, пфф!
__________________
Поймай яблоко 2!


Последний раз редактировалось Zebestov; 17.11.2014 в 17:37.