Самоучитель по 3dsmax 7

         

Субпиксельная точность


РАЗНОЕ
7.1. Субпиксельная точность

Субпиксельная точность означает следующее: только те пикселы, центры которых лежат внутри данного многоугольника, должны быть нарисованы. На самом деле, в этом определении можно использовать любую (зафиксированную) точку внутри пиксела, единственным последствием этого будет сдвиг всего экрана меньше, чем на 0.5 пиксела.

Необходимость в субпиксельной точности появляется только из-за того, что дисплеи дискретны, состоят из пикселов. Чем меньше становятся пикселы (то есть, чем выше разрешение), тем меньше важна эта точность. Однако разницу можно почувствовать даже на разрешениях порядка 1280x1024, а тем более при обычных для 3D engine 320x200 или 640x480.

Реализовать субпиксельную точность на редкость просто. Представьте себе, что мы рисуем грань. Обычно мы начинаем рисовать ее с какого-то нецелого start_y, так как при преобразованиях (например, проецировании) у нас получаются вовсе не целые числа. Обычно их просто округляют. В результате типичная процедура рисования треугольника, которая начинает отрисовку с самой верхней точки A и идет вниз по строкам, на каждой строке пересчитывая координаты начала и конца рисуемого отрезка как sx_start += dx_start; sx_end += dx_end;

теряет субпиксельную точность из-за этого самого округления, так как sx_start инициализируется как A.sx, A.sx соотвествует линии y = A.sy, а рисовать мы начинаем с какого-то округленного значения.



Содержание раздела