|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Lorem ipsum
|
…и это странно
__________________
Поймай яблоко 2! |
|
|||||
на самом деле не очень... В первом случае от единицы отнимается значение альфа-канала и потом умножается на альфа-канал. Т.е. если изначально альфа 0.5, то 0.5*0.5=0,25 на выходе.
Во втором случае там единица и соответственно 0.5*1 = 0.5 на выходе. |
|
|||||
Lorem ipsum
|
Мне казалось, что вычитаться должна альфа источника, а она у нас ноль, так что в обоих случаях будет 0.5
__________________
Поймай яблоко 2! |
|
|||||
При альфа=0 ноль и получится. Как и видно на картинке автора. А на полупрозрачности поведение как я описал выше.
|
|
|||||
Регистрация: May 2009
Сообщений: 26
|
Партизан, к сожалению, это уже будет другой тип блендинга (Add). Для белых объектов он действительно работает, но если вместо этого кружка взять что-нибудь цветастое, получится уже совсем другая картина (через объект будет просвечивать фон). А мне нужен имено обычный альфа-блендинг.
|
|
|||||
Ничего странного. Это работает только по-случайности. Будь бэкграундом другой цвет, все было бы иначе.
Например, конечный цвет вычисляется так: Возьмем цвет [1, 1, 1, 0.5]. Во флэше он будет храниться как [0.5, 0.5, 0.5, 0.5]. В случае с context3D.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA); ONE_MINUS_SOURCE_ALPHA = 1 - 0.5 = 0.5 Бекграунд возьмем [0, 0, 1] Итого получаем [0.5, 0.5, 0.5] * 0.5 + [0, 0, 1] * 0.5 = [0.25, 0.25, 0.25] + [0, 0, 0.5] = [0.25, 0.25, 0.75]. Если мы поделим в шейдере цвет на альфу, то получим Т.е. цвет не потеряли. Если же не делить в шейдере и взять то получим [0.5, 0.5, 0.5] * 0.5 + [0, 0, 1] * 1 = [0.25, 0.25, 0.25] + [0, 0, 1] = [0.25, 0.25, 1.25], Но если взять другой цвет ([0, 0, 1, 0.5]) и другой бэкграунд ([1, 1, 1]), то получим что округлится до [1, 1, 1], т.е. мы потеряем цвет. Upd: пока писал, уже ответили )
__________________
http://volgogradetzzz.blogspot.ru/ |
|
|||||
Lorem ipsum
|
Цитата:
Добавлено через 1 минуту Ох мы навалились =) ну тема действительно такая, что может немножечко зарябить в глазах.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: May 2009
Сообщений: 26
|
Партизан. Я на цветную картинку заменил исходник, чтобы продемонстрировать:
Правая картинка получилась с использованием Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE Как видишь, цвет фона влияет складывается со всем изображением. (если бы там было что-то нарисовано, то оно бы прямо просвечивало) А я хочу добиться, чтобы получилась как нижняя картинка. |
|
|||||
Lorem ipsum
|
Если кратко, то твой "хак" работает только с прозрачным фоном.
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 15:19. |
|
« Предыдущая тема | Следующая тема » |
Теги |
blending , Stage3d , texture |
|
|