пятница, 30 октября 2015 г.

simple adaptive antialias pass

  1. просмотреть все соседние пикселы(если 0 по х, сравнить с пикселом сверху)
  2. сравнение пикселов
    • по каждой из x, y, z получить коэффициент отличия = min(x1,x2)/max(x1,x2)
    • если этот коэффициент > константы макс. отличия(0.3 например), то установить флаг необходимости антиалиазинга и прервать цикл по x, y, z
    • расчет точек углов, в которых затем усредняется делением на 4 получившиеся цвета в субпикселах, Java:
      float xScale = scene.viewWidth  / width;
      float yScale = scene.viewHeight / height;
      float left  = (x - 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * xScale; //(0.8 .. 1.1)/4 = 0.2 .. 0.275
      float right = (x + 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * xScale;
      float above = (y - 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * yScale;
      float below = (y + 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * yScale;

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

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