не нужна
Как по мне - премультиплайт как раз чаще нужен при семплинге. И я до сих пор не понимаю, почему его прямо в семплер не добавили
цвет и альфа фильтруются отдельно. Представь, что у тебя в текстурах используется ядрёный color key для обозначения прозрачности, ты будешь читать текстуры и выставлять им нулевую альфу в этих местах и всё будет прекрасно работать при nearest (point) семплинге. Но включив билинейную фильтрацию текстур, ты заметишь что на границах альфа-канала цвет интерполируется в ядрёный color key. Premultiplied alpha решает эту проблему. Другой проблемой являются системы частиц. Представь, что у тебя есть эффект огня в котором для пламени используется аддитивный, а для дыма обычный альфа-блендинг. После сортировки частиц по расстоянию до камеры, ты наверняка захочешь отрисовать их за один вызов, но так не выйдет, т.к. между пачками частиц с разным типом смешивания тебе придётся его переключать, В худшем случае у тебя окажется столько же вызовов отрисовки, сколько частиц в твоём костре. Процессор будет страдать, а игроки посылать тебе лучи поноса. Тут тебе на помощь опять приходит premultiplied alpha! Управляя возвращаемым значением альфа-канала в шейдере ты можешь переключаться между аддитивным и альфа-блендингом и все твои частицы будут рисовать за один вызов.
Обсуждают сегодня