|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2009
Сообщений: 26
|
Партизан, для данного шейдера ты прав! (И насчет перевернутого изображения, да, так и должно быть, мой косяк, перепутал немного координаты)
Я использую более сложный шейдер, чем в демке. Текстура умножается на цвет вертекса либо на другую текстуру (с использованием альфы), и тут, увы, уже так просто не прокатит. НО! Можно внести в шейдер дополнение - умножение финального цвета на альфу. К сожалению, это увеличит шейдер . Правда, качество будет наверно выше, чем в другом решении (с делением на альфу). Добавлено через 3 минуты Попробовал использовать ATF текстуры, а не png. Первые результаты вселяют надежду. На PC - сжатые текстуры перегоняются в GPU без всяких глупостей вроде premultiplied alpha. Но надо еще поэсперементировать со всеми форматами. Добавлено через 51 час 14 минут Итак, резюмирую. Было найдено три варианта решения: 1. Вариант от Волгоградца http://volgogradetzzz.blogspot.de/20...ied-alpha.html, ссылку на который предоставил Zebestov: Добавить в шейдер деление на альфу. Плюс: + Просто и элегантно. Минусы: - Лишняя операция в шейдере. - По арифметическим причинам возможны небольшие отклонения в цветопередаче. - При рендеринге без блендинга, но с альфа-отсечением, черный ободок всетаки может иногда проявляться. 2. Вариант на основе предложения Партизана: Вместо Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA Использовать Context3DBlendFactor.ONE, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA. И доработать шейдер в зависимости от дополнительных нужд (если, например, нужен еще цвет вершины, то добавить операцию умножения результирующего цвета на альфу вершины) Плюсы и минусы примерно как в предыдущем варианте. 3. Использовать ATF-текстуры. Я проверил разные варианты сжатые/несжатые, PC/Android. Все текстуры загружаются в GPU в исходном, неизмененном виде. Плюс: + Всю наконец работает так, как и должно. + Можно не менять шейдеры + Автоматом доступна возможность использовать сжатые (на уровне GPU) текстуры (dxt1/5). Минусы: - Инструментарий для работы с ATF весьма скуден и не особо функционален. - Если есть необходимость сочетать в рамках одного движка сжатые/несжатые, с альфой/без альфы текстуры, надо пердусматривать отдельные шейдеры для разных видов текстур. Лично для себя выбрал 3-й вариант. Правда, из-за желания зарезервировать возможность сочетать в одном рендеренге сжатые и несжатые текстуры и текстуры с альфой/без альфы, количество шейдеров возросло с 4-х до 30-ти. Но это вроде не страшно. |
Часовой пояс GMT +4, время: 18:23. |
|
« Предыдущая тема | Следующая тема » |
Теги |
blending , Stage3d , texture |
|
|