Полный антиалиасинг
Суперсэмплинг - наиболее популярный метод, применяемый в 3D-ускорителях (прежде всего из-за своей простоты). Каждый пиксел состоит из субпикселов, для каждого вычисляется цвет, а затем усреднением получается цвет пиксела. Конкретное представление пиксела называется субпиксельной маской (к примеру 2x2, 4x4). Чем больше субпикселов отводится на каждый пиксел, тем качественнее получается антиалиасинг. Маска 4x4 считается оптимальной с точки зрения качества, но при этом скорость заполнения снижается в 16 раз. С другой стороны, более простая маска обеспечивает более высокую скорость, но и менее качественное изображение. В любом случае суперсэмплинг снижает алиасинг, но кардинально не решает проблему.
Теоретически при суперсэмплинге субпиксельная маска может быть любой (к примеру при стохастическом суперсэмплинге субпикселы расположены в псевдо-случайном порядке). В 3D-ускорителях применяется регулярная маска размером от 2x1 до 4x4. Окончательный цвет пиксела вычисляется усреднением либо на основе весов, либо без них. К примеру для маски 3x3 центральный субпиксел должен иметь больший вес, чем угловые субпикселы, поэтому усреднение на основе весов имеет лучший результат.
Существует несколько реализаций суперсэмплинга:
· Выполняется рендеринг в большем разрешении, затем выполняется масштабирование до реального разрешения. Например при разрешении 800x600 и субпиксельной маске 2x2 рендеринг выполняется при виртуальном разрешении 1600x1200. Это требует вчетверо большего объема памяти. Эта методика стала стандартной в игровых 3D-ускорителях.
· Фреймбуфер делится на фрагменты (tiles). Каждый фрагмент рендерится в большем разрешении, соответствующему субпиксельной маске, а затем масштабируется до меньшего разрешения.
· Рендеринг выполняется в несколько проходов (для маски 2x2 - в 4 прохода). Каждый раз все координаты смещаются на некоторую дельту. Промежуточный результат хранится в буфере-акумуляторе, и результат каждого прохода суммируется с ним. Преимущество метода - нетребовательность к объему памяти (даже для маски 4x4 требуется объем памяти, как при обычном рендеринге без антиалиасинга). Метод применялся в некоторых профессиональных OpenGL-ускорителях.
Дата добавления: 2016-04-14; просмотров: 685;