вторник, 17 ноября 2009 г.

Ray-Tracing Super Sampling

После поисков в Гугле решил пока оставить процедурное сглаживание и реализовал SSAA. Идея проста: Сначала делается стандартный 1x проход, в дополнительный буфер пишутся ID треугольников. Потом запускается kernel 3x3 и пиксели с различными ID маскируются в стенсель-буфере. Затем запускается "тяжёлый" шейдер, который выпускает несколько лучей в одном пикселе по заданному паттерну смещений. Стенсель тест реджектит выполнение этого шейдера вне маски. Полученный результат усредняется и записывается в буфер кадра. Примеры:

Aliased render:

Edge mask detection:

Ordered grid 4x:

Rotated grid 4x:

Optimal N-rook 8x:

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

Комментариев нет:

Отправить комментарий