StaticZ пишет:
PS Кстати можете просветите мамонта по поводу того что изменилось в 3х мерной графике последнего поколения? Если раньше 3D сцена резала глаз мало полигональностью, размытыми текстурами за счет их малого разрешения, но при этом радовала ровными четкими линиями при любых разрешениях, то теперь от малейшего поворота камеры линии мерцают, лишь новомодные алгоритмы сглаживания вроде FXAA, MSAA, CSAA позволяют хоть как-то избавиться от этого явления.
Основная причина -- большое количество деталей сцены размером меньше пиксела, распространение спекуляра и расширенного диапазона освещения (который hdr). Вот пример: есть участок поверхности с бликами и тёмными частями, например поверхность воды, которая далеко от камеры. В размер пиксела входит несколько участков с бликами и тёмных, но пиксел может быть только одного цвета, и по честному нужно взять усреднённых цвет всего попадающего в пиксел изображения, но реально просто берётся та часть которая приходится на центр пиксела. И если камера движется, туда будет попадать то блик то тёмная часть и пиксел будет мерцать туда-сюда. А сильный спекуляр и hdr только усиливают этот эффект. На самом деле проблема для текстур возникла давно, ещё в 90х и решение было найдено в виде mip-mapping'а и фильтрации текстур. Например mip-mapping нужен чтобы подогнать разрешение текстуры под разрешение участка экрана, куда она выводится. А анизотропный фильтр помогает делать выборку текстур для поверхностей под острым углом к камере -- вдоль проекции делается выборка довольно большого количества текселей и усредняется их результат. Для обычных диффузных текстур этого было достаточно. Но затем появился спекуляр-бамп мэппинг с очень детальным рельефом, всякие мелкие детали геометрии, например листья, тонкие провода и т.п. Поэтому стали использовать мультивыборку. Например SSAA или MSAA (не путать с SMAA) -- первый это фактически рендеринг всего изображения в более высокое разрешение, а затем уменьшение его до разрешений экрана с усреднением цвета соседних пикселей, таким образом те детали которые раньше были меньше пикселя, теперь становятся больше чем субпиксели и более корректно усредняются при переходе к экранному разрешению. А второе (MSAA) -- там сначала детектируются области экрана содержащие грани геометрии (их силуэты) и мультивыборка происходит только в этих местах, а не по всему изображению. Это обычно сильно быстрее, но будут обрабатываться только лесенки геометрии (antialiasing), а например бликующие поверхности или листва (которая рисуется альфа-блендингом) -- нет. Для альфа-блендинга обычно делают свои алгоритмы сглаживания, отдельные. Но в последнее время также используют морфологическое сглаживание (FXAA, SMAA, MLAA, Temporal SMAA и т.п. -- разновидностей много). Их особенность в том что они обрабатывают уже отрендеренное 2д изображение. А значит их можно добавить к любой игре, не влезая в её внутренности. Обычно даже в настройках драйвера можно включить, а сама игра может и не поддерживать его. Короче удобная встраиваемая штука. Но недостаток в том что субпиксели ей недоступны, а значит обработка деталей меньше пикселей лучше не станет. Взамен такое сглаживание просто чуть-чуть замыливает изображение чтобы яркий пиксель не сильно выделялся на фоне остальных. Но всё-равно например наблюдается известный эффект "разрыва проводов". Для проводов и других тонких вещей иногда даже отдельный шейдер делают. Морфологические алгоритмы как правило очень быстрые. Короче у каждого алгоритма сглаживания есть свои преимущества и недостатки. Поэтому их комбинируют. Например в GTA5 используется MSAA и FXAA вместе, первый хорошо помогает в отрисовки мелкой листвы, травы, а второй хорошо справляется с силуэтами, отражениями. Temporal SMAA помогает улучшать плавность движения объектов. То есть когда объект переходит из одного пиксела в следующий, то следующий не сразу принимает цвет объекта, а постепенно, по мере того как объект преодолевает расстояние между пикселами. Например это повышает реалистичность колыхания мелкой листвы. Ну SSAA это решение в лоб, оно лучше всего сглаживает, но например считай что качество 2x провалит fps в два раза, 4x -- в четыре и т. д. Однако же например в Tomb Rider 2013, Metro 2033 (Last Light) Redux только такие режимы сглаживания и есть. Так или иначе все режимы сглаживания сейчас пишутся вручную на шейдерах, потому что те что в стандартном T&L более не совместимы с deferred shading'ом, который повсеместно сейчас в любой игре.
StaticZ пишет:
Не понял.
Ну вот на видеокартах быстрая память (в 10 раз быстрее в среднем) и доступ к ней тоже значительно быстрее. На cpu много уровней: системная память, потом кеш L3, L2, L1 и обычно там несколько сотен тактов процессора надо, чтобы первые байты дошли из памяти в регистры процессора. За это время уже можно десять раз матрицы перемножить.
Таким образом видеокарте очень легко нарисовать один большой треугольник на весь экран и быстро его заполнить цветом. А вот используя системную память сам факт заполнения больших участков буфера цветом уже проблематичен. Поэтому раз заполняется всёравно медленно, можно за это время посчитать полигоны и воспользоваться этой возможностью чтобы рисовать плавные рельефы. Одним словом увеличение количества полигонов, если они рисуются на ту же площадь изображения, не сильно замедлят рендеринг, как это было бы в случае с видеокартой.