Буду скидывать сюда разную информацию, почерпнутую в ходе работы и ползания по сети.
Да, в мире происходит всякое разное. Будем считать, что я защищаюсь от этого работой.
Так вот, есть такая программа POV-Ray. Она используется для отрисовки трехмерных сцен по сценариям. Мой основной use case - генерация трехмерных картинок кристаллических структур. Потому что красивую рисуночную графику можно нарисовать разными способами (обычно через формат EPS, справляются программы OLEX2 и XP), а красивый трехмер они не особенно выдают. Но OLEX2 умеет генерировать сцены в POV-Ray.
Там поддерживается и прозрачность, и отражаемость, и все-все-все, но проблема возникает, когда хочешь нарисовать картинку для презентации: выглядят они грязновато. Дело в том, что алгоритм reverse ray tracing следует принципу "один пиксель - один луч", что плохо работает, когда в картинке есть детали меньше пиксела. Простой путь - нарисовать картинку раза в 4 больше нужного и ужать редактором фото, но это дает непонятное размытие. Можно ли обойтись без такой процедуры? Оказывается, да, но нужно читать доки. Бороться с проблемой должен алгоритм anti-aliasing, но то, что предлагается в файле quickres.ini, поставляющемся с POV-Ray - это очень простой метод, который работает даже хуже, чем перегенерирование большой картинки и ужимание. Совсем другое дело - рекурсивный алгоритм Sampling_Method=2. Картинки, которые получаются с ним, хороши сразу в целевом разрешении. Рекурсивный алгоритм позволяет рендерить на один целевой пиксель до 4225 субпикселей (на уровне 6), и это правда хорошо работает. Почему он не стоит по умолчанию?
Сравните сами (рендеринг стандартной сцены woodbox).
Дефолтный 640*480, AA 0.3
Настройки рендеринга:
[640x480, AA 0.3]
Width=640
Height=480
Antialias=On
Antialias_Threshold=0.3
А теперь алгоритм AA2:
[640x480, AA2 0.3]
Width=640
Height=480
Antialias=On
Antialias_Threshold=0.3
Sampling_Method=2
Antialias_Depth=6
Внимание на желтый шарик в ящике и переднюю стенку. После 6-го уровня Antialias_Depth я уже улучшений не вижу.
И ведь со структурами так же :)