Чтобы выполнять рендеринг изображений более реалистично, требуется разработать способы избежания алиасинга на компьютерном экране.

4.2. Избежание алиасинга Один из способов добиться хорошего качества изображения без алиасинга - избегать ситуаций, при которых алиасинг возникает.

Например, если известно, что какой-либо объект в окончательном изображении всегда будет одного и того же размера, можно создать шейдер, который будет хорошо рисовать объект именно этого размера. Такой способ был описан ранее в этой книге при демонстрации некоторых шейдеров. Функции smoothstep, mix и cl amp особенно полезны, так как позволяют избавиться от резких переходов и помогают показывать процедурную текстуру корректно при любом масштабе.

Алиасинг зачастую возникает, если рендеринг объекта выполняется для разных его размеров. Множественные текстуры придумали именно для этого, и нечто подобное можно сделать и в шейдерах. Если точно известно, что на изображении объект будет появляться с разными размерами, можно создать отдельный шейдер

Сглаживание процедурных текстур

для каждого размера. Каждый из этих шейдеров будет рисовать объект с правильным уровнем детализации, что позволит избежать алиасинга. Чтобы этот способ работал, приложение должно знать приблизительный размер объекта еще до начала рисования и в соответствии с этим устанавливать нужный шейдер. Даже если размеры объекта на анимации плавно увеличиваются или уменьшаются, некоторые погрешности при смене уровня детализации все равно возникнут.

В некоторых случаях алиасинга можно избежать, используя текстуру вместо процедурных вычислений (см. главу 11). Это позволяет использовать возможности антиалиасинга, заложенные в текстурные аппаратные модули.

14.3. Увеличение разрешения Эффект алиасинга можно уменьшить с помощью довольно грубого метода, называемого супердискретизацией, при котором анализируются несколько значений цвета для каждой ячейки наложенной сетки (пиксела), а потом выбирается среднее значение. Метод используется в современных графических ускорителях в буфере мультисемплинга. Этот метод сглаживания заменяет семплинг одной точки сем-плингом нескольких, поэтому некоторый алиасинг все равно остается, но он намного менее заметен. В принципе, если шейдеры используются совместно с буфером мультисемплинга, то оставшийся небольшой алиасинг можно игнорировать.


⇐ Предыдущая| |Следующая ⇒