2015-05-03 3 views
2

У меня вопрос об обработке альфы для покрытия. Значение Coverage указывает, какие образцы пикселей покрываются примитивом. с альфой до покрытия, мы и значение альфа с значением покрытия пикселя для определения конечного покрытия. Теперь Superbible указывает, что «если 66% пикселя покрыто примитивным, а альфа-значение - 40%, то итоговое значение покрытия будет 60 x 40%, что составляет 25%, а для 8 выборочных буферов будет покрыто 2 образца». Но как это работает на уровне выборки? и как он определяет, какие образцы покрывать из 8?Работа альфы до покрытия

Если покрытие является полем бит для каждого образца, то как выполняется операция И для каждого образца?

+0

Я думаю, что и в этом случае просто как выразить 0..1 умножение: 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1 Это то же самое, что и побитовая таблица истинности. – starmole

+0

@starmole Хорошо, если у нас есть два образца с битами 1 и 2 выборки с 0, то в соответствии с вами, если значение альфа составляет 50%, окончательное покрытие должно составлять 25% с одним охватом образца, то в этом случае, какой образец будет вам устранить и почему? – debonair

ответ

2

Но как это работает на уровне образца.? и как он определяет, какие образцы покрывать из 8?

Это полностью зависит от реализации. Если aplha равно 0,5, то GL_SAMPLE_ALPHA_TO_COVERAGE просто создаст покрытие маска с половиной доступных битов (подумайте о сглаживании).

Что спецификации GL фактически требует только (раздел 17.3.3 со ссылкой на GL 4.5 core profile spec.):

Нет конкретного алгоритма не требуется для преобразования образца альфа значения к значению временного покрытия. Предполагается, что число 1 во временном покрытии будет пропорционально набору значений α для фрагмента, при этом все 1 соответствуют максимуму всех значений альфа, а все 0 соответствуют всем альфа-значениям 0 . Альфа-значения, используемые для создания значения покрытия, зажимаются до диапазона [0; 1]. Предполагается также, что алгоритм должен быть псевдослучайным по своей природе, чтобы избежать артефактов изображения из-за регулярных местоположений выборки покрытия . Алгоритм может и, вероятно, должен быть разных в разных местоположениях пикселей. Если он отличается, он должен быть определен по отношению к окну, а не экрану, координатам, так что результаты рендеринга инвариантны относительно положения окна.

Вы следующий вопрос, то очень просто ответить:

если охват является битовым полем для каждого образца, то как же и операция выполняется для каждого образца?

Операция И применяется к маске временного покрытия, созданной GL_SAMPLE_ALPHA_TO_COVERAGE, и маске покрытия фрагментов, созданной образцами покрытия.

+0

Вы объясните свой первый бит?То, о чем вы упоминали в своем втором пункте, я уже знаю, что я хочу знать, как он работает на битах уровня образца. – debonair

+0

Нет, я не могу. Потому что это то, что связано с реализацией. Спецификация GL не дает никаких конкретных требований. Я обновил свой ответ, чтобы процитировать спецификацию. – derhass

Смежные вопросы